Subversion Repositories SmartDukaan

Rev

Rev 5340 | Rev 7791 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
458 rajveer 1
/**
2
 * 
3
 */
4
package in.shop2020.serving.controllers;
5
 
3830 chandransh 6
import java.util.HashMap;
7
import java.util.Map;
507 rajveer 8
import java.util.StringTokenizer;
9
 
5072 amar.kumar 10
import in.shop2020.datalogger.EventType;
4865 rajveer 11
import in.shop2020.logistics.LogisticsInfo;
507 rajveer 12
import in.shop2020.logistics.LogisticsService.Client;
4630 mandeep.dh 13
import in.shop2020.logistics.DeliveryType;
786 rajveer 14
import in.shop2020.logistics.LogisticsServiceException;
3126 rajveer 15
import in.shop2020.thrift.clients.LogisticsClient;
5072 amar.kumar 16
import in.shop2020.utils.DataLogger;
507 rajveer 17
 
832 rajveer 18
import org.apache.log4j.Logger;
458 rajveer 19
import org.apache.struts2.rest.DefaultHttpHeaders;
20
import org.apache.struts2.rest.HttpHeaders;
786 rajveer 21
import org.apache.thrift.TException;
458 rajveer 22
 
3830 chandransh 23
import com.google.gson.Gson;
24
 
458 rajveer 25
/**
26
 * @author rajveer
27
 *
28
 */
29
public class EstimateController extends BaseController {
30
 
1044 chandransh 31
	private static final long serialVersionUID = 8023801600023970837L;
32
 
832 rajveer 33
	private static Logger log = Logger.getLogger(Class.class);	
458 rajveer 34
	private String id;
507 rajveer 35
	private long itemId;
36
	private String pincode;
843 chandransh 37
	private long days = -1;
3830 chandransh 38
	private boolean isCODAvailable;
6524 rajveer 39
	private boolean isOTGAvailable;
3830 chandransh 40
	private Map<String, String> response = new HashMap<String, String>();
41
 
458 rajveer 42
	public EstimateController() {
43
		super();
44
	}
45
 
46
    // GET /logout
786 rajveer 47
    public HttpHeaders show(){
3126 rajveer 48
    	LogisticsClient logisticsServiceClient = null;
507 rajveer 49
    	try {
3126 rajveer 50
			logisticsServiceClient = new LogisticsClient();
507 rajveer 51
			Client logisticsClient = logisticsServiceClient.getClient();
4865 rajveer 52
			LogisticsInfo logistincInfo = logisticsClient.getLogisticsEstimation(itemId, pincode, DeliveryType.PREPAID);
53
			days = logistincInfo.getDeliveryTime();
54
			isCODAvailable = logistincInfo.isCodAllowed();
6524 rajveer 55
			isOTGAvailable = logistincInfo.isOtgAvailable();
3830 chandransh 56
    	} catch (LogisticsServiceException e)	{
843 chandransh 57
    		days = -1;
3830 chandransh 58
    		isCODAvailable = false;
59
    		log.error("Unable to get estimate/COD availability for " + itemId, e);
60
 
61
		} catch(TException e)	{
786 rajveer 62
 
3830 chandransh 63
		} catch (Exception e)	{
786 rajveer 64
 
65
		}
3830 chandransh 66
		response.put("delivery_estimate", Long.toString(days));
67
		response.put("is_cod_available_for_location", Boolean.toString(isCODAvailable));
6524 rajveer 68
		response.put("on_time_guarantee", Boolean.toString(isOTGAvailable));
3830 chandransh 69
 
5072 amar.kumar 70
		try{
5340 amar.kumar 71
			if(pincode.length() == 6 && !pincode.equals("110001")){
72
				String requestOrigin = request.getHeader("referer").contains("cart")?"Cart":"Product";
73
				DataLogger.logData(EventType.DELIVERY_ESTIMATE, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),
74
						pincode, (new Long(days)).toString(), (new Long(itemId)).toString(), (new Boolean(isCODAvailable)).toString(),
75
						requestOrigin);
76
			}
5072 amar.kumar 77
		}catch(Exception e){
5191 amar.kumar 78
			log.warn(e.getMessage()+"pincode : "+ pincode + " Actual referer : " + request.getHeader("referer") + e.getStackTrace());
5072 amar.kumar 79
		}
458 rajveer 80
    	return new DefaultHttpHeaders("index");
81
    }
3830 chandransh 82
 
458 rajveer 83
    /**
84
     * 
85
     * @param id
86
     */
87
    public void setId(String id) {
88
        this.id = id;
2148 chandransh 89
        StringTokenizer tokenizer = new StringTokenizer(this.id, "_");
507 rajveer 90
        this.pincode = tokenizer.nextToken();
91
        this.itemId = Long.parseLong(tokenizer.nextToken());
458 rajveer 92
    }
93
 
3830 chandransh 94
    public String getResponseJSONString() {
95
    	Gson gson = new Gson();
96
    	return gson.toJson(response);
458 rajveer 97
    }
3830 chandransh 98
}