Subversion Repositories SmartDukaan

Rev

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

/**
 * 
 */
package in.shop2020.serving.controllers;

import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

import in.shop2020.logistics.LogisticsInfo;
import in.shop2020.logistics.LogisticsService.Client;
import in.shop2020.logistics.DeliveryType;
import in.shop2020.logistics.LogisticsServiceException;
import in.shop2020.thrift.clients.LogisticsClient;

import org.apache.log4j.Logger;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;
import org.apache.thrift.TException;

import com.google.gson.Gson;

/**
 * @author rajveer
 *
 */
public class EstimateController extends BaseController {
        
        private static final long serialVersionUID = 8023801600023970837L;

        private static Logger log = Logger.getLogger(Class.class);      
        private String id;
        private long itemId;
        private String pincode;
        private long days = -1;
        private boolean isCODAvailable;
        private Map<String, String> response = new HashMap<String, String>();
        
        public EstimateController() {
                super();
        }
    
    // GET /logout
    public HttpHeaders show(){
        LogisticsClient logisticsServiceClient = null;
        try {
                        logisticsServiceClient = new LogisticsClient();
                        Client logisticsClient = logisticsServiceClient.getClient();
                        LogisticsInfo logistincInfo = logisticsClient.getLogisticsEstimation(itemId, pincode, DeliveryType.PREPAID);
                        days = logistincInfo.getDeliveryTime();
                        isCODAvailable = logistincInfo.isCodAllowed();
        } catch (LogisticsServiceException e)   {
                days = -1;
                isCODAvailable = false;
                log.error("Unable to get estimate/COD availability for " + itemId, e);
                
                } catch(TException e)   {
                        
                } catch (Exception e)   {
                
                }
                response.put("delivery_estimate", Long.toString(days));
                response.put("is_cod_available_for_location", Boolean.toString(isCODAvailable));
                
        return new DefaultHttpHeaders("index");
    }
    
    /**
     * 
     * @param id
     */
    public void setId(String id) {
        this.id = id;
        StringTokenizer tokenizer = new StringTokenizer(this.id, "_");
        this.pincode = tokenizer.nextToken();
        this.itemId = Long.parseLong(tokenizer.nextToken());
    }

    public String getResponseJSONString() {
        Gson gson = new Gson();
        return gson.toJson(response);
    }
}