Subversion Repositories SmartDukaan

Rev

Rev 3137 | Rev 3339 | 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;
4
import in.shop2020.crm.CRMService.Client;
5
import in.shop2020.crm.Ticket;
6
import in.shop2020.crm.TicketStatus;
2724 vikas 7
import in.shop2020.model.v1.order.Order;
8
import in.shop2020.model.v1.order.OrderStatus;
3090 mandeep.dh 9
import in.shop2020.model.v1.order.TransactionServiceException;
2724 vikas 10
import in.shop2020.model.v1.user.Cart;
11
import in.shop2020.model.v1.user.Line;
12
import in.shop2020.model.v1.user.User;
3090 mandeep.dh 13
import in.shop2020.model.v1.user.UserCommunication;
14
import in.shop2020.model.v1.user.UserCommunicationException;
15
import in.shop2020.model.v1.user.UserContextException;
16
import in.shop2020.model.v1.user.UserState;
3269 mandeep.dh 17
import in.shop2020.util.CRMConstants;
2674 vikas 18
 
2724 vikas 19
import java.text.SimpleDateFormat;
20
import java.util.Date;
21
import java.util.List;
22
 
2674 vikas 23
import org.apache.log4j.Logger;
24
import org.apache.struts2.convention.annotation.Action;
3090 mandeep.dh 25
import org.apache.thrift.TException;
2674 vikas 26
 
27
/**
28
 * @author vikas
29
 *
30
 */
31
@SuppressWarnings("serial")
32
public class HomeController extends BaseController {
3090 mandeep.dh 33
    private static final Logger log = Logger.getLogger(HomeController.class);
34
    private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
35
 
2724 vikas 36
    private String email;
37
    private long orderId;
3090 mandeep.dh 38
    private String mobileNumber;
2724 vikas 39
    private User user;
40
    private long orderCount;
41
    private long completedOrderCount;
42
    private long openOrderCount;
43
    private long failedOrderCount;
2830 vikas 44
    private long userCommunicationCount;
3090 mandeep.dh 45
    private long ticketCount;
46
    private long openTicketCount;
47
    private long closedTicketCount;
3096 mandeep.dh 48
    private String ticketId;
2724 vikas 49
    private String lastLogin;
50
    private double cartItems;
51
    private String couponCode = "";
3106 mandeep.dh 52
    private long agentTicketCount;
53
    private long agentOpenTicketCount;
54
    private long unassignedTicketCount;
55
    private long allTicketCount;
56
    private long allOpenTicketCount;
57
    private long activityCount;
2674 vikas 58
 
59
    @Action("/")
2724 vikas 60
    public String index() throws Exception {
3137 mandeep.dh 61
        createServiceClients();
62
        String returnValue = INPUT;
63
 
3090 mandeep.dh 64
        try {
3106 mandeep.dh 65
            if (email == null) {
3137 mandeep.dh 66
                loadTicketCounts(crmServiceClient);
67
                return returnValue;
3106 mandeep.dh 68
            }
69
 
3096 mandeep.dh 70
            if (email != null && !email.isEmpty()) {
71
                user = userContextServiceClient.getUserByEmail(email);
3090 mandeep.dh 72
            }
3096 mandeep.dh 73
            else if (mobileNumber != null && !mobileNumber.isEmpty()) {
74
                user = userContextServiceClient.getUserByMobileNumber(Long.parseLong(mobileNumber));
2724 vikas 75
            }
3096 mandeep.dh 76
            else if (orderId != 0) {
77
                Order order = transactionServiceClient.getOrder(orderId);
78
                user = userContextServiceClient.getUserById(order.getCustomer_id());
2724 vikas 79
            }
3096 mandeep.dh 80
            else if (ticketId != null && !ticketId.isEmpty()) {
81
                Ticket ticket = crmServiceClient.getTicket(Long.parseLong(ticketId));
82
                user = userContextServiceClient.getUserById(ticket.getCustomerId());
83
            }
3090 mandeep.dh 84
 
85
            if (user == null || user.getUserId() <= 0) {
86
                addActionError("Invalid Input");
87
            }
3137 mandeep.dh 88
            else {
89
                loadUserCommunicationDetails(userContextServiceClient);
90
                loadOrderDetails(transactionServiceClient);
91
                loadCartDetails(userContextServiceClient);
92
                loadTicketDetails(crmServiceClient);
93
                loadActivityDetails(crmServiceClient);
94
                returnValue = INDEX;
95
            }
2724 vikas 96
        }
3090 mandeep.dh 97
        catch (Exception e) {
3137 mandeep.dh 98
            addActionError("Invalid input");
3090 mandeep.dh 99
            log.error("Error occurred", e);
2724 vikas 100
        }
3137 mandeep.dh 101
 
102
        if (INPUT.equals(returnValue)) {
103
            loadTicketCounts(crmServiceClient);
104
        }
105
 
106
        return returnValue;
3090 mandeep.dh 107
    }
108
 
3106 mandeep.dh 109
    private void loadActivityDetails(Client crmServiceClient) throws TException {
110
        List<Activity> activities = crmServiceClient.getActivities(user.getUserId());
111
        if (activities != null) {
112
            activityCount = activities.size();
113
        }
114
    }
115
 
3137 mandeep.dh 116
    private void loadTicketCounts(Client crmServiceClient) throws TException {
117
        long currentAgentId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();
118
        List<Ticket> tickets = crmServiceClient.getAssignedTickets(currentAgentId);
119
        agentTicketCount = tickets.size();
120
        for (Ticket ticket : tickets) {
121
            if (TicketStatus.OPEN.equals(ticket.getStatus())) {
122
                agentOpenTicketCount++;
123
            }
124
        }
125
 
126
        List<Ticket> unassignedTickets = crmServiceClient.getUnassignedTickets();
127
        unassignedTicketCount = unassignedTickets.size();
128
 
129
        List<Ticket> allTickets = crmServiceClient.getAllTickets(currentAgentId);
130
        allTicketCount = allTickets.size();
131
        for (Ticket ticket : allTickets) {
132
            if (TicketStatus.OPEN.equals(ticket.getStatus())) {
133
                allOpenTicketCount++;
134
            }
135
        }
3106 mandeep.dh 136
    }
137
 
3090 mandeep.dh 138
    private void loadUserCommunicationDetails(
139
            in.shop2020.model.v1.user.UserContextService.Client userContextServiceClient)
140
            throws UserCommunicationException, TException {
141
        List<UserCommunication> userCommunication = userContextServiceClient.getUserCommunicationByUser(user.getUserId());
142
        userCommunicationCount = userCommunication.size();
143
    }
144
 
145
    private void loadOrderDetails(
146
            in.shop2020.model.v1.order.TransactionService.Client transactionServiceClient)
147
            throws TransactionServiceException, TException {
148
        List<Order> allOrders = transactionServiceClient.getOrdersForCustomer(user.getUserId(), 0, (new Date()).getTime(), null);
2724 vikas 149
        orderCount = allOrders.size();
3090 mandeep.dh 150
 
2724 vikas 151
        for (Order o : allOrders) {
152
            if (o.getStatus() == OrderStatus.DELIVERY_SUCCESS) {
153
                completedOrderCount++;
154
            }
3269 mandeep.dh 155
            else if (CRMConstants.failedStatusList.contains(o.getStatus())) {
2724 vikas 156
                failedOrderCount++;
157
            }
158
            else {
159
                openOrderCount++;
160
            }
161
        }
3090 mandeep.dh 162
    }
163
 
164
    private void loadCartDetails(
165
            in.shop2020.model.v1.user.UserContextService.Client userContextServiceClient)
166
            throws UserContextException, TException {
167
        UserState userState = userContextServiceClient.getUserState(user.getUserId());
168
        lastLogin = sdf.format(new Date(userState.getLastLogin()));
169
        Cart cart = null;
170
 
2724 vikas 171
        try {
3090 mandeep.dh 172
            cart = userContextServiceClient.getCurrentCart(user.getUserId());
2724 vikas 173
            if (cart.getCouponCode() != null) {
174
                couponCode = cart.getCouponCode();
175
            }
176
            for (Line line : cart.getLines()) {
177
                cartItems += line.getQuantity();
178
            }
179
        } catch (Exception e) {
180
            log.warn("No cart assigned for this user", e);
181
        }
2674 vikas 182
    }
2724 vikas 183
 
3090 mandeep.dh 184
    private void loadTicketDetails(Client crmServiceClient) throws TException {
185
        // Fetching tickets' info
186
        ticketCount = 0;
187
        openTicketCount = 0;
188
        closedTicketCount = 0;
189
 
190
        List<Ticket> tickets = crmServiceClient.getTickets(user.getUserId());
191
        if (tickets != null) 
192
        {
193
            for (Ticket ticket : tickets) {
194
                ticketCount++;
3106 mandeep.dh 195
                if (!ticket.getStatus().equals(TicketStatus.CLOSED)) {
3090 mandeep.dh 196
                    openTicketCount++;
197
                }
198
                else {
199
                    closedTicketCount++;
200
                }
201
            }
202
        }
203
    }
204
 
2724 vikas 205
    public void setEmail(String email) {
206
        this.email = email;
207
    }
208
 
209
    public String getEmail() {
210
        return email;
211
    }
212
 
213
    public void setOrderId(String orderId) {
3090 mandeep.dh 214
        if (orderId != null && !orderId.isEmpty()) {
2724 vikas 215
            this.orderId = Long.parseLong(orderId);
216
        }
217
    }
218
 
219
    public Long getOrderId() {
220
        return orderId;
221
    }
222
 
223
    public User getUser() {
224
        return user;
225
    }
226
 
227
    public long getOrderCount() {
228
        return orderCount;
229
    }
230
 
231
    public long getCompletedOrderCount() {
232
        return completedOrderCount;
233
    }
234
 
235
    public long getOpenOrderCount() {
236
        return openOrderCount;
237
    }
238
 
239
    public long getFailedOrderCount() {
240
        return failedOrderCount;
241
    }
242
 
243
    public double getCartItems() {
244
        return cartItems;
245
    }
246
 
247
    public String getLastLogin() {
248
        return lastLogin;
249
    }
250
 
251
    public String getCouponCode() {
252
        return couponCode;
253
    }
2830 vikas 254
 
255
    public long getUserCommunicationCount() {
256
        return userCommunicationCount;
257
    }
3090 mandeep.dh 258
 
259
    public long getTicketCount() {
260
        return ticketCount;
261
    }
262
 
263
    public long getOpenTicketCount() {
264
        return openTicketCount;
265
    }
266
 
267
    public long getClosedTicketCount() {
268
        return closedTicketCount;
269
    }
270
 
271
    public void setMobileNumber(String mobileNumber) {
272
        this.mobileNumber = mobileNumber;
273
    }
3096 mandeep.dh 274
 
275
    public String getTicketId() {
276
        return ticketId;
277
    }
278
 
279
    public void setTicketId(String ticketId) {
280
        this.ticketId = ticketId;
281
    }
3106 mandeep.dh 282
 
283
    public long getAgentTicketCount() {
284
        return agentTicketCount;
285
    }
286
 
287
    public long getAgentOpenTicketCount() {
288
        return agentOpenTicketCount;
289
    }
290
 
291
    public long getUnassignedTicketCount() {
292
        return unassignedTicketCount;
293
    }
294
 
295
    public long getAllTicketCount() {
296
        return allTicketCount;
297
    }
298
 
299
    public long getAllOpenTicketCount() {
300
        return allOpenTicketCount;
301
    }
302
 
303
    public long getActivityCount() {
304
        return activityCount;
305
    }
306
 
307
    public void setActivityCount(long activityCount) {
308
        this.activityCount = activityCount;
309
    }
2724 vikas 310
}