Subversion Repositories SmartDukaan

Rev

Rev 3499 | Rev 3578 | 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;
3397 mandeep.dh 4
import in.shop2020.crm.Agent;
3390 mandeep.dh 5
import in.shop2020.crm.SearchFilter;
3090 mandeep.dh 6
import in.shop2020.crm.Ticket;
3499 mandeep.dh 7
import in.shop2020.crm.TicketCategory;
3090 mandeep.dh 8
import in.shop2020.crm.TicketStatus;
2724 vikas 9
import in.shop2020.model.v1.order.Order;
10
import in.shop2020.model.v1.order.OrderStatus;
3090 mandeep.dh 11
import in.shop2020.model.v1.order.TransactionServiceException;
2724 vikas 12
import in.shop2020.model.v1.user.Cart;
13
import in.shop2020.model.v1.user.Line;
14
import in.shop2020.model.v1.user.User;
3090 mandeep.dh 15
import in.shop2020.model.v1.user.UserCommunication;
16
import in.shop2020.model.v1.user.UserCommunicationException;
17
import in.shop2020.model.v1.user.UserContextException;
18
import in.shop2020.model.v1.user.UserState;
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;
2674 vikas 64
 
65
    @Action("/")
2724 vikas 66
    public String index() throws Exception {
3137 mandeep.dh 67
        String returnValue = INPUT;
68
 
3090 mandeep.dh 69
        try {
3106 mandeep.dh 70
            if (email == null) {
3390 mandeep.dh 71
                loadTicketCounts();
72
                loadCustomerActivities();
3137 mandeep.dh 73
                return returnValue;
3106 mandeep.dh 74
            }
75
 
3390 mandeep.dh 76
            userContextServiceClient = new UserClient().getClient();
3096 mandeep.dh 77
            if (email != null && !email.isEmpty()) {
78
                user = userContextServiceClient.getUserByEmail(email);
3422 mandeep.dh 79
            } else if (mobileNumber != null && !mobileNumber.isEmpty()) {
80
                user = userContextServiceClient.getUserByMobileNumber(Long
81
                        .parseLong(mobileNumber));
82
            } else if (orderId != null && !orderId.isEmpty()) {
3390 mandeep.dh 83
                transactionServiceClient = new TransactionClient().getClient();
3422 mandeep.dh 84
                Order order = transactionServiceClient.getOrder(Long
85
                        .parseLong(orderId));
86
                user = userContextServiceClient.getUserById(order
87
                        .getCustomer_id());
88
            } else if (ticketId != null && !ticketId.isEmpty()) {
3390 mandeep.dh 89
                SearchFilter searchFilter = new SearchFilter();
90
                searchFilter.setTicketId(Long.parseLong(ticketId));
3422 mandeep.dh 91
                crmServiceClient = new CRMClient().getClient();
92
                List<Ticket> tickets = crmServiceClient
93
                        .getTickets(searchFilter);
3390 mandeep.dh 94
                if (!tickets.isEmpty()) {
95
                    Ticket ticket = tickets.get(0);
96
                    if (ticket.isSetCustomerId()) {
97
                        user = userContextServiceClient.getUserById(ticket.getCustomerId());
98
                    }
99
                }
3422 mandeep.dh 100
                else {
101
                    // resetting in case on invalid ticket Id
102
                    ticketId = null;
103
                }
3096 mandeep.dh 104
            }
3090 mandeep.dh 105
 
106
            if (user == null || user.getUserId() <= 0) {
3422 mandeep.dh 107
                if (ticketId == null || ticketId.isEmpty()) {
108
                    addActionError("Invalid input");
109
                }
110
            } else {
3390 mandeep.dh 111
                loadUserCommunicationDetails();
112
                loadOrderDetails();
113
                loadCartDetails();
114
                loadTicketDetails();
115
                loadActivityDetails();
3137 mandeep.dh 116
                returnValue = INDEX;
117
            }
3422 mandeep.dh 118
        } catch (Exception e) {
3137 mandeep.dh 119
            addActionError("Invalid input");
3090 mandeep.dh 120
            log.error("Error occurred", e);
2724 vikas 121
        }
3137 mandeep.dh 122
 
123
        if (INPUT.equals(returnValue)) {
3390 mandeep.dh 124
            loadTicketCounts();
3422 mandeep.dh 125
            loadCustomerActivities();
3137 mandeep.dh 126
        }
127
 
128
        return returnValue;
3090 mandeep.dh 129
    }
130
 
3390 mandeep.dh 131
    private void loadCustomerActivities() throws TException {
132
        SearchFilter searchFilter = new SearchFilter();
3422 mandeep.dh 133
        searchFilter.setActivityCreatorIds(Collections
134
                .singletonList(CRMConstants.ADMIN_AGENT_ID));
3390 mandeep.dh 135
        searchFilter.setIsActivityRead(false);
136
 
3422 mandeep.dh 137
        crmServiceClient = new CRMClient().getClient();
138
        List<Activity> activities = crmServiceClient
139
                .getActivities(searchFilter);
3339 mandeep.dh 140
        if (activities != null) {
141
            customerActivityCount = activities.size();
142
        }
143
    }
144
 
3390 mandeep.dh 145
    private void loadActivityDetails() throws TException {
146
        SearchFilter searchFilter = new SearchFilter();
147
        searchFilter.setCustomerId(user.getUserId());
148
 
3422 mandeep.dh 149
        crmServiceClient = new CRMClient().getClient();
150
        List<Activity> activities = crmServiceClient
151
                .getActivities(searchFilter);
3106 mandeep.dh 152
        if (activities != null) {
153
            activityCount = activities.size();
154
        }
155
    }
156
 
3390 mandeep.dh 157
    private void loadTicketCounts() throws TException {
158
        SearchFilter searchFilter = new SearchFilter();
3546 mandeep.dh 159
        searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
160
        searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
161
        searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
3422 mandeep.dh 162
        searchFilter.setTicketAssigneeIds(Collections
3499 mandeep.dh 163
                .singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));
3390 mandeep.dh 164
 
3422 mandeep.dh 165
        crmServiceClient = new CRMClient().getClient();
3499 mandeep.dh 166
        agentOpenTicketCount = crmServiceClient.getTickets(searchFilter).size();
167
        unassignedTicketCount = crmServiceClient.getUnassignedTickets().size();
3390 mandeep.dh 168
 
3499 mandeep.dh 169
        searchFilter = new SearchFilter();
170
        searchFilter.setTicketCategory(TicketCategory.COD_VERIFICATION);
3546 mandeep.dh 171
        searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
172
        searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
173
        searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
174
 
3499 mandeep.dh 175
        crmServiceClient = new CRMClient().getClient();
176
        pendingCodVerificationCount = crmServiceClient.getTickets(searchFilter).size();
3106 mandeep.dh 177
    }
178
 
3390 mandeep.dh 179
    private void loadUserCommunicationDetails()
3090 mandeep.dh 180
            throws UserCommunicationException, TException {
3390 mandeep.dh 181
        userContextServiceClient = new UserClient().getClient();
3422 mandeep.dh 182
        List<UserCommunication> userCommunication = userContextServiceClient
183
                .getUserCommunicationByUser(user.getUserId());
3090 mandeep.dh 184
        userCommunicationCount = userCommunication.size();
185
    }
186
 
3422 mandeep.dh 187
    private void loadOrderDetails() throws TransactionServiceException,
188
            TException {
3390 mandeep.dh 189
        transactionServiceClient = new TransactionClient().getClient();
3422 mandeep.dh 190
        List<Order> allOrders = transactionServiceClient.getOrdersForCustomer(
191
                user.getUserId(), 0, (new Date()).getTime(), null);
2724 vikas 192
        orderCount = allOrders.size();
3090 mandeep.dh 193
 
2724 vikas 194
        for (Order o : allOrders) {
195
            if (o.getStatus() == OrderStatus.DELIVERY_SUCCESS) {
196
                completedOrderCount++;
3422 mandeep.dh 197
            } else if (CRMConstants.failedStatusList.contains(o.getStatus())) {
2724 vikas 198
                failedOrderCount++;
3422 mandeep.dh 199
            } else {
2724 vikas 200
                openOrderCount++;
201
            }
202
        }
3090 mandeep.dh 203
    }
204
 
3422 mandeep.dh 205
    private void loadCartDetails() throws UserContextException, TException {
3390 mandeep.dh 206
        userContextServiceClient = new UserClient().getClient();
3422 mandeep.dh 207
        UserState userState = userContextServiceClient.getUserState(user
208
                .getUserId());
3390 mandeep.dh 209
        lastLogin = SDF.format(new Date(userState.getLastLogin()));
3090 mandeep.dh 210
        Cart cart = null;
211
 
2724 vikas 212
        try {
3090 mandeep.dh 213
            cart = userContextServiceClient.getCurrentCart(user.getUserId());
2724 vikas 214
            if (cart.getCouponCode() != null) {
215
                couponCode = cart.getCouponCode();
216
            }
217
            for (Line line : cart.getLines()) {
218
                cartItems += line.getQuantity();
219
            }
220
        } catch (Exception e) {
221
            log.warn("No cart assigned for this user", e);
222
        }
2674 vikas 223
    }
2724 vikas 224
 
3390 mandeep.dh 225
    private void loadTicketDetails() throws TException {
3090 mandeep.dh 226
        // Fetching tickets' info
227
        ticketCount = 0;
228
        openTicketCount = 0;
229
        closedTicketCount = 0;
230
 
3422 mandeep.dh 231
        crmServiceClient = new CRMClient().getClient();
3390 mandeep.dh 232
        SearchFilter searchFilter = new SearchFilter();
233
        searchFilter.setCustomerId(user.getUserId());
234
 
235
        List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);
3422 mandeep.dh 236
        if (tickets != null) {
3090 mandeep.dh 237
            for (Ticket ticket : tickets) {
238
                ticketCount++;
3106 mandeep.dh 239
                if (!ticket.getStatus().equals(TicketStatus.CLOSED)) {
3090 mandeep.dh 240
                    openTicketCount++;
3422 mandeep.dh 241
                } else {
3090 mandeep.dh 242
                    closedTicketCount++;
243
                }
244
            }
245
        }
246
    }
247
 
3397 mandeep.dh 248
    public String getToday() {
249
        return SDF.format(new Date());
250
    }
251
 
252
    public String getYesterday() {
253
        Calendar calendar = Calendar.getInstance();
254
        calendar.setTime(new Date());
255
        calendar.add(Calendar.DAY_OF_MONTH, -1);
256
        return SDF.format(calendar.getTime());
257
    }
258
 
259
    public List<Agent> getAllAgents() {
260
        return CRMAuthorizingRealm.getAgents();
261
    }
262
 
2724 vikas 263
    public void setEmail(String email) {
264
        this.email = email;
265
    }
266
 
267
    public String getEmail() {
268
        return email;
269
    }
270
 
271
    public void setOrderId(String orderId) {
3390 mandeep.dh 272
        this.orderId = orderId;
2724 vikas 273
    }
274
 
3390 mandeep.dh 275
    public String getOrderId() {
2724 vikas 276
        return orderId;
277
    }
3422 mandeep.dh 278
 
2724 vikas 279
    public User getUser() {
280
        return user;
281
    }
3422 mandeep.dh 282
 
2724 vikas 283
    public long getOrderCount() {
284
        return orderCount;
285
    }
3422 mandeep.dh 286
 
2724 vikas 287
    public long getCompletedOrderCount() {
288
        return completedOrderCount;
289
    }
3422 mandeep.dh 290
 
2724 vikas 291
    public long getOpenOrderCount() {
292
        return openOrderCount;
293
    }
3422 mandeep.dh 294
 
2724 vikas 295
    public long getFailedOrderCount() {
296
        return failedOrderCount;
297
    }
3422 mandeep.dh 298
 
3499 mandeep.dh 299
    public int getCartItems() {
300
        return (int)cartItems;
2724 vikas 301
    }
3422 mandeep.dh 302
 
2724 vikas 303
    public String getLastLogin() {
304
        return lastLogin;
305
    }
306
 
307
    public String getCouponCode() {
308
        return couponCode;
309
    }
2830 vikas 310
 
311
    public long getUserCommunicationCount() {
312
        return userCommunicationCount;
313
    }
3090 mandeep.dh 314
 
315
    public long getTicketCount() {
316
        return ticketCount;
317
    }
318
 
319
    public long getOpenTicketCount() {
320
        return openTicketCount;
321
    }
322
 
323
    public long getClosedTicketCount() {
324
        return closedTicketCount;
325
    }
326
 
327
    public void setMobileNumber(String mobileNumber) {
328
        this.mobileNumber = mobileNumber;
329
    }
3096 mandeep.dh 330
 
331
    public String getTicketId() {
332
        return ticketId;
333
    }
334
 
335
    public void setTicketId(String ticketId) {
336
        this.ticketId = ticketId;
337
    }
3106 mandeep.dh 338
 
339
    public long getAgentOpenTicketCount() {
340
        return agentOpenTicketCount;
341
    }
342
 
343
    public long getUnassignedTicketCount() {
344
        return unassignedTicketCount;
345
    }
346
 
347
    public long getActivityCount() {
348
        return activityCount;
349
    }
350
 
351
    public void setActivityCount(long activityCount) {
352
        this.activityCount = activityCount;
353
    }
3339 mandeep.dh 354
 
355
    public long getCustomerActivityCount() {
356
        return customerActivityCount;
357
    }
358
 
359
    public void setCustomerActivityCount(long customerActivityCount) {
360
        this.customerActivityCount = customerActivityCount;
361
    }
3499 mandeep.dh 362
 
363
    public long getPendingCodVerificationCount() {
364
        return pendingCodVerificationCount;
365
    }
366
 
367
    public void setPendingCodVerificationCount(long pendingCodVerificationCount) {
368
        this.pendingCodVerificationCount = pendingCodVerificationCount;
369
    }
2724 vikas 370
}