Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21090 kshitij.so 1
package in.shop2020.support.controllers;
2
 
3
import java.util.Arrays;
4
import java.util.List;
5
 
6
import in.shop2020.model.v1.order.Pmsa;
7
import in.shop2020.model.v1.order.PmsaSearchFilter;
8
import in.shop2020.model.v1.order.TransactionService.Client;
9
import in.shop2020.support.utils.ReportsUtils;
10
import in.shop2020.thrift.clients.TransactionClient;
11
 
12
import javax.mail.internet.InternetAddress;
13
import javax.servlet.ServletContext;
14
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletResponse;
16
import javax.servlet.http.HttpSession;
17
 
18
import org.apache.commons.lang.xwork.StringUtils;
19
import org.apache.struts2.convention.annotation.InterceptorRef;
20
import org.apache.struts2.convention.annotation.InterceptorRefs;
21
import org.apache.struts2.convention.annotation.Result;
22
import org.apache.struts2.convention.annotation.Results;
23
import org.apache.struts2.interceptor.ServletRequestAware;
24
import org.apache.struts2.interceptor.ServletResponseAware;
25
import org.apache.struts2.util.ServletContextAware;
26
import org.apache.thrift.TException;
27
import org.apache.thrift.transport.TTransportException;
28
import org.slf4j.Logger;
29
import org.slf4j.LoggerFactory;
30
 
31
import com.opensymphony.xwork2.ValidationAwareSupport;
32
 
33
@SuppressWarnings("serial")
34
 
35
@InterceptorRefs({
36
	@InterceptorRef("defaultStack"),
37
	@InterceptorRef("login")
38
})
39
@Results({
40
	@Result(name = "redirect", location = "${url}", type = "redirect"),
41
	@Result(name="authsuccess", type="redirectAction", params = {"actionName" , "reports"})
42
})
43
public class PmsaController extends ValidationAwareSupport implements ServletRequestAware ,ServletResponseAware, ServletContextAware{
44
 
45
	private static Logger logger = LoggerFactory.getLogger(PmsaController.class);
46
 
47
	private HttpServletRequest request;
48
	private HttpSession session;
49
	private HttpServletResponse response;
50
	private String id;
51
	private String name;
52
	private String refererEmail;
53
	private String phone;
54
	private String address;
55
	private String state;
56
	private String pincode;
57
	private String activated;
58
	private String level;
59
	private String associateEmail;
60
	private String result;
61
	private String code;
62
	private String l1Email;
63
	private List<Pmsa> searchResults;
64
	private Pmsa pmsaUser;
65
	private String pmsa_id;
66
	private String referrerEmail;
67
	private List<String> levels;
68
	private String customH3;
69
	private List<Long> stats;
70
 
71
	public List<Long> getStats() {
72
		return stats;
73
	}
74
 
75
	public void setStats(List<Long> stats) {
76
		this.stats = stats;
77
	}
78
 
79
	public String getCustomH3() {
80
		return customH3;
81
	}
82
 
83
	public void setCustomH3(String customH3) {
84
		this.customH3 = customH3;
85
	}
86
 
87
	public List<String> getLevels() {
88
		return levels;
89
	}
90
 
91
	public void setLevels(List<String> levels) {
92
		this.levels = levels;
93
	}
94
 
95
	public String getReferrerEmail() {
96
		return referrerEmail;
97
	}
98
 
99
	public void setReferrerEmail(String referrerEmail) {
100
		this.referrerEmail = referrerEmail;
101
	}
102
 
103
	public String getPmsa_id() {
104
		return pmsa_id;
105
	}
106
 
107
	public void setPmsa_id(String pmsa_id) {
108
		this.pmsa_id = pmsa_id;
109
	}
110
 
111
	public Pmsa getPmsaUser() {
112
		return pmsaUser;
113
	}
114
 
115
	public void setPmsaUser(Pmsa pmsaUser) {
116
		this.pmsaUser = pmsaUser;
117
	}
118
 
119
	public List<Pmsa> getSearchResults() {
120
		return searchResults;
121
	}
122
 
123
	public void setSearchResults(List<Pmsa> searchResults) {
124
		this.searchResults = searchResults;
125
	}
126
 
127
	public String getL1Email() {
128
		return l1Email;
129
	}
130
 
131
	public void setL1Email(String l1Email) {
132
		this.l1Email = l1Email;
133
	}
134
 
135
	public String getL2Email() {
136
		return l2Email;
137
	}
138
 
139
	public void setL2Email(String l2Email) {
140
		this.l2Email = l2Email;
141
	}
142
 
143
	private String l2Email;
144
 
145
	public String getCode() {
146
		return code;
147
	}
148
 
149
	public void setCode(String code) {
150
		this.code = code;
151
	}
152
 
153
	public String index() throws TException {
154
		if (!ReportsUtils.canAccessReport((Long) session.getAttribute(ReportsUtils.ROLE),request.getServletPath())) {
155
			return "authfail";
156
		}
157
		Client tc = new TransactionClient().getClient();
158
		stats = tc.getStatsForAssociates(getUserEmail());
159
		return "index";
160
	}
161
 
162
	public String edit() throws NumberFormatException, TException{
163
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getRequestURI().replace("/","").substring(request.getContextPath().length()-1).split("!")[0])) {
164
			logger.info(request.getRequestURI().replace("/","").substring(request.getContextPath().length()-1).split("!")[0]);
165
			return "authfail";
166
		}
167
		logger.info("id "+id);
168
		Client tc = new TransactionClient().getClient();
169
		pmsaUser = tc.getPmsaUser(Long.valueOf(id),getUserEmail());
170
		return "edit";
171
	}
172
 
173
	public String show() {
174
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getRequestURI().substring(request.getContextPath().length()).split("/")[1])) {
175
			logger.info(request.getRequestURI().substring(request.getContextPath().length()).split("/")[1]);
176
			return "authfail";
177
		}
178
		if (id.equals("pmsa-add-user")){
179
 
180
			if (referrerEmail==null || referrerEmail.isEmpty()){
181
				levels = Arrays.asList("L2","L3");
182
				referrerEmail = getUserEmail();
183
			}
184
			else{
185
				levels = Arrays.asList("L3");
186
			}
187
 
188
		}
189
		return id;
190
	}
191
 
192
	private boolean checkEmptyString(String s){
193
		if (s==null || s.trim().isEmpty()){
194
			return true;
195
		}
196
		return false;
197
	}
198
 
199
	private boolean checkEmail(String email){
200
		try{
201
			InternetAddress ia = new InternetAddress(email);
202
			ia.validate();
203
		}
204
		catch(Exception e){
205
			return false;
206
		}
207
		return true;
208
	}
209
 
210
	public String pendingUsers() throws TException{
211
		Client tc = new TransactionClient().getClient();
212
		searchResults = tc.getPendingAssociates(getUserEmail());
213
		setCustomH3("Activation Pending Users");
214
		return "pmsa-search-results";
215
	}
216
 
217
	public String recentUsers() throws TException{
218
		Client tc = new TransactionClient().getClient();
219
		searchResults = tc.getPmsaUsers(getUserEmail());
220
		setCustomH3("Recently Created Users");
221
		return "pmsa-search-results";
222
	}
223
 
224
	private boolean validate(Pmsa pmsa) throws Exception{
225
		if (checkEmptyString(pmsa.getName())){
226
			throw new Exception("Name not valid");
227
		}
228
		try{
229
			Long.valueOf(pmsa.getPhone());
230
		}
231
		catch(Exception e){
232
			throw new Exception("Phone number not valid");
233
		}
234
		if (checkEmptyString(pmsa.getPhone()) || pmsa.getPhone().length()!=10){
235
			throw new Exception("Phone number not valid 10 digit required");
236
		}
237
		if (!checkEmail(pmsa.getEmailId())){
238
			throw new Exception("Email address not valid");
239
		}
240
		if (checkEmptyString(pmsa.getAddress())){
241
			throw new Exception("Address not valid");
242
		}
243
		if (checkEmptyString(pmsa.getState())){
244
			throw new Exception("State not valid");
245
		}
246
		if (checkEmptyString(pmsa.getLevel())){
247
			throw new Exception("Level not valid");
248
		}
249
		if (!checkPincode(pmsa.getPin())){
250
			throw new Exception("Pincode not valid");
251
		}
252
		return true;
253
	}
254
 
255
	private boolean checkPincode(String pin) {
256
		if(pin.trim().length()!=6){
257
			return false;
258
		}
259
		Long long_pin;
260
		try{
261
			long_pin = Long.valueOf(pin);
262
		}
263
		catch(Exception e){
264
			return false;
265
		}
266
		if (long_pin < 110000 || long_pin >=860000){
267
			return false;
268
		}
269
		return true;
270
	}
271
 
272
	public String searchUser() throws TException{
273
		PmsaSearchFilter searchFilter = new PmsaSearchFilter();
274
		if (name !=null && !name.trim().isEmpty()){
275
			searchFilter.setName(name);
276
		}
277
		if (associateEmail !=null && !associateEmail.trim().isEmpty()){
278
			searchFilter.setEmailId(associateEmail);
279
		}
280
		if (phone !=null && !phone.trim().isEmpty()){
281
			searchFilter.setPhone(phone);
282
		}
283
		if (code !=null && !code.trim().isEmpty()){
284
			searchFilter.setCode(code);
285
		}
286
		if (l1Email !=null && !l1Email.trim().isEmpty()){
287
			searchFilter.setL1_email(l1Email);
288
		}
289
		if (l2Email !=null && !l2Email.trim().isEmpty()){
290
			searchFilter.setL2_email(l2Email);
291
		}
292
		Client tc = new TransactionClient().getClient();
293
		searchResults = tc.searchPmsa(searchFilter,getUserEmail());
294
		return "pmsa-search-results";
295
	}
296
 
297
	public String updateUser(){
298
		Pmsa pmsa = new Pmsa();
299
		pmsa.setId(Long.valueOf(pmsa_id));
300
		pmsa.setName(name);
301
		pmsa.setPhone(phone);
302
		pmsa.setEmailId(associateEmail);
303
		pmsa.setAddress(address);
304
		pmsa.setState(state);
305
		pmsa.setLevel(level);
306
		pmsa.setActivated(Boolean.valueOf(activated));
307
		pmsa.setPin(pincode);
308
		try {
309
			validate(pmsa);
310
			try{
311
				Client tc = new TransactionClient().getClient();
312
				setResult(tc.updatePmsaUser(pmsa, getUserEmail()));
313
			}
314
			catch(Exception tce){
315
				tce.printStackTrace();
316
				setResult("Service error plz try again");
317
			}
318
		} catch (Exception e) {
319
			setResult(e.getMessage());
320
		}
321
		return "pmsa-result"; 
322
	}
323
 
324
	public String addNewUser(){
325
		Pmsa pmsa = new Pmsa();
326
		pmsa.setName(name);
327
		pmsa.setPhone(phone);
328
		pmsa.setEmailId(associateEmail);
329
		pmsa.setAddress(address);
330
		pmsa.setState(state);
331
		pmsa.setLevel(level);
332
		pmsa.setActivated(Boolean.valueOf(activated));
333
		pmsa.setPin(pincode);
334
		try {
335
			validate(pmsa);
336
			try{
337
				Client tc = new TransactionClient().getClient();
338
				setResult(tc.addSalesAssociate(pmsa, referrerEmail, getUserEmail()));
339
			}
340
			catch(Exception tce){
341
				tce.printStackTrace();
342
				setResult("Service error plz try again");
343
			}
344
		} catch (Exception e) {
345
			setResult(e.getMessage());
346
		}
347
		return "pmsa-result"; 
348
	}
349
 
350
	public String getUserEmail() {
351
		return session.getAttribute(ReportsUtils.USER_EMAIL).toString();
352
	}
353
 
354
	public String getId() {
355
		return id;
356
	}
357
 
358
	public void setId(String id) {
359
		this.id = id;
360
	}
361
 
362
 
363
	public String getName() {
364
		return name;
365
	}
366
 
367
	public void setName(String name) {
368
		this.name = name;
369
	}
370
 
371
	public String getPhone() {
372
		return phone;
373
	}
374
 
375
	public void setPhone(String phone) {
376
		this.phone = phone;
377
	}
378
 
379
	public String getAddress() {
380
		return address;
381
	}
382
 
383
	public void setAddress(String address) {
384
		this.address = address;
385
	}
386
 
387
	public String getState() {
388
		return state;
389
	}
390
 
391
	public void setState(String state) {
392
		this.state = state;
393
	}
394
 
395
	public String getPincode() {
396
		return pincode;
397
	}
398
 
399
	public void setPincode(String pincode) {
400
		this.pincode = pincode;
401
	}
402
 
403
	public String getActivated() {
404
		return activated;
405
	}
406
 
407
	public void setActivated(String activated) {
408
		this.activated = activated;
409
	}
410
 
411
	public String getLevel() {
412
		return level;
413
	}
414
 
415
	public void setLevel(String level) {
416
		this.level = level;
417
	}
418
 
419
	public String getAssociateEmail() {
420
		return associateEmail;
421
	}
422
 
423
	public void setAssociateEmail(String associateEmail) {
424
		this.associateEmail = associateEmail;
425
	}
426
 
427
	public void setServletRequest(HttpServletRequest req) {
428
		this.request = req;
429
		this.session = req.getSession();        
430
	}
431
 
432
	@Override
433
	public void setServletContext(ServletContext arg0) {
434
		// TODO Auto-generated method stub
435
 
436
	}
437
 
438
	public void setServletResponse(HttpServletResponse response) {
439
		this.response = response;
440
	}
441
 
442
	public void setRefererEmail(String refererEmail) {
443
		this.refererEmail = refererEmail;
444
	}
445
 
446
	public String getRefererEmail() {
447
		return refererEmail;
448
	}
449
 
450
	public String getResult() {
451
		return result;
452
	}
453
 
454
	public void setResult(String result) {
455
		this.result = result;
456
	}
457
 
458
}