Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
3389 varun.gupt 1
package in.shop2020.support.controllers;
2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
6
import in.shop2020.model.v1.user.UserContextService;
7
import in.shop2020.model.v1.user.PromotionService.Client;
8
import in.shop2020.model.v1.user.Coupon;
9
import in.shop2020.support.utils.ReportsUtils;
10
import in.shop2020.thrift.clients.PromotionClient;
11
import in.shop2020.thrift.clients.UserClient;
12
 
13
import javax.servlet.http.HttpServletRequest;
14
import javax.servlet.http.HttpSession;
15
 
16
import org.apache.struts2.convention.annotation.InterceptorRef;
17
import org.apache.struts2.convention.annotation.InterceptorRefs;
3936 chandransh 18
import org.apache.struts2.convention.annotation.Result;
19
import org.apache.struts2.convention.annotation.Results;
3389 varun.gupt 20
import org.apache.struts2.interceptor.ServletRequestAware;
6360 amit.gupta 21
import org.apache.velocity.util.introspection.MethodMap.AmbiguousException;
5148 varun.gupt 22
import org.json.JSONException;
3389 varun.gupt 23
import org.json.JSONObject;
24
import org.slf4j.Logger;
25
import org.slf4j.LoggerFactory;
26
 
27
@InterceptorRefs({
28
    @InterceptorRef("defaultStack"),
29
    @InterceptorRef("login")
30
})
3936 chandransh 31
@Results({
32
    @Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})
33
})
3389 varun.gupt 34
public class PromotionsController implements ServletRequestAware {
35
 
36
	private static Logger log = LoggerFactory.getLogger(PromotionsController.class);
37
 
38
	private HttpServletRequest request;
39
	private HttpSession session;
40
	private Client promotionClient;
41
	private UserContextService.Client userClient;
42
 
43
	private List<CouponInfo> coupons;
6360 amit.gupta 44
	private List<VoucherInfo> vouchers;
3389 varun.gupt 45
 
46
	@Override
47
	public void setServletRequest(HttpServletRequest req) {
48
		this.request = req;
49
		this.session = req.getSession();
50
	}
51
 
52
	public String index() {
5149 varun.gupt 53
        if (!ReportsUtils.canAccessReport((Long) session.getAttribute(ReportsUtils.ROLE), request.getServletPath()))	{
54
            return "authfail";
55
        }
3389 varun.gupt 56
		try {
57
			PromotionClient promotionServiceClient = new PromotionClient();
58
			promotionClient = promotionServiceClient.getClient();
59
 
60
			UserClient userServiceClient = new UserClient();
61
			userClient = userServiceClient.getClient();
62
 
63
			coupons = new ArrayList<CouponInfo>();
64
			CouponInfo couponInfo;
65
 
6360 amit.gupta 66
			long voucherIssued = 0;
67
			long voucherRedeemed = 0;
68
			long voucherInCart = 0;
69
			double voucherAmountRedeemed = 0d;
70
 
3389 varun.gupt 71
			for (Coupon coupon: promotionClient.getActiveCoupons())	{
6360 amit.gupta 72
				if(!promotionClient.isGiftVoucher(coupon.getCouponCode())) {
73
					try	{
74
						couponInfo = new CouponInfo(coupon.getCouponCode());
75
						couponInfo.setPaymentsCount(promotionClient.getSuccessfulPaymentCountForCoupon(coupon.getCouponCode()));
76
						couponInfo.setCartsCount(userClient.getCartsWithCouponCount(coupon.getCouponCode()));
5148 varun.gupt 77
 
6360 amit.gupta 78
						String args = coupon.getArguments();
79
						String description;
5148 varun.gupt 80
 
6360 amit.gupta 81
						if(args == null)	{
82
							description = promotionClient.getRuleDocString(coupon.getPromotion().getRuleExecutionSrc());
83
							couponInfo.setDescription("<pre>" + description + "</pre>");
84
 
85
						} else	{
86
							JSONObject argsJSON = new JSONObject(args);
87
 
88
							description = "Rs." + argsJSON.getString("discount");
89
							description += " off on " + argsJSON.getString("handset_display_name");
90
							description += " (Max " + argsJSON.getString("usage_limit") + " uses)";
91
 
92
							couponInfo.setDescription("<i>" + description + "</i>");
93
						}
94
						coupons.add(couponInfo);
5148 varun.gupt 95
 
6360 amit.gupta 96
					} catch (JSONException e) {
97
						log.error("" + e);
5148 varun.gupt 98
					}
6360 amit.gupta 99
				} else {
100
					try {
101
						voucherIssued++;
102
						long redeemeCount = promotionClient.getSuccessfulPaymentCountForCoupon(coupon.getCouponCode());
103
						voucherRedeemed += redeemeCount;
104
						voucherInCart += userClient.getCartsWithCouponCount(coupon.getCouponCode());
105
						JSONObject argsJSON = new JSONObject(coupon.getArguments());
106
						if(redeemeCount > 0){
107
							voucherAmountRedeemed += argsJSON.getDouble("discount");
108
						}
109
					} catch (Exception e) {
110
						log.error("" + e);
111
					}
3389 varun.gupt 112
				}
6360 amit.gupta 113
				VoucherInfo v = new VoucherInfo("Recharge Gift Voucher");
114
				v.setTotalAmountRedeemed(voucherAmountRedeemed);
115
				v.setTotalVoucherIssued(voucherIssued);
116
				v.setTotalVouchersRedeemed(voucherRedeemed);
117
				v.setTotalVouchersInCart(voucherInCart);
118
				vouchers = new ArrayList<VoucherInfo>();
119
				vouchers.add(v);
3389 varun.gupt 120
			}
121
		} catch (Exception e) {
5148 varun.gupt 122
			log.error("" + e);
3389 varun.gupt 123
		}
124
		return "index";
125
	}
126
 
127
	public List<CouponInfo> getActiveCoupons()	{
128
		return coupons;
129
	}
6360 amit.gupta 130
 
131
	public List<VoucherInfo> getActiveGiftVouchers()	{
132
		return vouchers;
133
	}
3389 varun.gupt 134
 
135
	public static class CouponInfo {
136
		private String code;
137
		private long paymentsCount;
138
		private long cartsCount;
139
		private String description;
140
 
141
		public CouponInfo(String code)	{
142
			this.code = code;
143
			paymentsCount = -1;
144
			cartsCount = -1;
145
			description = null;
146
		}
147
 
148
		public void setPaymentsCount(long paymentsCount)	{
149
			this.paymentsCount = paymentsCount;
150
		}
151
 
152
		public void setCartsCount(long cartsCount)	{
153
			this.cartsCount = cartsCount;
154
		}
155
 
156
		public void setDescription(String desc)	{
157
			description = desc;
158
		}
159
 
160
	 	public String getCode()	{
161
			return this.code;
162
		}
163
 
164
		public long getPaymentsCount()	{
165
			return this.paymentsCount;
166
		}
167
 
168
		public long getCartsCount()	{
169
			return this.cartsCount;
170
		}
171
 
172
		public String getDescription()	{
173
			return description;
174
		}
175
 
176
		public String toString()	{
177
			return code + " " + paymentsCount + " " + cartsCount + " " + description;
178
		}
179
	}
6360 amit.gupta 180
 
181
	public static class VoucherInfo {
182
		private String promotionName;
183
		private long totalVoucherIssued;
184
		private long totalVouchersInCart;
185
		private long totalVouchersRedeemed;
186
		private double totalAmountRedeemed;
187
 
188
		public VoucherInfo(String promotionName){
189
			this.promotionName = promotionName;
190
			this.totalVoucherIssued = 0;
191
			this.totalAmountRedeemed = 0d;
192
			this.totalVouchersInCart = 0;
193
		}
194
 
195
		public String getPromotionName() {
196
			return promotionName;
197
		}
198
		public void setPromotionName(String promotionName) {
199
			this.promotionName = promotionName;
200
		}
201
		public long getTotalVoucherIssued() {
202
			return totalVoucherIssued;
203
		}
204
		public void setTotalVoucherIssued(long totalVoucherIssued) {
205
			this.totalVoucherIssued = totalVoucherIssued;
206
		}
207
		public long getTotalVouchersInCart() {
208
			return totalVouchersInCart;
209
		}
210
		public void setTotalVouchersInCart(long totalVouchersInCart) {
211
			this.totalVouchersInCart = totalVouchersInCart;
212
		}
213
		public long getTotalVouchersRedeemed() {
214
			return totalVouchersRedeemed;
215
		}
216
		public void setTotalVouchersRedeemed(long totalVouchersRedeemed) {
217
			this.totalVouchersRedeemed = totalVouchersRedeemed;
218
		}
219
		public double getTotalAmountRedeemed() {
220
			return totalAmountRedeemed;
221
		}
222
		public void setTotalAmountRedeemed(double totalAmountRedeemed) {
223
			this.totalAmountRedeemed = totalAmountRedeemed;
224
		}
225
 
226
 
227
	}
3389 varun.gupt 228
}