Subversion Repositories SmartDukaan

Rev

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