Rev 7996 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.recharge.controllers;import in.shop2020.model.v1.order.FRC;import in.shop2020.model.v1.order.HotspotStore;import in.shop2020.model.v1.order.PayMethod;import in.shop2020.model.v1.order.RechargePlan;import in.shop2020.model.v1.order.RechargeTransaction;import in.shop2020.model.v1.order.RechargeType;import in.shop2020.model.v1.order.TelecomCircle;import in.shop2020.thrift.clients.TransactionClient;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.log4j.Logger;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;@Results({@Result(name="recharge-redirect", type="redirectAction", params = {"actionName" , "home", "errorMsg", "${errorMessage}"}),@Result(name="recharge-result", type="redirectAction", params = {"actionName" , "recharge-result", "rechargeId", "${rechargeOrderId}", "paymentAmount", "${paymentAmount}"})})public class ConfirmController extends BaseController{/****/private static final long serialVersionUID = 1L;private long rechargeOrderId = 0;private String amount = "";private long paymentAmount = 0;private int payMethod = 0;private String number = "";private String email = "";private String rechargeType = "";private String deviceType = "";private String mobileOperator = "";private String dthOperator = "";private String cafNum = "";private String simNum = "";private String altNum = "";private String name = "";private String plan = "";private String discount = "";private String circlecode = "";private String message = "";private String errorMessage = "";private String couponCode = "";private String couponMessage = "";private String hiddenUserId = "";private long couponAmount = 0;private static final String DISHTV = "DISH TV";private static Logger log = Logger.getLogger(Class.class);public String index() {storeId = Long.parseLong((String) request.getSession().getAttribute("STORE_ID"));if(!hotspotStores.containsKey(storeId)){try{HotspotStore hotSpotStore = (new TransactionClient()).getClient().getHotspotStore(storeId, "");hotspotStores.put(storeId, hotSpotStore);} catch (Exception e) {log.error("Unable to get store", e);}}return "index";}public String create() {try {String loginStatus = (String) request.getSession().getAttribute("LOGGED_IN");if(loginStatus == null || !loginStatus.equals("TRUE")){return "authfail";}String result = validateFields();if(!result.equals("SUCCESS")) {errorMessage = result;return "recharge-redirect";}TransactionClient tcl = new TransactionClient();boolean discountRemove = true;Long circleId = 0l;if(circlecode != null && !circlecode.equals("")) {TransactionClient tcl1 = new TransactionClient();TelecomCircle circle = tcl1.getClient().getTelecomCircle(-1, circlecode);if(circle != null) {circleId = circle.getId();}}this.paymentAmount = Long.parseLong(amount) - Long.parseLong(discount);if(rechargeType.equals("2")) {for (FRC frc : tcl.getClient().getFRCs(circleId, Long.parseLong(mobileOperator))) {if(frc.getDenomination() == Long.parseLong(amount)) {if(frc.getMaxDiscount() < Long.parseLong(discount)) {errorMessage = "Maximum discount possible is Rs. " + frc.getMaxDiscount();log.warn("Maximum discount possible is Rs. " + frc.getMaxDiscount());return "recharge-redirect";} else {discountRemove = false;}}}if(discountRemove) {setDiscount("0");}}} catch (Exception e) {log.warn("Unable to get frc for operatorId : " + mobileOperator, e);}return index();}public String createRecharge(){try {String loginStatus = (String) request.getSession().getAttribute("LOGGED_IN");if(loginStatus == null || !loginStatus.equals("TRUE")){return "authfail";}String result = validateFields();if(!result.equals("SUCCESS")) {errorMessage = result;return "recharge-redirect";}TransactionClient tc = new TransactionClient();List<RechargePlan> plans = tc.getClient().getPlansForOperator(Long.parseLong(mobileOperator));List<String> planNameList = new ArrayList<String>();if (plans == null || plans.isEmpty()) {setPlan("");} else {for (RechargePlan tempPlan : plans) {planNameList.add(tempPlan.getName());}if (!planNameList.contains(plan)) {errorMessage = "OperatorId : " + mobileOperator + " and plan : " + plan + " do not match";log.warn("OperatorId : " + mobileOperator + " and plan : " + plan + " do not match");return "recharge-redirect";}}RechargeTransaction rechargeOrder = new RechargeTransaction();rechargeOrder.setAmount(Long.parseLong(amount));rechargeOrder.setEmail(email);rechargeOrder.setDeviceNum(number.trim());rechargeOrder.setPlan(plan);rechargeOrder.setAlternateNumber(altNum);rechargeOrder.setStoreId(Long.parseLong((String) request.getSession().getAttribute("STORE_ID")));rechargeOrder.setIpAddress(remoteAddr(request));rechargeOrder.setDeviceType(RechargeType.findByValue((int) Long.parseLong(deviceType)));rechargeOrder.setName(name);rechargeOrder.setIsFrc(Long.parseLong(rechargeType) == 1 ? false : true);rechargeOrder.setCafNum(cafNum);rechargeOrder.setSimNum(simNum);rechargeOrder.setPayMethod(PayMethod.findByValue(payMethod));if(deviceType.equals("1")) {rechargeOrder.setOperatorId(Long.parseLong(mobileOperator));} else if (deviceType.equals("2")) {rechargeOrder.setOperatorId(Long.parseLong(dthOperator));}this.paymentAmount = Long.parseLong(amount) - Long.parseLong(discount);rechargeOrder.setPaymentAmount(this.paymentAmount);Long circleId = 0l;if(circlecode != null && !circlecode.equals("")) {TransactionClient tcl1 = new TransactionClient();TelecomCircle circle = tcl1.getClient().getTelecomCircle(-1, circlecode);if(circle != null) {circleId = circle.getId();if(rechargeOrder.isIsFrc()) {Long storeCircle = (Long.parseLong((String) request.getSession().getAttribute("CIRCLE_ID")));if(storeCircle == circle.getId()) {rechargeOrder.setCircleId(storeCircle);} else {errorMessage = "FRC is not possible because this number is of : " + circle.getName() + " circle.";log.warn("FRC is not possible because this number is of : " + circle.getName() + " circle & storeCircle : " + storeCircle);return "recharge-redirect";}} else {rechargeOrder.setCircleId(circle.getId());}} else {rechargeOrder.setCircleId(0);}}rechargeOrder.setDiscount(0);TransactionClient tcl = new TransactionClient();if(rechargeOrder.isIsFrc()) {for (FRC frc : tcl.getClient().getFRCs(circleId, rechargeOrder.getOperatorId())) {if(frc.getDenomination() == rechargeOrder.getAmount()) {if(frc.getMaxDiscount() < Long.parseLong(discount)) {errorMessage = "MaxDiscount : " + frc.getMaxDiscount() + " is less than discount amount entered";log.warn("You cannot avail discount more than Rs." + frc.getMaxDiscount());return "recharge-redirect";} else {rechargeOrder.setDiscount(Double.parseDouble(discount));}}}}TransactionClient tc1 = new TransactionClient();rechargeOrder = tc1.getClient().createRechargeTransaction(rechargeOrder);setRechargeOrderId(rechargeOrder.getId());} catch (Exception e) {log.error("Unable to create recharge order", e);errorMessage = "Oops! There seems to be a problem. Please try after some time";return "recharge-redirect";}return "recharge-result";}public String getOperatorName() {String operatorName = null;if(deviceType.equals("1")){operatorName = HomeController.getMobileProvidersMap().get(Long.parseLong(mobileOperator));}if(deviceType.equals("2")){operatorName = HomeController.getDthProvidersMap().get(Long.parseLong(dthOperator));}if(operatorName == null){operatorName = "N/A";}return operatorName;}private String validateFields() {if(amount == null || amount == "") {log.warn("Amount received is empty or null");return "Amount cannot be empty";}if(rechargeType == null || rechargeType == "") {log.warn("rechargeType received is empty or null");return "Oops! There seems to be a problem. Please try after some time";}if(deviceType == null || rechargeType == "") {log.warn("rechargeType received is empty or null");return "Oops! There seems to be a problem. Please try after some time";}if (RechargeType.findByValue(Integer.parseInt(this.deviceType)) == RechargeType.DTH) {if (Long.parseLong(amount) < 250 || Long.parseLong(amount) > 2000) {if(rechargeType.equals("2") && getOperatorName().equals(DISHTV)) {return "DishTv recharge amount should be between Rs.250 and Rs.2000";}if (!(Long.parseLong(amount) >= 200 && Long.parseLong(amount) < 250)) {return "DTH recharge amount should be between Rs.200 and Rs.2000";}}} else if (RechargeType.findByValue(Integer.parseInt(this.deviceType)) == RechargeType.MOBILE) {if (Long.parseLong(amount) < 1 || Long.parseLong(amount) > 2500) {return "Recharge amount should be between Rs.1 and Rs.2500";}if (number.length() != 10) {return "Number should be of 10 digits";}} else if (payMethod != 1 || payMethod != 2){log.warn("Missing paymethod or invalid");return "Please select paymethod";}if (mobileOperator == null || mobileOperator == "") {log.warn("Invalid operator : " + mobileOperator);return "Oops! There seems to be a problem. Please try after some time";}if (dthOperator == null || dthOperator == "") {log.warn("Invalid operator : " + dthOperator);return "Oops! There seems to be a problem. Please try after some time";}return "SUCCESS";}public String getAmount() {return amount;}public void setAmount(String amount) {this.amount = amount;}public void setDthamount(String amount) {this.amount = amount;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public void setDthnumber(String dthnumber) {this.number = dthnumber;}public int getPayMethod() {return payMethod;}public long getPaymentAmount() {return paymentAmount;}public void setPayMethod(int payMethod) {this.payMethod = payMethod;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getRechargeType() {return rechargeType;}public void setRechargeType(String rechargeType) {this.rechargeType = rechargeType;}public void setMessage(String message) {this.message = message;}public String getMessage() {return message;}public long getRechargeOrderId() {return rechargeOrderId;}public void setRechargeOrderId(long l) {this.rechargeOrderId = l;}public String getPlan() {return plan;}public void setPlan(String plan) {this.plan = plan;}public String getErrorMessage() {return errorMessage;}public void setErrorMessage(String errorMessage) {this.errorMessage = errorMessage;}public void setDiscountCode(String discountCode) {this.couponCode = discountCode;}public String getCouponCode() {return couponCode;}public void setCouponCode(String couponCode) {this.couponCode = couponCode;}public void setCouponAmount(long couponAmount) {this.couponAmount = couponAmount;}public long getCouponAmount() {return couponAmount;}public void setCouponMessage(String couponMessage) {this.couponMessage = couponMessage;}public String getCouponMessage() {return couponMessage;}public void setHash(String hash) {this.hiddenUserId = hash;}public String getHiddenUserId() {return hiddenUserId;}public String getDeviceType() {return deviceType;}public void setDeviceType(String deviceType) {this.deviceType = deviceType;}public String getCafNum() {return cafNum;}public void setCafNum(String cafNum) {this.cafNum = cafNum;}public String getSimNum() {return simNum;}public void setSimNum(String simNum) {this.simNum = simNum;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void setAltNum(String altNum) {this.altNum = altNum;}public String getAltNum() {return altNum;}public String getMobileOperator() {return mobileOperator;}public void setMobileOperator(String mobileOperator) {this.mobileOperator = mobileOperator;}public String getDthOperator() {return dthOperator;}public void setDthOperator(String dthOperator) {this.dthOperator = dthOperator;}public void setDiscount(String discount) {if(discount == null || discount.isEmpty()) {this.discount = "0";} else {this.discount = discount;}}public String getDiscount() {return discount;}public void setCirclecode(String circlecode) {this.circlecode = circlecode;}public String getCirclecode() {return circlecode;}}