Rev 6360 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.support.controllers;import in.shop2020.model.v1.user.Coupon;import in.shop2020.model.v1.user.PromotionService.Client;import in.shop2020.model.v1.user.UserContextService;import in.shop2020.support.utils.ReportsUtils;import in.shop2020.thrift.clients.PromotionClient;import in.shop2020.thrift.clients.UserClient;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.convention.annotation.InterceptorRef;import org.apache.struts2.convention.annotation.InterceptorRefs;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;import org.apache.struts2.interceptor.ServletRequestAware;import org.json.JSONException;import org.json.JSONObject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;@InterceptorRefs({@InterceptorRef("defaultStack"),@InterceptorRef("login")})@Results({@Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})})public class PromotionsController implements ServletRequestAware {private static Logger log = LoggerFactory.getLogger(PromotionsController.class);private HttpServletRequest request;private HttpSession session;private Client promotionClient;private UserContextService.Client userClient;private List<CouponInfo> coupons;private List<VoucherInfo> vouchers;@Overridepublic void setServletRequest(HttpServletRequest req) {this.request = req;this.session = req.getSession();}public String index() {if (!ReportsUtils.canAccessReport((Long) session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {return "authfail";}try {PromotionClient promotionServiceClient = new PromotionClient();promotionClient = promotionServiceClient.getClient();UserClient userServiceClient = new UserClient();userClient = userServiceClient.getClient();coupons = new ArrayList<CouponInfo>();CouponInfo couponInfo;long voucherIssued = 0;long voucherRedeemed = 0;long voucherInCart = 0;double voucherAmountRedeemed = 0d;for (Coupon coupon: promotionClient.getActiveCoupons()) {if(!promotionClient.isGiftVoucher(coupon.getCouponCode())) {try {couponInfo = new CouponInfo(coupon.getCouponCode());couponInfo.setPaymentsCount(promotionClient.getSuccessfulPaymentCountForCoupon(coupon.getCouponCode()));couponInfo.setCartsCount(userClient.getCartsWithCouponCount(coupon.getCouponCode()));String args = coupon.getArguments();String description;if(args == null) {description = promotionClient.getRuleDocString(coupon.getPromotion().getRuleExecutionSrc());couponInfo.setDescription("<pre>" + description + "</pre>");} else {JSONObject argsJSON = new JSONObject(args);description = "Rs." + argsJSON.getString("discount");description += " off on " + argsJSON.getString("handset_display_name");description += " (Max " + argsJSON.getString("usage_limit") + " uses)";couponInfo.setDescription("<i>" + description + "</i>");}coupons.add(couponInfo);} catch (JSONException e) {log.error("" + e);}} else if (coupon.getPromotion().getId() == 26){try {voucherIssued++;long redeemedCount = promotionClient.getSuccessfulPaymentCountForCoupon(coupon.getCouponCode());voucherRedeemed += redeemedCount;voucherInCart += userClient.getCartsWithCouponCount(coupon.getCouponCode());JSONObject argsJSON = new JSONObject(coupon.getArguments());if(redeemedCount > 0){voucherAmountRedeemed += argsJSON.getDouble("discount");}} catch (Exception e) {log.error("" + e);}}VoucherInfo v = new VoucherInfo("Recharge Gift Voucher");v.setTotalAmountRedeemed(voucherAmountRedeemed);v.setTotalVoucherIssued(voucherIssued);v.setTotalVouchersRedeemed(voucherRedeemed);v.setTotalVouchersInCart(voucherInCart);vouchers = new ArrayList<VoucherInfo>();vouchers.add(v);}} catch (Exception e) {log.error("" + e);}return "index";}public List<CouponInfo> getActiveCoupons() {return coupons;}public List<VoucherInfo> getActiveGiftVouchers() {return vouchers;}public static class CouponInfo {private String code;private long paymentsCount;private long cartsCount;private String description;public CouponInfo(String code) {this.code = code;paymentsCount = -1;cartsCount = -1;description = null;}public void setPaymentsCount(long paymentsCount) {this.paymentsCount = paymentsCount;}public void setCartsCount(long cartsCount) {this.cartsCount = cartsCount;}public void setDescription(String desc) {description = desc;}public String getCode() {return this.code;}public long getPaymentsCount() {return this.paymentsCount;}public long getCartsCount() {return this.cartsCount;}public String getDescription() {return description;}public String toString() {return code + " " + paymentsCount + " " + cartsCount + " " + description;}}public static class VoucherInfo {private String promotionName;private long totalVoucherIssued;private long totalVouchersInCart;private long totalVouchersRedeemed;private double totalAmountRedeemed;public VoucherInfo(String promotionName){this.promotionName = promotionName;this.totalVoucherIssued = 0;this.totalAmountRedeemed = 0d;this.totalVouchersInCart = 0;}public String getPromotionName() {return promotionName;}public void setPromotionName(String promotionName) {this.promotionName = promotionName;}public long getTotalVoucherIssued() {return totalVoucherIssued;}public void setTotalVoucherIssued(long totalVoucherIssued) {this.totalVoucherIssued = totalVoucherIssued;}public long getTotalVouchersInCart() {return totalVouchersInCart;}public void setTotalVouchersInCart(long totalVouchersInCart) {this.totalVouchersInCart = totalVouchersInCart;}public long getTotalVouchersRedeemed() {return totalVouchersRedeemed;}public void setTotalVouchersRedeemed(long totalVouchersRedeemed) {this.totalVouchersRedeemed = totalVouchersRedeemed;}public double getTotalAmountRedeemed() {return totalAmountRedeemed;}public void setTotalAmountRedeemed(double totalAmountRedeemed) {this.totalAmountRedeemed = totalAmountRedeemed;}}}