Subversion Repositories SmartDukaan

Rev

Rev 6500 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6497 amit.gupta 1
package in.shop2020.support.controllers;
2
 
3
import in.shop2020.model.v1.user.Coupon;
4
import in.shop2020.model.v1.user.PromotionException;
5
import in.shop2020.support.utils.ReportsUtils;
6
import in.shop2020.thrift.clients.PromotionClient;
7
 
8
import java.text.DateFormat;
9
import java.text.SimpleDateFormat;
10
import java.util.ArrayList;
11
import java.util.Calendar;
12
import java.util.Date;
13
import java.util.List;
14
 
15
import javax.servlet.ServletContext;
16
import javax.servlet.http.HttpServletRequest;
17
import javax.servlet.http.HttpServletResponse;
18
import javax.servlet.http.HttpSession;
19
 
20
import org.apache.struts2.convention.annotation.InterceptorRef;
21
import org.apache.struts2.convention.annotation.InterceptorRefs;
22
import org.apache.struts2.convention.annotation.Result;
23
import org.apache.struts2.convention.annotation.Results;
24
import org.apache.struts2.interceptor.ServletRequestAware;
25
import org.apache.struts2.util.ServletContextAware;
26
import org.apache.thrift.TException;
27
import org.json.JSONException;
28
import org.json.JSONObject;
29
import org.slf4j.Logger;
30
import org.slf4j.LoggerFactory;
31
 
32
 
33
@InterceptorRefs({
34
    @InterceptorRef("defaultStack"),
35
    @InterceptorRef("login")
36
})
37
 
38
@Results({
39
    @Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"}),
40
	@Result(name="redirect", type="redirectAction", location = "coupon-gvs",  params={"statusCode", "301"})
41
})
42
public class CouponGvsController implements ServletRequestAware, ServletContextAware {
43
 
44
    private static Logger logger = LoggerFactory.getLogger(CouponGvsController.class);
45
 
46
    private HttpServletRequest request;
47
    private HttpServletResponse response;
48
    private HttpSession session;
49
    private ServletContext context;
50
 
51
    private PromotionClient psc;
52
    private in.shop2020.model.v1.user.PromotionService.Client pClient;
53
 
54
    private final DateFormat formatter = new SimpleDateFormat("EEE, dd-MMM-yyyy hh:mm a");
55
 
56
 
57
 
58
 
59
	private String coupon;
60
    private long type;
61
    private Long amount;
62
    private String userEmail;
63
 
64
    public CouponGvsController(){
65
	    try {
66
            psc = new PromotionClient();
67
            pClient = psc.getClient();
68
        } catch (Exception e) {
69
            logger.error("Error connecting to promotion service", e);
70
        }
71
	}
72
 
73
 
74
	public String index() {
75
        if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {
76
            return "authfail";
77
        }
78
        return "authsuccess";
79
 
80
	}
81
 
82
	public String create(){
83
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {
84
			return "authfail";
85
		}
86
		//Coupon would we valid till 2 months of cretaion.
87
		Calendar cal = Calendar.getInstance();
88
		cal.add(Calendar.DATE, 60);
89
		Date endOn = cal.getTime();
90
		try {
91
			coupon = pClient.createCoupon(type, endOn.getTime(), userEmail, amount, false, 1);
92
		} catch (Exception e){
93
			return "create-failure";
94
		}
95
		return "authsuccess";	
96
	}
97
 
98
 
99
	@Override
100
	public void setServletContext(ServletContext context) {
101
		this.context= context;
102
	}
103
 
104
 
105
	@Override
106
	public void setServletRequest(HttpServletRequest req) {
107
	       this.request = req;
108
	        this.session = req.getSession();
109
	}
110
 
111
	//Crea
112
	public String getCoupon() {
113
		return coupon;
114
 	}
115
 
116
 
117
	public void setCoupon(String coupon) {
118
		this.coupon = coupon;
119
	}
120
 
121
 
122
	public long getType() {
123
		return type;
124
	}
125
 
126
 
127
	public void setType(long type) {
128
		this.type = type;
129
	}
130
 
131
 
132
	public Long getAmount() {
133
		return amount;
134
	}
135
 
136
 
137
	public void setAmount(Long amount) {
138
		this.amount = amount;
139
	}
140
 
141
 
142
	public String getUserEmail() {
143
		return userEmail;
144
	}
145
 
146
	public void setUserEmail(String userEmail) {
147
		this.userEmail = userEmail;
148
	}
149
 
150
	public List<Coupon> getCoupons() {
151
		try {
152
			return pClient.getActiveCodes(27l);
153
		} catch (PromotionException e) {
154
			// TODO Auto-generated catch block
155
			e.printStackTrace();
156
		} catch (TException e) {
157
			// TODO Auto-generated catch block
158
			e.printStackTrace();
159
		}
160
		return null;
161
	}
162
 
163
	public List<String> getArguments(Coupon coupon){
164
		List<String> result = new ArrayList<String>();
165
		try {
166
			JSONObject obj = new JSONObject(coupon.getArguments());
167
			result.add(obj.getJSONArray("emails").getString(0));
168
			result.add(obj.getString("discount"));
169
		} catch (JSONException e) {
170
			// TODO Auto-generated catch block
171
			e.printStackTrace();
172
		}
173
		return result;
174
	}
175
 
176
	public void setId(String id) {
177
		this.coupon = id;
178
	}
179
 
180
	public String destroy(){
181
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getServletPath().split("/")[1])) {
182
			return "athfail";
183
		}
184
		try {
185
			pClient.deleteCoupon(coupon);
186
		} catch (PromotionException e) {
187
			// TODO Auto-generated catch block
188
			e.printStackTrace();
189
		} catch (TException e) {
190
			// TODO Auto-generated catch block
191
			e.printStackTrace();
192
		}
193
		return "redirect"; 
194
	}
195
	public String show(){
196
		return destroy(); 
197
	}
198
}