Subversion Repositories SmartDukaan

Rev

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