Subversion Repositories SmartDukaan

Rev

Rev 2714 | Rev 3269 | 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.order.Order;
import in.shop2020.model.v1.order.OrderStatus;
import in.shop2020.thrift.clients.TransactionServiceClient;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
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 UserOrdersController extends BaseController {
    private static Logger log = Logger.getLogger(Class.class);
    private long userId;
    private List<Map<String, String>> userOrders;

    public UserOrdersController(){
        super();
    }

    public String index() throws Exception {
        TransactionServiceClient transactionServiceClient = new TransactionServiceClient();

        List<Order> orders = transactionServiceClient.getClient().getOrdersForCustomer(userId, 0, (new Date().getTime()), null);
        userOrders = new ArrayList<Map<String,String>>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("IST"));
        List<OrderStatus> failedStatusList = Arrays.asList(new OrderStatus[] {
                OrderStatus.SALES_RET_RESHIPPED,
                OrderStatus.SALES_RET_REFUNDED,
                OrderStatus.DOA_INVALID_REFUNDED,
                OrderStatus.DOA_INVALID_RESHIPPED,
                OrderStatus.DOA_VALID_REFUNDED,
                OrderStatus.DOA_RESHIPPED,
                OrderStatus.REFUNDED,
                OrderStatus.REJECTED,
                OrderStatus.FAILED});
        
        for (Order order : orders) {
            Map<String, String> orderMap = new HashMap<String, String>();
            orderMap.put("id", Long.toString(order.getId()));
            orderMap.put("created", sdf.format(new Date(order.getCreated_timestamp())));
            
            if (order.getStatus() == OrderStatus.DELIVERY_SUCCESS) {
                orderMap.put("status", "Completed");
            }
            else if (failedStatusList.contains(order.getStatus())) {
                orderMap.put("status", "Failed");
            }
            else {
                orderMap.put("status", "Open");
            }
            
            StringBuilder address = new StringBuilder();
            if (order.getCustomer_address1() != null) {
                address.append(order.getCustomer_address1() + ", ");
            }
            if (order.getCustomer_address2() != null) {
                address.append(order.getCustomer_address2() + ", ");
            }
            if (order.getCustomer_city() != null) {
                address.append(order.getCustomer_city() + ", ");
            }
            if (order.getCustomer_state() != null) {
                address.append(order.getCustomer_state() + "-");
            }
            if (order.getCustomer_pincode() != null) {
                address.append(order.getCustomer_pincode());
            }
            orderMap.put("shipping", address.toString());
            orderMap.put("city", order.getCustomer_city());
            orderMap.put("amount", Double.toString(order.getTotal_amount()));
            userOrders.add(orderMap);
        }
        return "index";
    }

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

    public Long getUserId() {
        return userId;
    }

    public List<Map<String, String>> getUserOrders() {
        return userOrders;
    }
}