Subversion Repositories SmartDukaan

Rev

Rev 6215 | Rev 6249 | 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
 
6091 anupam.sin 3
import in.shop2020.datalogger.EventType;
6050 anupam.sin 4
import in.shop2020.model.v1.order.OrderType;
5
import in.shop2020.model.v1.order.RechargeCoupon;
6
import in.shop2020.model.v1.order.RechargeOrder;
7
import in.shop2020.model.v1.order.RechargeOrderStatus;
8
import in.shop2020.model.v1.order.RechargeType;
6057 anupam.sin 9
import in.shop2020.model.v1.order.UserWallet;
6050 anupam.sin 10
import in.shop2020.model.v1.user.User;
11
import in.shop2020.model.v1.user.UserContextException;
12
import in.shop2020.serving.utils.DesEncrypter;
13
import in.shop2020.serving.utils.Utils;
14
import in.shop2020.thrift.clients.HelperClient;
15
import in.shop2020.thrift.clients.TransactionClient;
16
import in.shop2020.thrift.clients.UserClient;
6228 anupam.sin 17
import in.shop2020.utils.DataLogger;
6091 anupam.sin 18
import in.shop2020.utils.Mail;
6050 anupam.sin 19
 
20
import java.util.ArrayList;
21
import java.util.List;
6091 anupam.sin 22
import java.util.Random;
6050 anupam.sin 23
 
24
import org.apache.log4j.Logger;
25
import org.apache.struts2.convention.annotation.Result;
26
import org.apache.struts2.convention.annotation.Results;
27
import org.apache.thrift.TException;
28
import org.apache.thrift.transport.TTransportException;
29
 
30
@Results({
6228 anupam.sin 31
    @Result(name="recharge-pay-options-redirect", type="redirectAction", params = {"actionName" , "recharge-pay-options", "rechargeOrderId", "${rechargeOrderId}"}),
6103 amit.gupta 32
    @Result(name="create-recharge-redirect", type="redirectAction", params = {"actionName" , "wallet-only-payment", "rechargeOrderId", "${rechargeOrderId}"}),
33
    @Result(name="recharge-redirect", type="redirectAction", params = {"actionName" , "recharge", "error", "ServiceDown"})
6050 anupam.sin 34
})
35
 
36
public class ConfirmController extends BaseController{
37
 
38
    /**
39
     * 
40
     */
41
    private static final long serialVersionUID = 1L;
6057 anupam.sin 42
    private long rechargeOrderId = 0;
6050 anupam.sin 43
    private String amount = "";
6086 anupam.sin 44
    private String walletAmountUsed = "0";
6050 anupam.sin 45
    private String operator = "";
46
    private String number = "";
47
    private String email = "";
48
    private String rechargeType = "";
49
    private DesEncrypter desEncrypter = new DesEncrypter("saholic");
50
    private List<String> couponIds = null;
51
    private List<RechargeCoupon> coupons = null;
6058 anupam.sin 52
    private String userId;
6057 anupam.sin 53
    private String message = "";
6070 anupam.sin 54
    private String totalAmount = "";
6178 anupam.sin 55
    private String plan = "";
6091 anupam.sin 56
    private static final String chars = "abcdefghijklmonpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
57
    private static final Random random = new Random();
58
    private static final int LENGTH = 10;
6050 anupam.sin 59
    private static Logger log = Logger.getLogger(Class.class);
60
 
61
    public String index() {
62
        return "index";
63
    }
64
 
65
    public String create() {
6103 amit.gupta 66
    	if(getProvider().equals("-1")){
6108 amar.kumar 67
    		DataLogger.logData(EventType.PROVIDER_FETCH_FAILURE, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),
68
    				rechargeType.toString(), number, operator);
6103 amit.gupta 69
    		return "recharge-redirect";
70
    	}
6086 anupam.sin 71
        setTotalAmount(amount);
6057 anupam.sin 72
        if(userinfo.isLoggedIn()) {
6124 anupam.sin 73
            setUserId("" + userinfo.getUserId());
6057 anupam.sin 74
            try {
75
            TransactionClient tc = new TransactionClient();
76
            UserWallet wallet = tc.getClient().getUserWallet(userinfo.getUserId());
77
            long amountA = 0;
78
            if(wallet.getAmount() == 0){
79
                setMessage("Your RechargeWallet is empty.");
80
            } else if ((amountA = wallet.getAmount() - Long.parseLong(amount)) >= 0) {
81
                setAmount("0");
82
                setMessage("You now have Rs. " + amountA + " left in your RechargeWallet.");
6070 anupam.sin 83
                setWalletAmountUsed("" + (wallet.getAmount() - amountA));
6057 anupam.sin 84
            } else {
85
                setAmount("" + (0-amountA));
86
                setMessage("You have used all the amount in your RechargeWallet.");
6070 anupam.sin 87
                setWalletAmountUsed(("" + wallet.getAmount()));
6057 anupam.sin 88
            }
89
 
90
 
91
            } catch (Exception e) {
92
                log.error("Unable to get user wallet", e);
93
            }
6124 anupam.sin 94
        } else {
95
            long tempUserId = createUserAndSendMail(email);
96
            if(tempUserId == -1)
97
            {
98
                return "recharge-redirect";
99
            } else {
100
                setUserId("" + tempUserId);
101
            }
6057 anupam.sin 102
        }
6050 anupam.sin 103
        return index();
104
    }
105
 
6103 amit.gupta 106
    public String getProvider(){
107
    	TransactionClient tcl;
108
    	try {
109
    		tcl = new TransactionClient();
110
    		return tcl.getClient().getServiceProviderForDevice(RechargeType.findByValue(Integer.parseInt(this.rechargeType)), number) + "";
111
    	} catch (Exception e) {
112
    		log.error("Unable to get service provider for Device number " + number + " and rechargeType : " +  rechargeType, e);
113
    	}
114
    	return 0 + "";
115
 
116
    }
117
 
6070 anupam.sin 118
    private void setTotalAmount(String amount2) {
119
        this.totalAmount  = amount2;
120
 
121
    }
122
 
6050 anupam.sin 123
    public String createRecharge(){
124
        try {
6058 anupam.sin 125
            TransactionClient tc = new TransactionClient();
6050 anupam.sin 126
            RechargeOrder rechargeOrder = new RechargeOrder();
6070 anupam.sin 127
            rechargeOrder.setTotalAmount(Long.parseLong(amount) + Long.parseLong(getWalletAmountUsed()));
6050 anupam.sin 128
            rechargeOrder.setUserEmailId(email);
6058 anupam.sin 129
            rechargeOrder.setUserId(Long.parseLong(userId));
6050 anupam.sin 130
            rechargeOrder.setDeviceNumber(number);
6178 anupam.sin 131
            rechargeOrder.setPlan(plan);
6050 anupam.sin 132
            rechargeOrder.setOperatorId(Long.parseLong(operator));
6057 anupam.sin 133
            rechargeOrder.setRechargeType(RechargeType.findByValue(Integer.parseInt(rechargeType)));
6050 anupam.sin 134
            rechargeOrder.setStatus(RechargeOrderStatus.PAYMENT_PENDING);
135
            rechargeOrder.setOrderType(OrderType.B2C);
6070 anupam.sin 136
            rechargeOrder.setWalletAmount(Long.parseLong(getWalletAmountUsed()));
6050 anupam.sin 137
 
138
            rechargeOrder = tc.getClient().createRechargeOrder(rechargeOrder);
6057 anupam.sin 139
            setRechargeOrderId(rechargeOrder.getId());
6050 anupam.sin 140
 
6178 anupam.sin 141
        } catch (Exception e) {
142
            log.error("Unable to create recharge order", e);
143
            return "recharge-redirect";
6050 anupam.sin 144
        }
145
        if(amount.equals("0")) {
146
            return "create-recharge-redirect";
147
        } else {
148
            return "recharge-pay-options-redirect";
149
        }
150
    }
151
 
6091 anupam.sin 152
    private static String generateNewPassword() {
153
        char[] buf = new char[LENGTH];
154
        for (int i = 0; i < buf.length; i++) {
155
            buf[i] = chars.charAt(random.nextInt(chars.length()));
156
        }
157
        return new String(buf);
158
    }
159
 
160
    private long createUserAndSendMail(String email) {
161
        User user = null;
162
        String password = null;
163
        try{
164
        UserClient ucl = new UserClient();
165
        user = ucl.getClient().getUserByEmail(email);
6124 anupam.sin 166
        if(user.getUserId() == -1) {
6091 anupam.sin 167
            user.setEmail(email);
168
            password = generateNewPassword();
169
            String encryptedPassword = desEncrypter.encrypt(password);
170
            user.setPassword(encryptedPassword);
171
            user.setCommunicationEmail(email);
172
            UserClient userContextServiceClient = new UserClient();
173
            in.shop2020.model.v1.user.UserContextService.Client userClient = userContextServiceClient.getClient();
174
            user = userClient.createUser(user);
6124 anupam.sin 175
 
176
            List<String> toList = new ArrayList<String>();
177
            toList.add(email);
178
            HelperClient helperServiceClient = null;
179
                helperServiceClient = new HelperClient();
180
                in.shop2020.utils.HelperService.Client client = helperServiceClient.getClient();
181
                Mail mail = new Mail();
6131 anupam.sin 182
                mail.setSubject("Saholic Registration successful");
6124 anupam.sin 183
                mail.setTo(toList);
184
                mail.setData("Your have successfully registered with Saholic.com. Your user name is: " + email + " and your password is: " +  password);
185
                client.sendMail(mail);
6091 anupam.sin 186
            }
187
        }catch (UserContextException ux){
188
            return -1;               
189
        } catch (TTransportException e) {
190
            return -1;
191
        } catch (TException e) {
192
            return -1;
6124 anupam.sin 193
        } catch (Exception e) {
194
            log.error("Unexpected error while mailing the new password");
195
            return -1;
6091 anupam.sin 196
        }
197
        return user.getUserId();
198
    }
199
 
6057 anupam.sin 200
    public String getOperatorName() {
6206 rajveer 201
    	String operatorName = null;
202
    	if(rechargeType.equals("1")){
203
    		operatorName = Utils.getMobileProvidersMap().get(Long.parseLong(operator));	
204
    	}
205
    	if(rechargeType.equals("2")){
206
    		operatorName = Utils.getDthProvidersMap().get(Long.parseLong(operator));	
207
    	}
208
    	if(operatorName == null){
209
    		operatorName = "N/A";	
210
    	}
211
    	return operatorName;
6057 anupam.sin 212
    }
213
 
6050 anupam.sin 214
    public String getAmount() {
215
        return amount;
216
    }
217
    public void setAmount(String amount) {
218
        this.amount = amount;
219
    }
6073 amit.gupta 220
 
221
    public void setDthamount(String amount) {
222
    	this.amount = amount;
223
    }
6050 anupam.sin 224
    public String getOperator() {
225
        return operator;
226
    }
227
    public void setOperator(String operator) {
228
        this.operator = operator;
229
    }
230
    public String getNumber() {
231
        return number;
232
    }
233
    public void setNumber(String number) {
234
        this.number = number;
235
    }
6073 amit.gupta 236
 
237
    public void setDthnumber(String dthnumber) {
238
    	this.number = dthnumber;
239
    }
240
 
241
 
6050 anupam.sin 242
    public String getEmail() {
243
        return email;
244
    }
245
    public void setEmail(String email) {
246
        this.email = email;
247
    }
248
 
249
    public void setCouponIds(List<String> couponIds) {
250
        this.couponIds = couponIds;
251
    }
252
 
253
    public List<String> getCouponIds() {
254
        return couponIds;
255
    }
256
 
257
    public void setCoupons(List<RechargeCoupon> coupons) {
258
        this.coupons = coupons;
259
    }
260
 
261
    public List<RechargeCoupon> getCoupons() {
262
        return coupons;
263
    }
264
 
265
    public String getRechargeType() {
266
        return rechargeType;
267
    }
268
 
269
    public void setRechargeType(String rechargeType) {
270
        this.rechargeType = rechargeType;
271
    }
272
 
6058 anupam.sin 273
    public String getUserId() {
6050 anupam.sin 274
        return userId;
275
    }
276
 
6058 anupam.sin 277
    public void setUserId(String userId) {
278
        this.userId = userId;
6050 anupam.sin 279
    }
280
 
6057 anupam.sin 281
    public boolean isLoggedIn() {
282
        return userinfo.isLoggedIn();
283
    }
284
 
285
    public void setMessage(String message) {
286
        this.message = message;
287
    }
288
 
289
    public String getMessage() {
290
        return message;
291
    }
292
 
293
    public long getRechargeOrderId() {
294
        return rechargeOrderId;
295
    }
296
 
297
    public void setRechargeOrderId(long l) {
298
        this.rechargeOrderId = l;
299
    }
6070 anupam.sin 300
 
301
    public String getTotalAmount() {
302
        return totalAmount;
303
    }
304
 
305
    public String getWalletAmountUsed() {
306
        return walletAmountUsed;
307
    }
308
 
309
    public void setWalletAmountUsed(String walletAmountUsed) {
310
        this.walletAmountUsed = walletAmountUsed;
311
    }
6178 anupam.sin 312
 
313
    public String getPlan() {
314
        return plan;
315
    }
316
 
317
    public void setPlan(String plan) {
318
        this.plan = plan;
319
    }
6057 anupam.sin 320
 
6050 anupam.sin 321
}