Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
2674 vikas 1
package in.shop2020.serving.controllers;
2
 
3090 mandeep.dh 3
import in.shop2020.crm.Activity;
4142 mandeep.dh 4
import in.shop2020.crm.ActivityType;
3397 mandeep.dh 5
import in.shop2020.crm.Agent;
3390 mandeep.dh 6
import in.shop2020.crm.SearchFilter;
3090 mandeep.dh 7
import in.shop2020.crm.Ticket;
3499 mandeep.dh 8
import in.shop2020.crm.TicketCategory;
3090 mandeep.dh 9
import in.shop2020.crm.TicketStatus;
2724 vikas 10
import in.shop2020.model.v1.order.Order;
11
import in.shop2020.model.v1.order.OrderStatus;
3090 mandeep.dh 12
import in.shop2020.model.v1.order.TransactionServiceException;
2724 vikas 13
import in.shop2020.model.v1.user.Cart;
14
import in.shop2020.model.v1.user.Line;
15
import in.shop2020.model.v1.user.User;
3090 mandeep.dh 16
import in.shop2020.model.v1.user.UserCommunication;
17
import in.shop2020.model.v1.user.UserCommunicationException;
18
import in.shop2020.model.v1.user.UserContextException;
3390 mandeep.dh 19
import in.shop2020.serving.auth.CRMAuthorizingRealm;
20
import in.shop2020.thrift.clients.CRMClient;
21
import in.shop2020.thrift.clients.TransactionClient;
22
import in.shop2020.thrift.clients.UserClient;
3269 mandeep.dh 23
import in.shop2020.util.CRMConstants;
2674 vikas 24
 
3546 mandeep.dh 25
import java.util.ArrayList;
3397 mandeep.dh 26
import java.util.Calendar;
3390 mandeep.dh 27
import java.util.Collections;
2724 vikas 28
import java.util.Date;
29
import java.util.List;
30
 
2674 vikas 31
import org.apache.log4j.Logger;
32
import org.apache.struts2.convention.annotation.Action;
3090 mandeep.dh 33
import org.apache.thrift.TException;
2674 vikas 34
 
35
/**
36
 * @author vikas
3422 mandeep.dh 37
 * 
2674 vikas 38
 */
39
@SuppressWarnings("serial")
40
public class HomeController extends BaseController {
3422 mandeep.dh 41
    private static final Logger log        = Logger.getLogger(HomeController.class);
3090 mandeep.dh 42
 
3422 mandeep.dh 43
    private String              email;
44
    private String              orderId;
45
    private String              mobileNumber;
46
    private User                user;
47
    private long                orderCount;
48
    private long                completedOrderCount;
49
    private long                openOrderCount;
50
    private long                failedOrderCount;
51
    private long                userCommunicationCount;
52
    private long                ticketCount;
53
    private long                openTicketCount;
54
    private long                closedTicketCount;
55
    private String              ticketId;
56
    private String              lastLogin;
57
    private double              cartItems;
58
    private String              couponCode = "";
59
    private long                agentOpenTicketCount;
60
    private long                unassignedTicketCount;
61
    private long                activityCount;
62
    private long                customerActivityCount;
3499 mandeep.dh 63
    private long                pendingCodVerificationCount;
3711 mandeep.dh 64
    private long                agentUnreadActivityCount;
3578 mandeep.dh 65
    private long                openFailedPaymentsTicketCount;
4008 mandeep.dh 66
    private long                openDelayedDeliveryTicketCount;
4267 anupam.sin 67
    private long                openFlaggedPaymentsTicketCount;
5858 amar.kumar 68
    private long				openStorePickupTicketCount;
4490 anupam.sin 69
    private long                DoaRequestCount;
2674 vikas 70
 
5858 amar.kumar 71
	private long                ReturnRequestCount;
4490 anupam.sin 72
 
4751 anupam.sin 73
    private long                orderCancellationCount;
74
 
75
 
2674 vikas 76
    @Action("/")
2724 vikas 77
    public String index() throws Exception {
3137 mandeep.dh 78
        String returnValue = INPUT;
79
 
3090 mandeep.dh 80
        try {
3106 mandeep.dh 81
            if (email == null) {
3390 mandeep.dh 82
                loadTicketCounts();
83
                loadCustomerActivities();
3137 mandeep.dh 84
                return returnValue;
3106 mandeep.dh 85
            }
86
 
3390 mandeep.dh 87
            userContextServiceClient = new UserClient().getClient();
3096 mandeep.dh 88
            if (email != null && !email.isEmpty()) {
89
                user = userContextServiceClient.getUserByEmail(email);
3422 mandeep.dh 90
            } else if (mobileNumber != null && !mobileNumber.isEmpty()) {
91
                user = userContextServiceClient.getUserByMobileNumber(Long
92
                        .parseLong(mobileNumber));
93
            } else if (orderId != null && !orderId.isEmpty()) {
3390 mandeep.dh 94
                transactionServiceClient = new TransactionClient().getClient();
3422 mandeep.dh 95
                Order order = transactionServiceClient.getOrder(Long
96
                        .parseLong(orderId));
97
                user = userContextServiceClient.getUserById(order
98
                        .getCustomer_id());
99
            } else if (ticketId != null && !ticketId.isEmpty()) {
3390 mandeep.dh 100
                SearchFilter searchFilter = new SearchFilter();
101
                searchFilter.setTicketId(Long.parseLong(ticketId));
3422 mandeep.dh 102
                crmServiceClient = new CRMClient().getClient();
103
                List<Ticket> tickets = crmServiceClient
104
                        .getTickets(searchFilter);
3390 mandeep.dh 105
                if (!tickets.isEmpty()) {
106
                    Ticket ticket = tickets.get(0);
107
                    if (ticket.isSetCustomerId()) {
108
                        user = userContextServiceClient.getUserById(ticket.getCustomerId());
109
                    }
110
                }
3422 mandeep.dh 111
                else {
112
                    // resetting in case on invalid ticket Id
113
                    ticketId = null;
114
                }
3096 mandeep.dh 115
            }
3090 mandeep.dh 116
 
117
            if (user == null || user.getUserId() <= 0) {
3422 mandeep.dh 118
                if (ticketId == null || ticketId.isEmpty()) {
119
                    addActionError("Invalid input");
120
                }
121
            } else {
3390 mandeep.dh 122
                loadUserCommunicationDetails();
123
                loadOrderDetails();
124
                loadCartDetails();
125
                loadTicketDetails();
126
                loadActivityDetails();
3137 mandeep.dh 127
                returnValue = INDEX;
128
            }
3422 mandeep.dh 129
        } catch (Exception e) {
3137 mandeep.dh 130
            addActionError("Invalid input");
3090 mandeep.dh 131
            log.error("Error occurred", e);
2724 vikas 132
        }
3137 mandeep.dh 133
 
134
        if (INPUT.equals(returnValue)) {
3390 mandeep.dh 135
            loadTicketCounts();
3422 mandeep.dh 136
            loadCustomerActivities();
3137 mandeep.dh 137
        }
138
 
139
        return returnValue;
3090 mandeep.dh 140
    }
141
 
3390 mandeep.dh 142
    private void loadCustomerActivities() throws TException {
143
        SearchFilter searchFilter = new SearchFilter();
3422 mandeep.dh 144
        searchFilter.setActivityCreatorIds(Collections
145
                .singletonList(CRMConstants.ADMIN_AGENT_ID));
3390 mandeep.dh 146
        searchFilter.setIsActivityRead(false);
147
 
3711 mandeep.dh 148
        agentUnreadActivityCount = 0;
149
        customerActivityCount = 0;
150
 
3422 mandeep.dh 151
        crmServiceClient = new CRMClient().getClient();
3711 mandeep.dh 152
        List<Activity> activities = crmServiceClient.getActivities(searchFilter);
153
 
3339 mandeep.dh 154
        if (activities != null) {
3711 mandeep.dh 155
            for (Activity activity : activities) {
156
                if (CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId() == activity.getTicketAssigneeId()) {
157
                    agentUnreadActivityCount++;
158
                }
159
            }
160
 
3339 mandeep.dh 161
            customerActivityCount = activities.size();
162
        }
163
    }
164
 
3390 mandeep.dh 165
    private void loadActivityDetails() throws TException {
166
        SearchFilter searchFilter = new SearchFilter();
167
        searchFilter.setCustomerId(user.getUserId());
168
 
3422 mandeep.dh 169
        crmServiceClient = new CRMClient().getClient();
170
        List<Activity> activities = crmServiceClient
171
                .getActivities(searchFilter);
3106 mandeep.dh 172
        if (activities != null) {
173
            activityCount = activities.size();
174
        }
175
    }
176
 
3390 mandeep.dh 177
    private void loadTicketCounts() throws TException {
178
        SearchFilter searchFilter = new SearchFilter();
3546 mandeep.dh 179
        searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
180
        searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
181
        searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
3422 mandeep.dh 182
        searchFilter.setTicketAssigneeIds(Collections
3499 mandeep.dh 183
                .singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));
3390 mandeep.dh 184
 
3422 mandeep.dh 185
        crmServiceClient = new CRMClient().getClient();
3499 mandeep.dh 186
        agentOpenTicketCount = crmServiceClient.getTickets(searchFilter).size();
187
        unassignedTicketCount = crmServiceClient.getUnassignedTickets().size();
3390 mandeep.dh 188
 
3578 mandeep.dh 189
        if (canVerifyCOD()) {
190
            searchFilter = new SearchFilter();
191
            searchFilter.setTicketCategory(TicketCategory.COD_VERIFICATION);
192
            searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
193
            searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
194
            searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
3546 mandeep.dh 195
 
3578 mandeep.dh 196
            crmServiceClient = new CRMClient().getClient();
197
            pendingCodVerificationCount = crmServiceClient.getTickets(searchFilter).size();            
198
        }
199
 
200
        if (canViewFailedPayments()) {
201
            searchFilter = new SearchFilter();
202
            searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
203
            searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
204
            searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
205
            searchFilter.setTicketCategory(TicketCategory.FAILED_PAYMENTS);
206
            crmServiceClient = new CRMClient().getClient();
207
            openFailedPaymentsTicketCount = crmServiceClient.getTickets(searchFilter).size();
208
        }
4008 mandeep.dh 209
 
210
        if (canViewDelayedDeliveries()) {
211
            searchFilter = new SearchFilter();
212
            searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
213
            searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
214
            searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
215
            searchFilter.setTicketCategory(TicketCategory.DELAYED_DELIVERY);
216
            crmServiceClient = new CRMClient().getClient();
217
            openDelayedDeliveryTicketCount = crmServiceClient.getTickets(searchFilter).size();
218
        }
4267 anupam.sin 219
 
220
        if (canViewFlaggedPayments()) {
221
            searchFilter = new SearchFilter();
222
            searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
223
            searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
224
            searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
225
            searchFilter.setTicketCategory(TicketCategory.PAYMENT_FLAGGED);
226
            crmServiceClient = new CRMClient().getClient();
227
            openFlaggedPaymentsTicketCount = crmServiceClient.getTickets(searchFilter).size();
228
        }
4490 anupam.sin 229
 
230
        if (canViewDoaRequests()) {
231
            searchFilter = new SearchFilter();
232
            searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
233
            searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
234
            searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
235
            searchFilter.setTicketCategory(TicketCategory.DOA_RECEIVED);
236
            crmServiceClient = new CRMClient().getClient();
237
            DoaRequestCount = crmServiceClient.getTickets(searchFilter).size();
238
        }
239
 
240
        if (canViewReturnRequests()) {
241
            searchFilter = new SearchFilter();
242
            searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
243
            searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
244
            searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
245
            searchFilter.setTicketCategory(TicketCategory.RETURN_FORM);
246
            crmServiceClient = new CRMClient().getClient();
247
            ReturnRequestCount = crmServiceClient.getTickets(searchFilter).size();
248
        }
4751 anupam.sin 249
 
250
        if (canViewOrderCancellation()) {
251
            searchFilter = new SearchFilter();
252
            searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
253
            searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
254
            searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
255
            searchFilter.setTicketCategory(TicketCategory.ORDER_CANCELLATION);
256
            crmServiceClient = new CRMClient().getClient();
257
            orderCancellationCount = crmServiceClient.getTickets(searchFilter).size();
258
        }
5858 amar.kumar 259
 
260
        searchFilter = new SearchFilter();
261
        searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
262
        searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
263
        searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
264
        searchFilter.setTicketCategory(TicketCategory.STORE_PICKUP);
265
        crmServiceClient = new CRMClient().getClient();
266
        openStorePickupTicketCount = crmServiceClient.getTickets(searchFilter).size();
267
 
3106 mandeep.dh 268
    }
269
 
3390 mandeep.dh 270
    private void loadUserCommunicationDetails()
3090 mandeep.dh 271
            throws UserCommunicationException, TException {
3390 mandeep.dh 272
        userContextServiceClient = new UserClient().getClient();
3422 mandeep.dh 273
        List<UserCommunication> userCommunication = userContextServiceClient
274
                .getUserCommunicationByUser(user.getUserId());
3090 mandeep.dh 275
        userCommunicationCount = userCommunication.size();
276
    }
277
 
3422 mandeep.dh 278
    private void loadOrderDetails() throws TransactionServiceException,
279
            TException {
3390 mandeep.dh 280
        transactionServiceClient = new TransactionClient().getClient();
3422 mandeep.dh 281
        List<Order> allOrders = transactionServiceClient.getOrdersForCustomer(
282
                user.getUserId(), 0, (new Date()).getTime(), null);
2724 vikas 283
        orderCount = allOrders.size();
3090 mandeep.dh 284
 
2724 vikas 285
        for (Order o : allOrders) {
286
            if (o.getStatus() == OrderStatus.DELIVERY_SUCCESS) {
287
                completedOrderCount++;
3422 mandeep.dh 288
            } else if (CRMConstants.failedStatusList.contains(o.getStatus())) {
2724 vikas 289
                failedOrderCount++;
3422 mandeep.dh 290
            } else {
2724 vikas 291
                openOrderCount++;
292
            }
293
        }
3090 mandeep.dh 294
    }
295
 
3422 mandeep.dh 296
    private void loadCartDetails() throws UserContextException, TException {
3390 mandeep.dh 297
        userContextServiceClient = new UserClient().getClient();
5326 rajveer 298
        lastLogin = new Date(user.getLastLogin()).toString();
3090 mandeep.dh 299
        Cart cart = null;
300
 
2724 vikas 301
        try {
3090 mandeep.dh 302
            cart = userContextServiceClient.getCurrentCart(user.getUserId());
2724 vikas 303
            if (cart.getCouponCode() != null) {
304
                couponCode = cart.getCouponCode();
305
            }
306
            for (Line line : cart.getLines()) {
307
                cartItems += line.getQuantity();
308
            }
309
        } catch (Exception e) {
310
            log.warn("No cart assigned for this user", e);
311
        }
2674 vikas 312
    }
2724 vikas 313
 
3390 mandeep.dh 314
    private void loadTicketDetails() throws TException {
3090 mandeep.dh 315
        // Fetching tickets' info
316
        ticketCount = 0;
317
        openTicketCount = 0;
318
        closedTicketCount = 0;
319
 
3422 mandeep.dh 320
        crmServiceClient = new CRMClient().getClient();
3390 mandeep.dh 321
        SearchFilter searchFilter = new SearchFilter();
322
        searchFilter.setCustomerId(user.getUserId());
323
 
324
        List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);
3422 mandeep.dh 325
        if (tickets != null) {
3090 mandeep.dh 326
            for (Ticket ticket : tickets) {
327
                ticketCount++;
3106 mandeep.dh 328
                if (!ticket.getStatus().equals(TicketStatus.CLOSED)) {
3090 mandeep.dh 329
                    openTicketCount++;
3422 mandeep.dh 330
                } else {
3090 mandeep.dh 331
                    closedTicketCount++;
332
                }
333
            }
334
        }
335
    }
336
 
3397 mandeep.dh 337
    public String getToday() {
338
        return SDF.format(new Date());
339
    }
340
 
341
    public String getYesterday() {
342
        Calendar calendar = Calendar.getInstance();
343
        calendar.setTime(new Date());
344
        calendar.add(Calendar.DAY_OF_MONTH, -1);
345
        return SDF.format(calendar.getTime());
346
    }
347
 
348
    public List<Agent> getAllAgents() {
349
        return CRMAuthorizingRealm.getAgents();
350
    }
351
 
4142 mandeep.dh 352
    public ActivityType[] getActivityTypes() {
353
        return ActivityType.values();
354
    }
355
 
356
    public TicketCategory[] getTicketCategories() {
357
        return TicketCategory.values();
358
    }
359
 
2724 vikas 360
    public void setEmail(String email) {
361
        this.email = email;
362
    }
363
 
364
    public String getEmail() {
365
        return email;
366
    }
367
 
368
    public void setOrderId(String orderId) {
3390 mandeep.dh 369
        this.orderId = orderId;
2724 vikas 370
    }
371
 
3390 mandeep.dh 372
    public String getOrderId() {
2724 vikas 373
        return orderId;
374
    }
3422 mandeep.dh 375
 
2724 vikas 376
    public User getUser() {
377
        return user;
378
    }
3422 mandeep.dh 379
 
2724 vikas 380
    public long getOrderCount() {
381
        return orderCount;
382
    }
3422 mandeep.dh 383
 
2724 vikas 384
    public long getCompletedOrderCount() {
385
        return completedOrderCount;
386
    }
3422 mandeep.dh 387
 
2724 vikas 388
    public long getOpenOrderCount() {
389
        return openOrderCount;
390
    }
3422 mandeep.dh 391
 
2724 vikas 392
    public long getFailedOrderCount() {
393
        return failedOrderCount;
394
    }
3422 mandeep.dh 395
 
3499 mandeep.dh 396
    public int getCartItems() {
397
        return (int)cartItems;
2724 vikas 398
    }
3422 mandeep.dh 399
 
2724 vikas 400
    public String getLastLogin() {
401
        return lastLogin;
402
    }
403
 
404
    public String getCouponCode() {
405
        return couponCode;
406
    }
2830 vikas 407
 
408
    public long getUserCommunicationCount() {
409
        return userCommunicationCount;
410
    }
3090 mandeep.dh 411
 
412
    public long getTicketCount() {
413
        return ticketCount;
414
    }
415
 
416
    public long getOpenTicketCount() {
417
        return openTicketCount;
418
    }
419
 
420
    public long getClosedTicketCount() {
421
        return closedTicketCount;
422
    }
423
 
424
    public void setMobileNumber(String mobileNumber) {
425
        this.mobileNumber = mobileNumber;
426
    }
3096 mandeep.dh 427
 
428
    public String getTicketId() {
429
        return ticketId;
430
    }
431
 
432
    public void setTicketId(String ticketId) {
433
        this.ticketId = ticketId;
434
    }
3106 mandeep.dh 435
 
436
    public long getAgentOpenTicketCount() {
437
        return agentOpenTicketCount;
438
    }
439
 
440
    public long getUnassignedTicketCount() {
441
        return unassignedTicketCount;
442
    }
443
 
444
    public long getActivityCount() {
445
        return activityCount;
446
    }
447
 
448
    public void setActivityCount(long activityCount) {
449
        this.activityCount = activityCount;
450
    }
3339 mandeep.dh 451
 
452
    public long getCustomerActivityCount() {
453
        return customerActivityCount;
454
    }
455
 
456
    public void setCustomerActivityCount(long customerActivityCount) {
457
        this.customerActivityCount = customerActivityCount;
458
    }
3499 mandeep.dh 459
 
460
    public long getPendingCodVerificationCount() {
461
        return pendingCodVerificationCount;
462
    }
463
 
464
    public void setPendingCodVerificationCount(long pendingCodVerificationCount) {
465
        this.pendingCodVerificationCount = pendingCodVerificationCount;
466
    }
3578 mandeep.dh 467
 
468
    public long getOpenFailedPaymentsTicketCount() {
469
        return openFailedPaymentsTicketCount;
470
    }
471
 
472
    public void setOpenFailedPaymentsTicketCount(long openFailedPaymentsTicketCount) {
473
        this.openFailedPaymentsTicketCount = openFailedPaymentsTicketCount;
474
    }
3711 mandeep.dh 475
 
476
    public long getAgentUnreadActivityCount() {
477
        return agentUnreadActivityCount;
478
    }
479
 
480
    public void setAgentUnreadActivityCount(long agentUnreadActivityCount) {
481
        this.agentUnreadActivityCount = agentUnreadActivityCount;
482
    }
4008 mandeep.dh 483
 
484
    public long getOpenDelayedDeliveryTicketCount() {
485
        return openDelayedDeliveryTicketCount;
486
    }
487
 
488
    public void setOpenDelayedDeliveryTicketCount(
489
            long openDelayedDeliveryTicketCount) {
490
        this.openDelayedDeliveryTicketCount = openDelayedDeliveryTicketCount;
491
    }
4267 anupam.sin 492
 
493
    public long getOpenFlaggedPaymentsTicketCount() {
494
        return openFlaggedPaymentsTicketCount;
495
    }
496
 
497
    public void setOpenFlaggedPaymentsTicketCount(
498
            long openFlaggedPaymentsTicketCount) {
499
        this.openFlaggedPaymentsTicketCount = openFlaggedPaymentsTicketCount;
500
    }
4490 anupam.sin 501
 
502
    public long getDoaRequestCount() {
503
        return DoaRequestCount;
504
    }
505
 
506
    public void setDoaRequestCount(long DoaRequestCount) {
507
        this.DoaRequestCount = DoaRequestCount;
508
    }
509
 
510
    public long getReturnRequestCount() {
511
        return ReturnRequestCount;
512
    }
513
 
514
    public void setReturnRequestCount(long returnRequestCount) {
515
        ReturnRequestCount = returnRequestCount;
516
    }
4751 anupam.sin 517
 
518
    public long getOrderCancellationCount() {
519
        return orderCancellationCount;
520
    }
521
 
522
    public void setOrderCancellationCount(long orderCancellationCount) {
523
        this.orderCancellationCount = orderCancellationCount;
524
    }
5858 amar.kumar 525
 
526
 
527
    public long getOpenStorePickupTicketCount() {
528
		return openStorePickupTicketCount;
529
	}
530
 
531
	public void setOpenStorePickupTicketCount(long openStorePickupTicketCount) {
532
		this.openStorePickupTicketCount = openStorePickupTicketCount;
533
	}
534
 
2724 vikas 535
}