Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.serving.controllers;

import in.shop2020.model.v1.shoppingcart.ShoppingCartException;
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.serving.utils.Utils;
import in.shop2020.thrift.clients.ShoppingCartClient;
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;

public class CartController extends BaseController implements ParameterAware{
        
        private static final long serialVersionUID = 1L;
        private static Log log = LogFactory.getLog(CartController.class);
        Map<String, String[]> reqparams = null;
        
        private Map<String,String> htmlSnippets;
        private PageManager pageManager = null;
        
        public CartController(){
                super();
                pageManager = PageManager.getPageManager();     
        }
        
         // GET /cart
         public HttpHeaders index() {
        long userId = 0;
        boolean isSessionId = true;
                Map<PageContentKeys, String> params = new HashMap<PageContentKeys, String>();
                
                if(userinfo.isLoggedIn()){
                        userId = userinfo.getUserId();
                        isSessionId = false;
                }
                else{
                        userId = userinfo.getSessionId();
                        isSessionId = true;
                }
                
                params.put(PageContentKeys.CUSTOMER_ID, userId+"");
                params.put(PageContentKeys.IS_SESSION_ID, isSessionId+"");
                params.put(PageContentKeys.CART_ID, userinfo.getCartId()+"");
                
                params.put(PageContentKeys.ITEM_COUNT, userinfo.getTotalItems()+"");
                params.put(PageContentKeys.USER_NAME, userinfo.getNameOfUser());
                htmlSnippets = PageManager.getPageManager().getPageContents(PageEnum.SHOPPING_CART_PAGE, params);
                
        return new DefaultHttpHeaders("index").disableCaching();
         }

                // POST /entity
                public String create() {
                log.info("CartController.create");
                
                printParams();
                
                long userId = 0;
                boolean isSessionId = true;
                
                log.info("item id is " + this.reqparams.get("productid"));
                
                String itemIds = "1000008_1000005"; 
                if(this.reqparams.get("productid") != null){
                        itemIds = this.reqparams.get("productid")[0];
                }
                
                
//                      log.info("list of item ids is " + this.request.getParameter("productid"));
//                              String itemIds = this.request.getParameter("productid");
                        
                        if(userinfo.isLoggedIn()){
                                userId = userinfo.getUserId();
                                isSessionId = false;
                        }
                        else{
                                userId = userinfo.getSessionId();
                                isSessionId = true;
                        }
                        long cartId = 0;
                
                        StringTokenizer tokenizer = new StringTokenizer(itemIds,"_");
                        int numberOfItems = tokenizer.countTokens();
                        while(tokenizer.hasMoreTokens()){
                                long itemId = Long.parseLong(tokenizer.nextToken());
                                //cartId = Utils.addItemToCart(itemId, userId, isSessionId);
                                
                                try {
                                        ShoppingCartClient shoppingCartClient = new ShoppingCartClient();
                                        in.shop2020.model.v1.shoppingcart.ShoppingCartService.Client cartClient = shoppingCartClient.getClient();
                                        cartId = cartClient.createCart(userId, isSessionId);
                                        cartClient.addItemToCart(cartId, itemId, 1);
                        
                                } catch (ShoppingCartException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (TException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (Exception e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }

                        }

                //long cartId = Utils.addItemToCart(Long.parseLong(itemId), userId, isSessionId);
                
                userinfo.setCartId(cartId);
                userinfo.setTotalItems(Utils.getNumberOfItemsInCart(cartId) );
                
                this.session.setAttribute("userinfo", userinfo);
                
                        return "success";
            }
                

                // DELETE /entity
                public String destroy() {
                log.info("CartController.destroy");
                printParams();
                log.info("item id is " + this.request.getParameter("productid"));
                        String itemIdString = this.request.getParameter("productid");
                        long itemId = Long.parseLong(itemIdString);
                        if(userinfo.getCartId() == -1){
                                log.info("Cart does not exist. Nothing to delete.");
                        }else{
                                if(Utils.deleteItemFromCart(userinfo.getCartId(), itemId, userinfo.getUserId(), userinfo.isSessionId())){
                                        userinfo.setTotalItems(userinfo.getTotalItems() - 1 );
                                        setUserSessionInfo();
                                        return "delsuccess";    
                                }
                        }
                        return "delfailure";
                }
                
                
                // DELETE /entity
                public String update() {
                log.info("CartController.update");
                printParams();
                log.info("item id is " + this.request.getParameter("productid"));
                log.info("item id is " + this.request.getParameter("quantity"));
                        String itemIdString = this.request.getParameter("productid");
                        String quantityString = this.request.getParameter("quantity");
                        long itemId = Long.parseLong(itemIdString);
                        long quantity = Long.parseLong(quantityString);
                        if(quantity <= 0){
                                log.info("Not valid item quantity. Unable to change item quantity.");
                        }else{
                                if(Utils.updateItemQuantityInCart(userinfo.getCartId(), itemId, quantity)){
                                        return "delsuccess";    
                                }
                        }
                        return "delfailure";
                }
                
                
    public void printParams(){
        for(String param : reqparams.keySet()) {
                log.info("param name is " + param);
                log.info("param first is " + reqparams.get(param)[0]);
        }
        log.info(this.reqparams);
    }

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

    public String getHeaderSnippet(){
                return htmlSnippets.get("HEADER");
        }
        
        public String getMainMenuSnippet(){
                return htmlSnippets.get("MAIN_MENU");
        }
        
        public String getSearchBarSnippet(){
                return htmlSnippets.get("SEARCH_BAR");
        }
                        
        
        public String getCustomerServiceSnippet(){
                return htmlSnippets.get("CUSTOMER_SERVICE");
        }
        
        public String getCartHeaderSnippet(){
                return htmlSnippets.get("CART_HEADER");
        }
        
        public String getCartDetailsSnippet(){
                return htmlSnippets.get("CART_DETAILS");
        }
        
        public String getMyResearchSnippet(){
                return htmlSnippets.get("MY_RESEARCH");
        }
                                
        public String getFooterSnippet(){
                return htmlSnippets.get("FOOTER");
        }
        
        public String getJsFileSnippet(){
                return htmlSnippets.get("JS_FILES");
        }
        
        public String getCssFileSnippet(){
                return htmlSnippets.get("CSS_FILES");
        }
        
        public long getNumberOfItems(){
                return userinfo.getTotalItems();
        }
}
/*
         // GET /cart
         public HttpHeaders index() {
         changed on 18 august
        Cookie loginCookie = new Cookie("userId", "Rajveer");
        Map cookiesMap = new HashMap();
        cookiesMap.put("USER_ID", loginCookie);
        setCookiesMap(cookiesMap);
        
        log.info( "Cookies map is " + this.getCookiesMap());
        log.info("CartController.index");
        
                Map<PageContentKeys, String> params = new HashMap<PageContentKeys, String>();

        long userId = 0;
        boolean isSessionId = true;
        //if(this.session.getAttribute("loggedin")!=null){
                if(this.session.getAttribute("loggedin").toString().equals("true")){
                        userId = Long.parseLong(this.session.getAttribute("userid").toString());
                        isSessionId = false;
                }else{
                        userId = Long.parseLong(this.session.getAttribute("userid").toString());
                        isSessionId = true;
                }
//      }else{
//              System.out.println("No User is logged in. Redirect to login page.");
//              return new DefaultHttpHeaders("fatal");
//
//      }
        
        
        
                params.put(PageContentKeys.CUSTOMER_ID, userId+"");
                params.put(PageContentKeys.IS_SESSION_ID, isSessionId+"");


        long userId = 0;
        boolean isSessionId = true;
                Map<PageContentKeys, String> params = new HashMap<PageContentKeys, String>();
                
                if(userinfo.isLoggedIn()){
                        userId = userinfo.getUserId();
                        isSessionId = false;
                }
                else{
                        userId = userinfo.getSessionId();
                        isSessionId = true;
                }
                
                params.put(PageContentKeys.CUSTOMER_ID, userId+"");
                params.put(PageContentKeys.IS_SESSION_ID, isSessionId+"");

                htmlSnippets = PageManager.getPageManager().getPageContents(PageEnum.SHOPPING_CART_PAGE, params);
                

        
        return new DefaultHttpHeaders("index").disableCaching();
    }
*/    
    // POST /entity
    /*
    public String create() {
        
        log.info("CartController.create");
        printParams();
        if(getCookiesMap() != null){
                Cookie loginCookie = (Cookie)getCookiesMap().get("USER_ID");
                log.info("login cookie name is " + loginCookie.getName() );
                log.info("login cookie value is " + loginCookie.getValue());
        }
        log.info("item id is " + this.reqparams.get("item_id"));
        itemId = this.reqparams.get("item_id")[0];
        
        addItemToCart(itemId);
        long userId = 0;
        boolean isSessionId = true;
        if(this.session.getAttribute("loggedin").toString().equals("true")){
                userId = Long.parseLong(this.session.getAttribute("userid").toString());
                isSessionId = false;
        }else{
                userId = Long.parseLong(this.session.getAttribute("userid").toString());
                isSessionId = true;
        }
        addItemToCart(Long.parseLong(itemId), userId, isSessionId);
        // Add data to the cart
        
        long userId = 0;
        boolean isSessionId = true;
        
        log.info("item id is " + this.reqparams.get("productid"));
        
        String itemIds = "1000008_1000005"; 
        if(this.reqparams.get("productid") != null){
                itemIds = this.reqparams.get("productid")[0];
        }
        
        
//      log.info("list of item ids is " + this.request.getParameter("productid"));
//              String itemIds = this.request.getParameter("productid");
                
                if(userinfo.isLoggedIn()){
                        userId = userinfo.getUserId();
                        isSessionId = false;
                }
                else{
                        userId = userinfo.getSessionId();
                        isSessionId = true;
                }
                long cartId = 0;
        
                StringTokenizer tokenizer = new StringTokenizer(itemIds,"_");
                int numberOfItems = tokenizer.countTokens();
                while(tokenizer.hasMoreTokens()){
                        long itemId = Long.parseLong(tokenizer.nextToken());
                        cartId = Utils.addItemToCart(itemId, userId, isSessionId);
                }

        //long cartId = Utils.addItemToCart(Long.parseLong(itemId), userId, isSessionId);
        
        userinfo.setCartId(cartId);
        userinfo.setTotalItems(Utils.getNumberOfItemsInCart(cartId) );
        
        this.session.setAttribute("userinfo", userinfo);
        
                return "success";
    }
    
    
    public void printParams(){
        for(String param : reqparams.keySet()) {
                log.info("param name is " + param);
                log.info("param first is " + reqparams.get(param)[0]);
        }
        log.info(this.reqparams);
    }
    
    private boolean addItemToCart(String itemId){
        log.info("Session Id is "  + request.getSession().getId());
        log.info("Item Id is "  + itemId);
        return true;
    }
    
    
        private void addItemToCart(long catalogItemId, long userId, boolean isSessionId){
                UserContextServiceClient userContextServiceClient = null;
                in.shop2020.model.v1.user.UserContextService.Client userClient = null;

                ShoppingCartClient shoppingCartClient = null;
                in.shop2020.model.v1.shoppingcart.ShoppingCartService.Client cartClient = null;
                long cartId = -1;
                
                try {
                        userContextServiceClient = new UserContextServiceClient();
                        userClient = userContextServiceClient.getClient();

                        shoppingCartClient = new ShoppingCartClient();
                        cartClient = shoppingCartClient.getClient();
                        
                        cartId = cartClient.createCart(userId, isSessionId);
                        cartClient.addItemToCart(cartId, catalogItemId, 1);
                        
                        int NumberOfLines = cartClient.getShadowCart(cartId).getLinesSize();
                        this.session.setAttribute("totalitems", NumberOfLines+"");

                        
                } catch (ShoppingCartException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (TException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                
                //if user is logged in create  new cart
                //if( userClient.getState(userId, false).isIsLoggedIn()){
        }
        
        public long getNumberOfItems(){
                return userinfo.getTotalItems();
        }
        
        public String getShoppingCartSnippets()
        {
                return htmlSnippets.get("SHOPPING_CART");
        }
        
        @Override
        public void setParameters(Map<String, String[]> reqmap) {
                log.info("setParameters:" + reqmap);
                
                this.reqparams = reqmap;
        }
        */
//      
//      @Override
//      public void setServletRequest(HttpServletRequest request) {
//              this.request = request;
//      }
//