Subversion Repositories SmartDukaan

Rev

Rev 637 | Blame | Last modification | View Log | RSS feed

package in.shop2020.serving.controllers;

import in.shop2020.model.v1.user.Address;
import in.shop2020.model.v1.user.AddressType;
import in.shop2020.model.v1.user.User;
import in.shop2020.model.v1.user.UserContextService;
import in.shop2020.serving.controllers.BaseController;
import in.shop2020.serving.pages.PageContentKeys;
import in.shop2020.serving.pages.PageEnum;
import in.shop2020.serving.pages.PageManager;
import in.shop2020.thrift.clients.UserContextServiceClient;

import java.util.*;

import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;
import org.apache.thrift.TException;

@Results({
    @Result(name="redirect", type="redirectAction", 
                params = {"actionName" , "shipping"}),
    @Result(name="login", type="redirectAction", 
                params = {"actionName" , "login"})              
})
public class ShippingController extends BaseController implements ParameterAware{
        
        private static final long serialVersionUID = 1L;
        private static Log log = LogFactory.getLog(ShippingController.class);
        Map<String, String[]> reqparams = null;
        
        private PageManager pageManager = null;
        private long addressId = 0;
        private String errorMsg = "";
        
        public ShippingController(){
                super();
                pageManager = PageManager.getPageManager();     
        }
        
         // GET /shipping
         public String index() {
                if(!userinfo.isLoggedIn()){
                        setRedirectUrl();
                        return "login";
                }
        long userId = userinfo.getUserId();
        boolean isLoggedIn = userinfo.isLoggedIn();
        
        try {
                        UserContextService.Client userClient = (new UserContextServiceClient()).getClient();
                        long defaultAddressId = userClient.getDefaultAddressId(userId);
                        log.info("The default address id of this user is: " + defaultAddressId);
                        if(defaultAddressId > 0)
                                userClient.addAddressToCart(userinfo.getCartId(), defaultAddressId);
                        if(!userClient.validateCart(userinfo.getCartId()))
                                errorMsg = "Your cart has been updated.";
                        
                } catch (Exception e) {
                        // This exception can be ignored for showing the cart. Not so
                        // innocent when this occurs at the time of checkout or when the
                        // user is proceeding to pay.
                        e.printStackTrace();
                }
        
                
                htmlSnippets.put("SHIPPING_HEADER", pageLoader.getShippingHeaderHtml());
                htmlSnippets.put("SHIPPING_DETAILS", pageLoader.getShippingDetailsHtml(userinfo.getCartId(), errorMsg));
                
        return "index";
         }

        // POST /entity
        public String create(){
                UserContextServiceClient userContextServiceClient = null;
                in.shop2020.model.v1.user.UserContextService.Client userClient = null;
                
        String action = this.request.getParameter("action");
                if(action == null){
                        return "failure";
                }
                
                try {
                        userContextServiceClient = new UserContextServiceClient();
                        userClient = userContextServiceClient.getClient();
                        
                        if(action != null){
                                if(action.equals("add")){
                                        Address address = new Address();
                                        address.setName(this.request.getParameter("name"));
                                        address.setLine1(this.request.getParameter("line1"));
                                        address.setLine2(this.request.getParameter("line2"));
                                        address.setCity(this.request.getParameter("city"));
                                        address.setState(this.request.getParameter("state"));
                                        address.setPin(this.request.getParameter("pincode"));
                                        address.setPhone(this.request.getParameter("phone"));
                                        address.setCountry(this.request.getParameter("country"));
                                        address.setEnabled(true);
                                        address.setType(AddressType.HOME);
                                        long addressId = userClient.addAddressForUser(userinfo.getUserId(), address, false);
                                        userClient.addAddressToCart(userinfo.getCartId(), addressId);
                                        addActionMessage("Address added successfully.");
                                        return "redirect";
                                }
                                
                                if(action.equals("change")){
                                        long addressId = Long.parseLong(this.request.getParameter("addressid"));
                                        userClient.addAddressToCart(userinfo.getCartId(), addressId);
                                        return "success";
                                }
                        }
                } catch (Exception e) {
                        return "failure";
                }
                return null;
        }

        @Override
        public void setParameters(Map<String, String[]> reqmap) {
                log.info("setParameters:" + reqmap);
                
                this.reqparams = reqmap;
        }

        public String getShippingHeaderSnippet(){
                return htmlSnippets.get("SHIPPING_HEADER");
        }
        
        public String getShippingDetailsSnippet(){
                return htmlSnippets.get("SHIPPING_DETAILS");
        }
        
        public long getAddressId(){
                return this.addressId;
        }
        
        public String getErrorMsg(){
                return this.errorMsg;
        }
}