Subversion Repositories SmartDukaan

Rev

Rev 21092 | Go to most recent revision | Details | Compare with Previous | 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
	}
21092 kshitij.so 172
 
173
	public String myProfile() throws TException{
174
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getRequestURI().replace("/","").substring(request.getContextPath().length()-1).split("!")[0])) {
175
			logger.info(request.getRequestURI().replace("/","").substring(request.getContextPath().length()-1).split("!")[0]);
176
			return "authfail";
177
		}
178
		Client tc = new TransactionClient().getClient();
179
		pmsaUser = tc.getmypmsaprofile(getUserEmail());
180
		return "pmsa-myprofile";
181
	}
21090 kshitij.so 182
 
183
	public String show() {
184
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getRequestURI().substring(request.getContextPath().length()).split("/")[1])) {
185
			logger.info(request.getRequestURI().substring(request.getContextPath().length()).split("/")[1]);
186
			return "authfail";
187
		}
188
		if (id.equals("pmsa-add-user")){
189
 
190
			if (referrerEmail==null || referrerEmail.isEmpty()){
191
				levels = Arrays.asList("L2","L3");
192
				referrerEmail = getUserEmail();
193
			}
194
			else{
195
				levels = Arrays.asList("L3");
196
			}
197
 
198
		}
199
		return id;
200
	}
201
 
202
	private boolean checkEmptyString(String s){
203
		if (s==null || s.trim().isEmpty()){
204
			return true;
205
		}
206
		return false;
207
	}
208
 
209
	private boolean checkEmail(String email){
210
		try{
211
			InternetAddress ia = new InternetAddress(email);
212
			ia.validate();
213
		}
214
		catch(Exception e){
215
			return false;
216
		}
217
		return true;
218
	}
219
 
220
	public String pendingUsers() throws TException{
221
		Client tc = new TransactionClient().getClient();
222
		searchResults = tc.getPendingAssociates(getUserEmail());
223
		setCustomH3("Activation Pending Users");
224
		return "pmsa-search-results";
225
	}
226
 
227
	public String recentUsers() throws TException{
228
		Client tc = new TransactionClient().getClient();
229
		searchResults = tc.getPmsaUsers(getUserEmail());
230
		setCustomH3("Recently Created Users");
231
		return "pmsa-search-results";
232
	}
233
 
234
	private boolean validate(Pmsa pmsa) throws Exception{
235
		if (checkEmptyString(pmsa.getName())){
236
			throw new Exception("Name not valid");
237
		}
238
		try{
239
			Long.valueOf(pmsa.getPhone());
240
		}
241
		catch(Exception e){
242
			throw new Exception("Phone number not valid");
243
		}
244
		if (checkEmptyString(pmsa.getPhone()) || pmsa.getPhone().length()!=10){
245
			throw new Exception("Phone number not valid 10 digit required");
246
		}
247
		if (!checkEmail(pmsa.getEmailId())){
248
			throw new Exception("Email address not valid");
249
		}
250
		if (checkEmptyString(pmsa.getAddress())){
251
			throw new Exception("Address not valid");
252
		}
253
		if (checkEmptyString(pmsa.getState())){
254
			throw new Exception("State not valid");
255
		}
256
		if (checkEmptyString(pmsa.getLevel())){
257
			throw new Exception("Level not valid");
258
		}
259
		if (!checkPincode(pmsa.getPin())){
260
			throw new Exception("Pincode not valid");
261
		}
262
		return true;
263
	}
264
 
265
	private boolean checkPincode(String pin) {
266
		if(pin.trim().length()!=6){
267
			return false;
268
		}
269
		Long long_pin;
270
		try{
271
			long_pin = Long.valueOf(pin);
272
		}
273
		catch(Exception e){
274
			return false;
275
		}
276
		if (long_pin < 110000 || long_pin >=860000){
277
			return false;
278
		}
279
		return true;
280
	}
281
 
282
	public String searchUser() throws TException{
283
		PmsaSearchFilter searchFilter = new PmsaSearchFilter();
284
		if (name !=null && !name.trim().isEmpty()){
285
			searchFilter.setName(name);
286
		}
287
		if (associateEmail !=null && !associateEmail.trim().isEmpty()){
288
			searchFilter.setEmailId(associateEmail);
289
		}
290
		if (phone !=null && !phone.trim().isEmpty()){
291
			searchFilter.setPhone(phone);
292
		}
293
		if (code !=null && !code.trim().isEmpty()){
294
			searchFilter.setCode(code);
295
		}
296
		if (l1Email !=null && !l1Email.trim().isEmpty()){
297
			searchFilter.setL1_email(l1Email);
298
		}
299
		if (l2Email !=null && !l2Email.trim().isEmpty()){
300
			searchFilter.setL2_email(l2Email);
301
		}
302
		Client tc = new TransactionClient().getClient();
303
		searchResults = tc.searchPmsa(searchFilter,getUserEmail());
304
		return "pmsa-search-results";
305
	}
306
 
307
	public String updateUser(){
308
		Pmsa pmsa = new Pmsa();
309
		pmsa.setId(Long.valueOf(pmsa_id));
310
		pmsa.setName(name);
311
		pmsa.setPhone(phone);
312
		pmsa.setEmailId(associateEmail);
21094 kshitij.so 313
		pmsa.setAddress(address.replace("\n", "").replace("\r", ""));
21090 kshitij.so 314
		pmsa.setState(state);
315
		pmsa.setLevel(level);
316
		pmsa.setActivated(Boolean.valueOf(activated));
317
		pmsa.setPin(pincode);
318
		try {
319
			validate(pmsa);
320
			try{
321
				Client tc = new TransactionClient().getClient();
322
				setResult(tc.updatePmsaUser(pmsa, getUserEmail()));
323
			}
324
			catch(Exception tce){
325
				tce.printStackTrace();
326
				setResult("Service error plz try again");
327
			}
328
		} catch (Exception e) {
329
			setResult(e.getMessage());
330
		}
331
		return "pmsa-result"; 
332
	}
333
 
334
	public String addNewUser(){
335
		Pmsa pmsa = new Pmsa();
336
		pmsa.setName(name);
337
		pmsa.setPhone(phone);
338
		pmsa.setEmailId(associateEmail);
339
		pmsa.setAddress(address);
340
		pmsa.setState(state);
341
		pmsa.setLevel(level);
342
		pmsa.setActivated(Boolean.valueOf(activated));
343
		pmsa.setPin(pincode);
344
		try {
345
			validate(pmsa);
346
			try{
347
				Client tc = new TransactionClient().getClient();
348
				setResult(tc.addSalesAssociate(pmsa, referrerEmail, getUserEmail()));
349
			}
350
			catch(Exception tce){
351
				tce.printStackTrace();
352
				setResult("Service error plz try again");
353
			}
354
		} catch (Exception e) {
355
			setResult(e.getMessage());
356
		}
357
		return "pmsa-result"; 
358
	}
359
 
360
	public String getUserEmail() {
361
		return session.getAttribute(ReportsUtils.USER_EMAIL).toString();
362
	}
363
 
364
	public String getId() {
365
		return id;
366
	}
367
 
368
	public void setId(String id) {
369
		this.id = id;
370
	}
371
 
372
 
373
	public String getName() {
374
		return name;
375
	}
376
 
377
	public void setName(String name) {
378
		this.name = name;
379
	}
380
 
381
	public String getPhone() {
382
		return phone;
383
	}
384
 
385
	public void setPhone(String phone) {
386
		this.phone = phone;
387
	}
388
 
389
	public String getAddress() {
390
		return address;
391
	}
392
 
393
	public void setAddress(String address) {
394
		this.address = address;
395
	}
396
 
397
	public String getState() {
398
		return state;
399
	}
400
 
401
	public void setState(String state) {
402
		this.state = state;
403
	}
404
 
405
	public String getPincode() {
406
		return pincode;
407
	}
408
 
409
	public void setPincode(String pincode) {
410
		this.pincode = pincode;
411
	}
412
 
413
	public String getActivated() {
414
		return activated;
415
	}
416
 
417
	public void setActivated(String activated) {
418
		this.activated = activated;
419
	}
420
 
421
	public String getLevel() {
422
		return level;
423
	}
424
 
425
	public void setLevel(String level) {
426
		this.level = level;
427
	}
428
 
429
	public String getAssociateEmail() {
430
		return associateEmail;
431
	}
432
 
433
	public void setAssociateEmail(String associateEmail) {
434
		this.associateEmail = associateEmail;
435
	}
436
 
437
	public void setServletRequest(HttpServletRequest req) {
438
		this.request = req;
439
		this.session = req.getSession();        
440
	}
441
 
442
	@Override
443
	public void setServletContext(ServletContext arg0) {
444
		// TODO Auto-generated method stub
445
 
446
	}
447
 
448
	public void setServletResponse(HttpServletResponse response) {
449
		this.response = response;
450
	}
451
 
452
	public void setRefererEmail(String refererEmail) {
453
		this.refererEmail = refererEmail;
454
	}
455
 
456
	public String getRefererEmail() {
457
		return refererEmail;
458
	}
459
 
460
	public String getResult() {
461
		return result;
462
	}
463
 
464
	public void setResult(String result) {
465
		this.result = result;
466
	}
467
 
468
}