Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
7073 anupam.sin 1
package in.shop2020.recharge.controllers;
2
 
7080 anupam.sin 3
import in.shop2020.model.v1.order.FRC;
7073 anupam.sin 4
import in.shop2020.model.v1.order.RechargePlan;
5
import in.shop2020.model.v1.order.RechargeTransaction;
6
import in.shop2020.model.v1.order.RechargeType;
7
import in.shop2020.thrift.clients.TransactionClient;
8
 
9
import java.math.BigInteger;
10
import java.util.ArrayList;
11
import java.util.List;
12
import java.util.Random;
13
 
14
import javax.mail.internet.AddressException;
15
import javax.mail.internet.InternetAddress;
16
import javax.servlet.http.HttpServletRequest;
17
 
18
import org.apache.log4j.Logger;
19
import org.apache.struts2.convention.annotation.Result;
20
import org.apache.struts2.convention.annotation.Results;
21
 
22
@Results({
7080 anupam.sin 23
    @Result(name="recharge-redirect", type="redirectAction", params = {"actionName" , "/", "errorMsg", "${errorMessage}"}),
24
    @Result(name="recharge-result", type="redirectAction", params = {"actionName" , "recharge-result", "rechargeId", "${rechargeOrderId}"})
7073 anupam.sin 25
})
26
 
27
public class ConfirmController extends BaseController{
28
 
29
    /**
30
     * 
31
     */
32
    private static final long serialVersionUID = 1L;
33
    private long rechargeOrderId = 0;
34
    private String amount = "";
35
    private String number = "";
36
    private String email = "";
37
    private String rechargeType = "";
38
    private String deviceType = "";
7080 anupam.sin 39
    private String mobileOperator = "";
40
    private String dthOperator = "";
7073 anupam.sin 41
    private String storeId = "";
42
    private String cafNum = "";
43
    private String simNum = "";
7080 anupam.sin 44
    private String altNum = "";
7073 anupam.sin 45
    private String name = "";
46
    private String plan = "";
7080 anupam.sin 47
    private String circleId = "";
48
    private String discount = "";
7073 anupam.sin 49
 
50
    private String message = "";
51
    private String errorMessage = "";
52
    private String totalAmount = "";
53
    private String couponCode = "";
54
    private String couponMessage = "";
55
    private String hiddenUserId = "";
56
    private long couponAmount = 0;
57
    private static final BigInteger key = new BigInteger("0333910847013829827302347601486730417451");
58
 
59
    private static final Random random = new Random();
60
    private static final int LENGTH = 10;
61
    private static final String HEADER_X_FORWARDED_FOR = "X-FORWARDED-FOR";
62
    private static Logger log = Logger.getLogger(Class.class);
63
 
64
    public String index() {
65
        return "index";
66
    }
67
 
68
    public String create() {
69
        return index();
70
    }
71
 
72
    public String createRecharge(){
73
        try {
7080 anupam.sin 74
            //TODO REmove this
75
            setStoreId("1");
76
            setCircleId("5");
77
            //
7073 anupam.sin 78
            TransactionClient tc = new TransactionClient();
7080 anupam.sin 79
            List<RechargePlan> plans = tc.getClient().getPlansForOperator(Long.parseLong(mobileOperator));
7073 anupam.sin 80
            List<String> planNameList = new ArrayList<String>();
81
            if (plans == null || plans.isEmpty()) {
82
                setPlan("");
83
            } else {
84
                for (RechargePlan tempPlan : plans) {
85
                    planNameList.add(tempPlan.getName());
86
                }
87
                if (!planNameList.contains(plan)) {
7080 anupam.sin 88
                    errorMessage = "OperatorId : " + mobileOperator + " and plan : " + plan + " do not match";
89
                    log.warn("OperatorId : " + mobileOperator + " and plan : " + plan + " do not match");
7073 anupam.sin 90
                    return "recharge-redirect";
91
                }
92
            }
93
 
94
            RechargeTransaction rechargeOrder = new RechargeTransaction();
7080 anupam.sin 95
            rechargeOrder.setAmount(Long.parseLong(amount));
7073 anupam.sin 96
            rechargeOrder.setEmail(email);
97
            rechargeOrder.setDeviceNum(number.trim());
98
            rechargeOrder.setPlan(plan);
7080 anupam.sin 99
            if(deviceType.equals("1")) {
100
                rechargeOrder.setOperatorId(Long.parseLong(mobileOperator));
101
            } else if (deviceType.equals("2")) {
102
                rechargeOrder.setOperatorId(Long.parseLong(dthOperator));
103
            }
104
 
7073 anupam.sin 105
            rechargeOrder.setIsFrc(Long.parseLong(rechargeType) == 1 ? false : true);
7080 anupam.sin 106
            rechargeOrder.setCafNum(cafNum);
107
            rechargeOrder.setSimNum(simNum);
7073 anupam.sin 108
 
7080 anupam.sin 109
            rechargeOrder.setDiscount(0);
110
            TransactionClient tcl = new TransactionClient();
111
            if(rechargeOrder.isIsFrc()) {
112
                for (FRC frc : tcl.getClient().getFRCs(Long.parseLong(circleId), rechargeOrder.getOperatorId())) {
113
                    if(frc.getDenomination() == rechargeOrder.getAmount()) {
114
                        if(frc.getMaxDiscount() < Long.parseLong(discount)) {
115
                            errorMessage = "MaxDiscount : " + frc.getMaxDiscount() + " is less than discount amount entered";
116
                            log.warn("MaxDiscount : " + frc.getMaxDiscount() + " is less than discount amount entered");
117
                            return "recharge-redirect";
118
                        } else {
119
                            rechargeOrder.setDiscount(Double.parseDouble(discount));
120
                            break;
121
                        }
122
                    }
123
                }
124
            }
125
            rechargeOrder.setAlternateNumber(altNum);
126
 
127
            /**
128
             *  WHAT TODO ABOUT THIS???
129
             */
130
            rechargeOrder.setStoreId(Long.parseLong(storeId));
131
 
132
 
7073 anupam.sin 133
            /****************************************************
7080 anupam.sin 134
             *  TODO        *
135
             * rechargeORder.setCircleId(circle);               *
136
             *          *
7073 anupam.sin 137
             ****************************************************/
138
 
139
            rechargeOrder.setIpAddress(remoteAddr(request));
140
            TransactionClient tc1 = new TransactionClient();
141
            rechargeOrder = tc1.getClient().createRechargeTransaction(rechargeOrder);
142
            setRechargeOrderId(rechargeOrder.getId());
143
 
144
        } catch (Exception e) {
145
            log.error("Unable to create recharge order", e);
146
            errorMessage = "Oops! There seems to be a problem. Please try after some time";
147
            return "recharge-redirect";
148
        }
7080 anupam.sin 149
        return "recharge-result";
7073 anupam.sin 150
    }
151
 
152
    public String getOperatorName() {
153
        String operatorName = null;
7080 anupam.sin 154
        if(deviceType.equals("1")){
155
            operatorName = HomeController.getMobileProvidersMap().get(Long.parseLong(mobileOperator)); 
7073 anupam.sin 156
        }
7080 anupam.sin 157
        if(deviceType.equals("2")){
158
            operatorName = HomeController.getDthProvidersMap().get(Long.parseLong(dthOperator));    
7073 anupam.sin 159
        }
160
        if(operatorName == null){
161
            operatorName = "N/A";   
162
        }
163
        return operatorName;
164
    }
165
 
166
    public String remoteAddr(HttpServletRequest request) {
167
        String remoteAddr = "";
168
        String x;
169
        x = request.getHeader(HEADER_X_FORWARDED_FOR);
170
        if (x != null && !x.isEmpty()) {
171
            remoteAddr = x;
172
            int idx = remoteAddr.lastIndexOf(',');
173
            if (idx > -1) {
174
                remoteAddr = remoteAddr.substring(idx + 1).trim();
175
            }
176
        } else {
177
            remoteAddr = request.getRemoteAddr();
178
        }
179
        return remoteAddr;
180
    }
181
 
182
    private String validateFields() {
183
        if(amount == null || amount == "") {
184
            log.warn("Amount received is empty or null");
185
            return "Amount cannot be empty";
186
        }
187
 
188
        if(rechargeType == null || rechargeType == "") {
189
            log.warn("rechargeType received is empty or null");
190
            return "Oops! There seems to be a problem. Please try after some time";
191
        }
192
 
193
        if(email == null || email == "") {
194
            log.warn("Email received is empty or null");
195
            return "Email address cannot be empty";
196
        }
197
 
198
        try {
199
            InternetAddress emailAdd = new InternetAddress(email);
200
            emailAdd.validate();
201
        } catch (AddressException e1) {
202
            log.warn("Invalid email address : " + email, e1);
203
            return "ERROR : Invalid email address.";
204
        }
205
 
206
        if (RechargeType.findByValue(Integer.parseInt(this.rechargeType)) == RechargeType.DTH) {
207
            if (Long.parseLong(totalAmount) < 250 || Long.parseLong(totalAmount) > 2000) {
7080 anupam.sin 208
//                if(operator.equals("1")) {
209
//                    return "DishTv recharge amount should be between Rs.250 and Rs.2000";
210
//                }
7073 anupam.sin 211
 
212
                if (!(Long.parseLong(totalAmount) >= 200 && Long.parseLong(totalAmount) < 250)) {
213
                    return "DTH recharge amount should be between Rs.200 and Rs.2000";
214
                }
215
            }
216
 
217
        } else if (RechargeType.findByValue(Integer.parseInt(this.rechargeType)) == RechargeType.MOBILE) {
218
            if (Long.parseLong(totalAmount) < 10 || Long.parseLong(totalAmount) > 1000) {
219
                return "Recharge amount should be between Rs.10 and Rs.1000";
220
            }
221
            if (number.length() != 10) {
222
                return "Number should be of 10 digits";
223
            }
224
 
225
        } else {
226
            log.warn("Invalid rechargeType : " + rechargeType);
227
            return "Oops! There seems to be a problem. Please try after some time";
228
        }
229
 
7080 anupam.sin 230
//        if (operator == null || operator == "") {
231
//            log.warn("Invalid operator : " + operator);
232
//            return "Oops! There seems to be a problem. Please try after some time";
233
//        }
7073 anupam.sin 234
        return "SUCCESS";
235
    }
236
 
237
    public String getAmount() {
238
        return amount;
239
    }
240
    public void setAmount(String amount) {
241
        this.amount = amount;
242
    }
243
 
244
    public void setDthamount(String amount) {
245
        this.amount = amount;
246
    }
7080 anupam.sin 247
 
7073 anupam.sin 248
    public String getNumber() {
249
        return number;
250
    }
251
    public void setNumber(String number) {
252
        this.number = number;
253
    }
254
 
255
    public void setDthnumber(String dthnumber) {
256
        this.number = dthnumber;
257
    }
258
 
259
 
260
    public String getEmail() {
261
        return email;
262
    }
263
    public void setEmail(String email) {
264
        this.email = email;
265
    }
266
 
267
    public String getRechargeType() {
268
        return rechargeType;
269
    }
270
 
271
    public void setRechargeType(String rechargeType) {
272
        this.rechargeType = rechargeType;
273
    }
274
 
275
    public void setMessage(String message) {
276
        this.message = message;
277
    }
278
 
279
    public String getMessage() {
280
        return message;
281
    }
282
 
283
    public long getRechargeOrderId() {
284
        return rechargeOrderId;
285
    }
286
 
287
    public void setRechargeOrderId(long l) {
288
        this.rechargeOrderId = l;
289
    }
290
 
291
    public String getTotalAmount() {
292
        return totalAmount;
293
    }
294
 
295
    public void setTotalAmount(String amount) {
296
        this.totalAmount  = amount;
297
 
298
    }
299
 
300
    public String getPlan() {
301
        return plan;
302
    }
303
 
304
    public void setPlan(String plan) {
305
        this.plan = plan;
306
    }
307
 
308
    public String getErrorMessage() {
309
        return errorMessage;
310
    }
311
 
312
    public void setErrorMessage(String errorMessage) {
313
        this.errorMessage = errorMessage;
314
    }
315
 
316
    public void setDiscountCode(String discountCode) {
317
        this.couponCode = discountCode;
318
    }
319
 
320
    public String getCouponCode() {
321
        return couponCode;
322
    }
323
 
324
    public void setCouponCode(String couponCode) {
325
        this.couponCode = couponCode;
326
    }
327
 
328
    public void setCouponAmount(long couponAmount) {
329
        this.couponAmount = couponAmount;
330
    }
331
 
332
    public long getCouponAmount() {
333
        return couponAmount;
334
    }
335
 
336
    public void setCouponMessage(String couponMessage) {
337
        this.couponMessage = couponMessage;
338
    }
339
 
340
    public String getCouponMessage() {
341
        return couponMessage;
342
    }
343
 
344
    public void setHash(String hash) {
345
        this.hiddenUserId = hash;
346
    }
347
 
348
    public String getHiddenUserId() {
349
        return hiddenUserId;
350
    }
351
 
352
    public String getDeviceType() {
353
        return deviceType;
354
    }
355
 
356
    public void setDeviceType(String deviceType) {
357
        this.deviceType = deviceType;
358
    }
359
 
360
    public String getStoreId() {
361
        return storeId;
362
    }
363
 
364
    public void setStoreId(String storeId) {
365
        this.storeId = storeId;
366
    }
367
 
368
    public String getCafNum() {
369
        return cafNum;
370
    }
371
 
372
    public void setCafNum(String cafNum) {
373
        this.cafNum = cafNum;
374
    }
375
 
376
    public String getSimNum() {
377
        return simNum;
378
    }
379
 
380
    public void setSimNum(String simNum) {
381
        this.simNum = simNum;
382
    }
383
 
384
    public String getName() {
385
        return name;
386
    }
387
 
388
    public void setName(String name) {
389
        this.name = name;
390
    }
7080 anupam.sin 391
 
392
    public void setAltNum(String altNum) {
393
        this.altNum = altNum;
394
    }
395
 
396
    public String getAltNum() {
397
        return altNum;
398
    }
399
 
400
    public String getMobileOperator() {
401
        return mobileOperator;
402
    }
403
 
404
    public void setMobileOperator(String mobileOperator) {
405
        this.mobileOperator = mobileOperator;
406
    }
407
 
408
    public String getDthOperator() {
409
        return dthOperator;
410
    }
411
 
412
    public void setDthOperator(String dthOperator) {
413
        this.dthOperator = dthOperator;
414
    }
415
 
416
    public void setDiscount(String discount) {
417
        if(discount == null || discount.isEmpty()) {
418
            this.discount = "0";
419
        } else {
420
            this.discount = discount;
421
        }
422
    }
423
 
424
    public String getDiscount() {
425
        return discount;
426
    }
427
 
428
    public void setCircleId(String circleId) {
429
        this.circleId = circleId;
430
    }
431
 
432
    public String getCircleId() {
433
        return circleId;
434
    }
7073 anupam.sin 435
}