Subversion Repositories SmartDukaan

Rev

Rev 4142 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.serving.controllers;

import in.shop2020.model.v1.catalog.Item;
import in.shop2020.model.v1.user.Line;
import in.shop2020.thrift.clients.CatalogServiceClient;
import in.shop2020.thrift.clients.UserContextServiceClient;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;

import org.apache.log4j.Logger;

/**
 * @author vikas
 *
 */
@SuppressWarnings("serial")
public class UserCartController extends BaseController {
    private static Logger log = Logger.getLogger(Class.class);
    private long userId;
    private long cartId;
    private List<Map<String, String>> userLines;

    public UserCartController(){
        super();
    }

    public String index() throws Exception {
        UserContextServiceClient userContextServiceClient = new UserContextServiceClient();
        in.shop2020.model.v1.user.UserContextService.Client userClient = userContextServiceClient.getClient();
        
        CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
        in.shop2020.model.v1.catalog.InventoryService.Client catalogClient = catalogServiceClient.getClient();
        
        List<Line> lines = userClient.getCart(cartId).getLines();
        
        userLines = new ArrayList<Map<String,String>>();
        if (userClient.getUserById(userId).getActiveCartId() != cartId) {
            return "index";
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("IST"));
        
        for (Line line : lines) {
            Map<String, String> lineMap = new HashMap<String, String>();
            lineMap.put("itemid", Long.toString(line.getItemId()));
            Item item = catalogClient.getItem(line.getItemId());
            
            StringBuilder productName = new StringBuilder();
            if (item.getBrand() != null && !item.getBrand().isEmpty()) {
                productName.append(item.getBrand() + " ");
            }
            if (item.getModelName() != null && !item.getModelName().isEmpty()) {
                productName.append(item.getModelName()  + " ");
            }
            if (item.getModelNumber() != null && !item.getModelNumber().isEmpty()) {
                productName.append(item.getModelNumber()  + " ");
            }
            lineMap.put("itemname", productName.toString());
            lineMap.put("quantity", Double.toString(line.getQuantity()));
            lineMap.put("actualprice", Double.toString(line.getActualPrice()));
            lineMap.put("discountedprice", Double.toString(line.getDiscountedPrice()));
            lineMap.put("estimate", Integer.toString(line.getEstimate()));
            lineMap.put("createdon", sdf.format((new Date(line.getCreatedOn()))));
            
            userLines.add(lineMap);
        }
        return "index";
    }

    public void setUserId(String userId) {
        try {
            this.userId = Long.parseLong(userId);
        }
        catch (NumberFormatException e) {
            log.error(e);
        }
    }
    
    public void setCartId(String cartId) {
        try {
            this.cartId = Long.parseLong(cartId);
        }
        catch (NumberFormatException e) {
            log.error(e);
        }
    }

    public Long getUserId() {
        return userId;
    }

    public List<Map<String, String>> getUserLines() {
        return userLines;
    }
}