Subversion Repositories SmartDukaan

Rev

Rev 3339 | Rev 3397 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3339 Rev 3390
Line 1... Line 1...
1
package in.shop2020.serving.controllers;
1
package in.shop2020.serving.controllers;
2
 
2
 
3
import in.shop2020.crm.Activity;
3
import in.shop2020.crm.Activity;
4
import in.shop2020.crm.CRMService.Client;
4
import in.shop2020.crm.SearchFilter;
5
import in.shop2020.crm.Ticket;
5
import in.shop2020.crm.Ticket;
6
import in.shop2020.crm.TicketStatus;
6
import in.shop2020.crm.TicketStatus;
7
import in.shop2020.model.v1.order.Order;
7
import in.shop2020.model.v1.order.Order;
8
import in.shop2020.model.v1.order.OrderStatus;
8
import in.shop2020.model.v1.order.OrderStatus;
9
import in.shop2020.model.v1.order.TransactionServiceException;
9
import in.shop2020.model.v1.order.TransactionServiceException;
Line 12... Line 12...
12
import in.shop2020.model.v1.user.User;
12
import in.shop2020.model.v1.user.User;
13
import in.shop2020.model.v1.user.UserCommunication;
13
import in.shop2020.model.v1.user.UserCommunication;
14
import in.shop2020.model.v1.user.UserCommunicationException;
14
import in.shop2020.model.v1.user.UserCommunicationException;
15
import in.shop2020.model.v1.user.UserContextException;
15
import in.shop2020.model.v1.user.UserContextException;
16
import in.shop2020.model.v1.user.UserState;
16
import in.shop2020.model.v1.user.UserState;
-
 
17
import in.shop2020.serving.auth.CRMAuthorizingRealm;
-
 
18
import in.shop2020.thrift.clients.CRMClient;
-
 
19
import in.shop2020.thrift.clients.TransactionClient;
-
 
20
import in.shop2020.thrift.clients.UserClient;
17
import in.shop2020.util.CRMConstants;
21
import in.shop2020.util.CRMConstants;
18
 
22
 
19
import java.text.SimpleDateFormat;
23
import java.util.Collections;
20
import java.util.Date;
24
import java.util.Date;
21
import java.util.List;
25
import java.util.List;
22
 
26
 
23
import org.apache.log4j.Logger;
27
import org.apache.log4j.Logger;
24
import org.apache.struts2.convention.annotation.Action;
28
import org.apache.struts2.convention.annotation.Action;
Line 29... Line 33...
29
 *
33
 *
30
 */
34
 */
31
@SuppressWarnings("serial")
35
@SuppressWarnings("serial")
32
public class HomeController extends BaseController {
36
public class HomeController extends BaseController {
33
    private static final Logger log = Logger.getLogger(HomeController.class);
37
    private static final Logger log = Logger.getLogger(HomeController.class);
34
    private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
 
35
 
38
 
36
    private String email;
39
    private String email;
37
    private long orderId;
40
    private String orderId;
38
    private String mobileNumber;
41
    private String mobileNumber;
39
    private User user;
42
    private User user;
40
    private long orderCount;
43
    private long orderCount;
41
    private long completedOrderCount;
44
    private long completedOrderCount;
42
    private long openOrderCount;
45
    private long openOrderCount;
Line 57... Line 60...
57
    private long activityCount;
60
    private long activityCount;
58
    private long customerActivityCount;
61
    private long customerActivityCount;
59
 
62
 
60
    @Action("/")
63
    @Action("/")
61
    public String index() throws Exception {
64
    public String index() throws Exception {
62
        createServiceClients();
-
 
63
        String returnValue = INPUT;
65
        String returnValue = INPUT;
64
 
66
 
65
        try {
67
        try {
66
            if (email == null) {
68
            if (email == null) {
67
                loadTicketCounts(crmServiceClient);
69
                loadTicketCounts();
68
                loadCustomerActivities(crmServiceClient);
70
                loadCustomerActivities();
69
                return returnValue;
71
                return returnValue;
70
            }
72
            }
71
 
73
 
-
 
74
            userContextServiceClient = new UserClient().getClient();
72
            if (email != null && !email.isEmpty()) {
75
            if (email != null && !email.isEmpty()) {
73
                user = userContextServiceClient.getUserByEmail(email);
76
                user = userContextServiceClient.getUserByEmail(email);
74
            }
77
            }
75
            else if (mobileNumber != null && !mobileNumber.isEmpty()) {
78
            else if (mobileNumber != null && !mobileNumber.isEmpty()) {
76
                user = userContextServiceClient.getUserByMobileNumber(Long.parseLong(mobileNumber));
79
                user = userContextServiceClient.getUserByMobileNumber(Long.parseLong(mobileNumber));
77
            }
80
            }
78
            else if (orderId != 0) {
81
            else if (orderId != null && !orderId.isEmpty()) {
-
 
82
                transactionServiceClient = new TransactionClient().getClient();
79
                Order order = transactionServiceClient.getOrder(orderId);
83
                Order order = transactionServiceClient.getOrder(Long.parseLong(orderId));
80
                user = userContextServiceClient.getUserById(order.getCustomer_id());
84
                user = userContextServiceClient.getUserById(order.getCustomer_id());
81
            }
85
            }
82
            else if (ticketId != null && !ticketId.isEmpty()) {
86
            else if (ticketId != null && !ticketId.isEmpty()) {
-
 
87
                SearchFilter searchFilter = new SearchFilter();
-
 
88
                searchFilter.setTicketId(Long.parseLong(ticketId));
-
 
89
                crmServiceClient         = new CRMClient().getClient();
83
                Ticket ticket = crmServiceClient.getTicket(Long.parseLong(ticketId));
90
                List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);
-
 
91
                if (!tickets.isEmpty()) {
-
 
92
                    Ticket ticket = tickets.get(0);
-
 
93
                    if (ticket.isSetCustomerId()) {
84
                user = userContextServiceClient.getUserById(ticket.getCustomerId());
94
                        user = userContextServiceClient.getUserById(ticket.getCustomerId());
-
 
95
                    }
-
 
96
                    else {
-
 
97
                        // TODO support unregistered users!
-
 
98
                    }
-
 
99
                }
85
            }
100
            }
86
 
101
 
87
            if (user == null || user.getUserId() <= 0) {
102
            if (user == null || user.getUserId() <= 0) {
88
                addActionError("Invalid Input");
103
                addActionError("Invalid Input");
89
            }
104
            }
90
            else {
105
            else {
91
                loadUserCommunicationDetails(userContextServiceClient);
106
                loadUserCommunicationDetails();
92
                loadOrderDetails(transactionServiceClient);
107
                loadOrderDetails();
93
                loadCartDetails(userContextServiceClient);
108
                loadCartDetails();
94
                loadTicketDetails(crmServiceClient);
109
                loadTicketDetails();
95
                loadActivityDetails(crmServiceClient);
110
                loadActivityDetails();
96
                returnValue = INDEX;
111
                returnValue = INDEX;
97
            }
112
            }
98
        }
113
        }
99
        catch (Exception e) {
114
        catch (Exception e) {
100
            addActionError("Invalid input");
115
            addActionError("Invalid input");
101
            log.error("Error occurred", e);
116
            log.error("Error occurred", e);
102
        }
117
        }
103
 
118
 
104
        if (INPUT.equals(returnValue)) {
119
        if (INPUT.equals(returnValue)) {
105
            loadTicketCounts(crmServiceClient);
120
            loadTicketCounts();
106
        }
121
        }
107
 
122
 
108
        return returnValue;
123
        return returnValue;
109
    }
124
    }
110
 
125
 
111
    private void loadCustomerActivities(Client crmServiceClient) throws TException {
126
    private void loadCustomerActivities() throws TException {
-
 
127
        SearchFilter searchFilter = new SearchFilter();
-
 
128
        searchFilter.setActivityCreatorIds(Collections.singletonList(CRMConstants.ADMIN_AGENT_ID));
-
 
129
        searchFilter.setIsActivityRead(false);
-
 
130
 
-
 
131
        crmServiceClient         = new CRMClient().getClient();
112
        List<Activity> activities = crmServiceClient.getActivitiesByCreator(CRMConstants.ADMIN_AGENT_ID);
132
        List<Activity> activities = crmServiceClient.getActivities(searchFilter);
113
        if (activities != null) {
133
        if (activities != null) {
114
            customerActivityCount = activities.size();
134
            customerActivityCount = activities.size();
115
        }
135
        }
116
    }
136
    }
117
 
137
 
118
    private void loadActivityDetails(Client crmServiceClient) throws TException {
138
    private void loadActivityDetails() throws TException {
-
 
139
        SearchFilter searchFilter = new SearchFilter();
-
 
140
        searchFilter.setCustomerId(user.getUserId());
-
 
141
 
-
 
142
        crmServiceClient         = new CRMClient().getClient();
119
        List<Activity> activities = crmServiceClient.getActivities(user.getUserId());
143
        List<Activity> activities = crmServiceClient.getActivities(searchFilter);
120
        if (activities != null) {
144
        if (activities != null) {
121
            activityCount = activities.size();
145
            activityCount = activities.size();
122
        }
146
        }
123
    }
147
    }
124
 
148
 
125
    private void loadTicketCounts(Client crmServiceClient) throws TException {
149
    private void loadTicketCounts() throws TException {
-
 
150
        SearchFilter searchFilter = new SearchFilter();
126
        long currentAgentId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();
151
        searchFilter.setTicketAssigneeIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));
-
 
152
 
-
 
153
        crmServiceClient         = new CRMClient().getClient();
127
        List<Ticket> tickets = crmServiceClient.getAssignedTickets(currentAgentId);
154
        List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);
128
        agentTicketCount = tickets.size();
155
        agentTicketCount = tickets.size();
129
        for (Ticket ticket : tickets) {
156
        for (Ticket ticket : tickets) {
130
            if (TicketStatus.OPEN.equals(ticket.getStatus())) {
157
            if (TicketStatus.OPEN.equals(ticket.getStatus())) {
131
                agentOpenTicketCount++;
158
                agentOpenTicketCount++;
132
            }
159
            }
133
        }
160
        }
134
        
161
 
135
        List<Ticket> unassignedTickets = crmServiceClient.getUnassignedTickets();
162
        List<Ticket> unassignedTickets = crmServiceClient.getUnassignedTickets();
136
        unassignedTicketCount = unassignedTickets.size();
163
        unassignedTicketCount = unassignedTickets.size();
137
        
164
        
138
        List<Ticket> allTickets = crmServiceClient.getAllTickets(currentAgentId);
165
        List<Ticket> allTickets = tickets;
139
        allTicketCount = allTickets.size();
166
        allTicketCount = allTickets.size();
140
        for (Ticket ticket : allTickets) {
167
        for (Ticket ticket : allTickets) {
141
            if (TicketStatus.OPEN.equals(ticket.getStatus())) {
168
            if (TicketStatus.OPEN.equals(ticket.getStatus())) {
142
                allOpenTicketCount++;
169
                allOpenTicketCount++;
143
            }
170
            }
144
        }
171
        }
145
    }
172
    }
146
 
173
 
147
    private void loadUserCommunicationDetails(
174
    private void loadUserCommunicationDetails()
148
            in.shop2020.model.v1.user.UserContextService.Client userContextServiceClient)
-
 
149
            throws UserCommunicationException, TException {
175
            throws UserCommunicationException, TException {
-
 
176
        userContextServiceClient = new UserClient().getClient();
150
        List<UserCommunication> userCommunication = userContextServiceClient.getUserCommunicationByUser(user.getUserId());
177
        List<UserCommunication> userCommunication = userContextServiceClient.getUserCommunicationByUser(user.getUserId());
151
        userCommunicationCount = userCommunication.size();
178
        userCommunicationCount = userCommunication.size();
152
    }
179
    }
153
 
180
 
154
    private void loadOrderDetails(
181
    private void loadOrderDetails()
155
            in.shop2020.model.v1.order.TransactionService.Client transactionServiceClient)
-
 
156
            throws TransactionServiceException, TException {
182
            throws TransactionServiceException, TException {
-
 
183
        transactionServiceClient = new TransactionClient().getClient();
157
        List<Order> allOrders = transactionServiceClient.getOrdersForCustomer(user.getUserId(), 0, (new Date()).getTime(), null);
184
        List<Order> allOrders = transactionServiceClient.getOrdersForCustomer(user.getUserId(), 0, (new Date()).getTime(), null);
158
        orderCount = allOrders.size();
185
        orderCount = allOrders.size();
159
 
186
 
160
        for (Order o : allOrders) {
187
        for (Order o : allOrders) {
161
            if (o.getStatus() == OrderStatus.DELIVERY_SUCCESS) {
188
            if (o.getStatus() == OrderStatus.DELIVERY_SUCCESS) {
Line 168... Line 195...
168
                openOrderCount++;
195
                openOrderCount++;
169
            }
196
            }
170
        }
197
        }
171
    }
198
    }
172
 
199
 
173
    private void loadCartDetails(
200
    private void loadCartDetails()
174
            in.shop2020.model.v1.user.UserContextService.Client userContextServiceClient)
-
 
175
            throws UserContextException, TException {
201
            throws UserContextException, TException {
-
 
202
        userContextServiceClient = new UserClient().getClient();
176
        UserState userState = userContextServiceClient.getUserState(user.getUserId());
203
        UserState userState = userContextServiceClient.getUserState(user.getUserId());
177
        lastLogin = sdf.format(new Date(userState.getLastLogin()));
204
        lastLogin = SDF.format(new Date(userState.getLastLogin()));
178
        Cart cart = null;
205
        Cart cart = null;
179
 
206
 
180
        try {
207
        try {
181
            cart = userContextServiceClient.getCurrentCart(user.getUserId());
208
            cart = userContextServiceClient.getCurrentCart(user.getUserId());
182
            if (cart.getCouponCode() != null) {
209
            if (cart.getCouponCode() != null) {
Line 188... Line 215...
188
        } catch (Exception e) {
215
        } catch (Exception e) {
189
            log.warn("No cart assigned for this user", e);
216
            log.warn("No cart assigned for this user", e);
190
        }
217
        }
191
    }
218
    }
192
 
219
 
193
    private void loadTicketDetails(Client crmServiceClient) throws TException {
220
    private void loadTicketDetails() throws TException {
194
        // Fetching tickets' info
221
        // Fetching tickets' info
195
        ticketCount = 0;
222
        ticketCount = 0;
196
        openTicketCount = 0;
223
        openTicketCount = 0;
197
        closedTicketCount = 0;
224
        closedTicketCount = 0;
198
 
225
 
-
 
226
        crmServiceClient         = new CRMClient().getClient();
-
 
227
        SearchFilter searchFilter = new SearchFilter();
-
 
228
        searchFilter.setCustomerId(user.getUserId());
-
 
229
 
199
        List<Ticket> tickets = crmServiceClient.getTickets(user.getUserId());
230
        List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);
200
        if (tickets != null) 
231
        if (tickets != null) 
201
        {
232
        {
202
            for (Ticket ticket : tickets) {
233
            for (Ticket ticket : tickets) {
203
                ticketCount++;
234
                ticketCount++;
204
                if (!ticket.getStatus().equals(TicketStatus.CLOSED)) {
235
                if (!ticket.getStatus().equals(TicketStatus.CLOSED)) {
Line 218... Line 249...
218
    public String getEmail() {
249
    public String getEmail() {
219
        return email;
250
        return email;
220
    }
251
    }
221
 
252
 
222
    public void setOrderId(String orderId) {
253
    public void setOrderId(String orderId) {
223
        if (orderId != null && !orderId.isEmpty()) {
-
 
224
            this.orderId = Long.parseLong(orderId);
254
        this.orderId = orderId;
225
        }
-
 
226
    }
255
    }
227
 
256
 
228
    public Long getOrderId() {
257
    public String getOrderId() {
229
        return orderId;
258
        return orderId;
230
    }
259
    }
231
    
260
    
232
    public User getUser() {
261
    public User getUser() {
233
        return user;
262
        return user;