Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
6050 anupam.sin 1
package in.shop2020.serving.controllers;
2
 
6108 amar.kumar 3
import in.shop2020.datalogger.EventType;
6050 anupam.sin 4
import in.shop2020.model.v1.order.RechargeOrder;
5
import in.shop2020.model.v1.order.RechargeOrderStatus;
6056 amit.gupta 6
import in.shop2020.model.v1.order.RechargeType;
6050 anupam.sin 7
import in.shop2020.model.v1.order.TransactionServiceException;
8
import in.shop2020.model.v1.user.Affiliate;
9
import in.shop2020.model.v1.user.TrackLogType;
10
import in.shop2020.model.v1.user.UserAffiliateException;
11
import in.shop2020.payments.PaymentException;
12
import in.shop2020.serving.interceptors.TrackingInterceptor;
13
import in.shop2020.serving.utils.FormattingUtils;
14
import in.shop2020.thrift.clients.PaymentClient;
15
import in.shop2020.thrift.clients.TransactionClient;
16
import in.shop2020.thrift.clients.UserClient;
6108 amar.kumar 17
import in.shop2020.utils.DataLogger;
6050 anupam.sin 18
 
19
import java.text.SimpleDateFormat;
20
import java.util.Date;
6056 amit.gupta 21
import java.util.Map;
6050 anupam.sin 22
 
23
import org.apache.log4j.Logger;
24
import org.apache.thrift.TException;
6056 amit.gupta 25
import org.apache.thrift.transport.TTransportException;
6050 anupam.sin 26
 
27
public class RechargeResultController extends BaseController {
28
    private static final long serialVersionUID = 1L;
29
 
30
    private static final String SHOOGLOO_AFF_NAME = "shoogloo";
31
 
32
    private static Logger log = Logger.getLogger(Class.class);
33
    private FormattingUtils formattingUtils = new FormattingUtils();
34
 
35
    private boolean isShooglooAff  = false;
6056 amit.gupta 36
    private static Map<Long,String> allProviders;
37
    static {
38
    	try {
39
			allProviders = new TransactionClient().getClient().getServiceProviders(RechargeType.DTH);
40
			allProviders.putAll(new TransactionClient().getClient().getServiceProviders(RechargeType.MOBILE));
41
		} catch (TTransportException e) {
42
			// TODO Auto-generated catch block
43
			e.printStackTrace();
44
		} catch (TException e) {
45
			// TODO Auto-generated catch block
46
			e.printStackTrace();
47
		}
48
    }
6050 anupam.sin 49
    long merchantPaymentId;
50
    RechargeOrder rechargeOrder = null;
51
    String message = null;
52
 
53
    public RechargeResultController(){
54
        super();
55
    }
56
 
57
    public String index() {
58
        PaymentClient paymentServiceClient = null;
59
        TransactionClient transactionServiceClient = null;
60
        UserClient userServiceClient = null;
61
 
62
        try {
63
            paymentServiceClient = new PaymentClient();
64
            transactionServiceClient = new TransactionClient();
65
            userServiceClient = new UserClient();
66
        } catch (Exception e1) {
67
            // TODO Nothing to worry
68
            log.error("Unable to initialize the client for either payment or transaction or user service", e1);
69
        }
70
 
71
 
72
        merchantPaymentId = Long.parseLong(this.request.getParameter("paymentId"));
73
        long txnId;
74
        try {
75
            txnId = paymentServiceClient.getClient().getPayment(merchantPaymentId).getMerchantTxnId();
76
            rechargeOrder = transactionServiceClient.getClient().getRechargeOrdersForTransaction(txnId);
77
 
78
            this.message = "You have successfully recharged your mobile.";
79
 
80
            if (cookiesMap.containsKey(TrackingInterceptor.AFF_COOKIE)) {
81
                long affId = Long.parseLong(cookiesMap.get(TrackingInterceptor.AFF_COOKIE).getValue());
82
                userServiceClient.getClient().addTrackLog(affId, userinfo.getUserId(), TrackLogType.PAYMENT_SUCCESS, "",
83
                        Long.toString(merchantPaymentId), (new Date()).getTime());
84
                Affiliate aff = userServiceClient.getClient().getAffiliateById(affId);
85
                if (aff.getName().equals(SHOOGLOO_AFF_NAME)) {
86
                    isShooglooAff = true;
87
                }
88
            }
89
 
90
        } catch (PaymentException e) {
91
            log.error("Payment service not responding. Payment id is" + merchantPaymentId, e);
92
        } catch (TException e) {
93
            log.error("Thrift service exception. Payment id is" + merchantPaymentId, e);
94
        } catch (TransactionServiceException e) {
95
            log.error("Transaction service exception. Payment id is" + merchantPaymentId, e);
96
        } catch (UserAffiliateException e) {
97
            log.error("Affiliate service exception. Payment id is" + merchantPaymentId, e);
98
        }
99
 
100
        return "index";
101
    }
102
 
103
    public String formatPrice(double price)    {
104
        return formattingUtils.formatPrice(price);
105
    }
106
 
107
    public String getMessage(){
108
        return this.message;
109
    }
110
 
111
    public boolean getIsShooglooAff() {
112
        return this.isShooglooAff;
113
    }
114
 
115
    public long getMerchantPaymentId() {
116
        return merchantPaymentId;
117
    }
118
 
119
    public static String formatDate(long timestamp){
120
        SimpleDateFormat dateformat = new SimpleDateFormat("dd MMMM yyyy");
121
        return dateformat.format(new Date(timestamp));  
122
    }
123
 
124
 
125
    @Override
126
    public String getHeaderSnippet() {
127
        String url = request.getQueryString();
128
        if (url == null) {
129
            url = "";
130
        } else {
131
            url = "?" + url;
132
        }
133
        url = request.getRequestURI() + url;
134
        return pageLoader.getHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), url , 0, false);
135
    }
136
 
137
    public RechargeOrder getRechargeOrder() {
138
        return rechargeOrder;
139
    }
140
 
141
    public void setRechargeOrder(RechargeOrder rechargeOrder) {
142
        this.rechargeOrder = rechargeOrder;
143
    }
6056 amit.gupta 144
 
145
 
146
    public boolean isDTH() {
147
    	return rechargeOrder.getRechargeType().equals(RechargeType.DTH);
148
    }
149
 
150
    public String getProvider() {
151
    	return allProviders.get(rechargeOrder.getOperatorId());
152
    }
153
 
154
    public String[] getOrderStatus(){
155
    	RechargeOrderStatus status = rechargeOrder.getStatus();
156
    	if(status.equals(RechargeOrderStatus.PAYMENT_FAILED)||status.equals(RechargeOrderStatus.PAYMENT_PENDING)){
6108 amar.kumar 157
    		DataLogger.logData(EventType.RECHARGE_PAYMENT_FAILED, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),
158
    				Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),
159
                    rechargeOrder.getRechargeType().toString());
6056 amit.gupta 160
    		return new String[]{"red", "PAYMENT FAILED", "Payment failed. Try to <a href='/recharge'>recharge again</a>"};
161
    	}
162
    	else if(status.equals(RechargeOrderStatus.PAYMENT_SUCCESSFUL)||status.equals(RechargeOrderStatus.RECHARGE_FAILED)){
6108 amar.kumar 163
    		DataLogger.logData(EventType.RECHARGE_PAYMENT_SUCCESSFUL, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),
164
    				Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),
165
    				rechargeOrder.getRechargeType().toString());
6117 anupam.sin 166
			return new String[]{"red", "RECHARGE FAILED", "Payment was successful and amount is transferred to your <a href='/my-wallet'>wallet</a>.<br><br> <a href='/recharge'>Recharge again</a> using wallet."};
6056 amit.gupta 167
    	} else {
6108 amar.kumar 168
    		DataLogger.logData(EventType.RECHARGE_SUCCESSFUL, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),
169
    				Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),
170
    				rechargeOrder.getRechargeType().toString());
6056 amit.gupta 171
    		return new String[] {"", "SUCCESS", "Congratulations your mobile is successfully recharged."};
172
    	}
173
    }
6050 anupam.sin 174
}