Subversion Repositories SmartDukaan

Rev

Rev 3339 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3339 Rev 3390
Line 4... Line 4...
4
package in.shop2020.serving.controllers;
4
package in.shop2020.serving.controllers;
5
 
5
 
6
import in.shop2020.crm.Activity;
6
import in.shop2020.crm.Activity;
7
import in.shop2020.crm.ActivityType;
7
import in.shop2020.crm.ActivityType;
8
import in.shop2020.crm.Agent;
8
import in.shop2020.crm.Agent;
-
 
9
import in.shop2020.crm.SearchFilter;
9
import in.shop2020.crm.Ticket;
10
import in.shop2020.crm.Ticket;
10
import in.shop2020.crm.TicketCategory;
11
import in.shop2020.crm.TicketCategory;
11
import in.shop2020.crm.TicketPriority;
12
import in.shop2020.crm.TicketPriority;
12
import in.shop2020.crm.TicketStatus;
13
import in.shop2020.crm.TicketStatus;
13
import in.shop2020.model.v1.user.User;
14
import in.shop2020.model.v1.user.User;
14
import in.shop2020.model.v1.user.UserContextException;
15
import in.shop2020.model.v1.user.UserContextException;
-
 
16
import in.shop2020.serving.auth.CRMAuthorizingRealm;
-
 
17
import in.shop2020.thrift.clients.CRMClient;
15
import in.shop2020.thrift.clients.HelperClient;
18
import in.shop2020.thrift.clients.HelperClient;
-
 
19
import in.shop2020.thrift.clients.UserClient;
16
import in.shop2020.util.CRMConstants;
20
import in.shop2020.util.CRMConstants;
17
import in.shop2020.utils.HelperService.Client;
21
import in.shop2020.utils.HelperService.Client;
18
import in.shop2020.utils.HelperServiceException;
22
import in.shop2020.utils.HelperServiceException;
19
 
23
 
20
import java.util.Collections;
-
 
21
import java.util.Date;
24
import java.util.Date;
22
import java.util.HashMap;
25
import java.util.HashMap;
23
import java.util.List;
26
import java.util.List;
24
import java.util.Map;
27
import java.util.Map;
25
 
28
 
-
 
29
import org.apache.shiro.SecurityUtils;
26
import org.apache.thrift.TException;
30
import org.apache.thrift.TException;
27
 
31
 
28
/**
32
/**
29
 * Action class for ticket pages in CRM tool.
33
 * Action class for ticket pages in CRM tool.
30
 * 
34
 * 
31
 * @author mandeep
35
 * @author mandeep
32
 */
36
 */
33
@SuppressWarnings("serial")
37
@SuppressWarnings("serial")
34
public class UserTicketsController extends BaseController {
38
public class UserTicketsController extends BaseController {
35
    private static final String AGENT      = "Agent";
-
 
36
 
-
 
37
    private Map<Long, Ticket>   ticketsMap = new HashMap<Long, Ticket>();
39
    private Map<Long, Ticket>   ticketsMap = new HashMap<Long, Ticket>();
38
 
40
 
39
    private String              userId;
41
    private String              userId;
40
    private String              userEmailId;
42
    private String              userEmailId;
41
    private String              id;
43
    private String              id;
Line 52... Line 54...
52
    private String              subject;
54
    private String              subject;
53
    private String              body;
55
    private String              body;
54
 
56
 
55
    public String index() {
57
    public String index() {
56
        try {
58
        try {
57
            createServiceClients();
-
 
58
            
-
 
59
            List<Ticket> ticketsList = null;
59
            List<Ticket> ticketsList = null;
-
 
60
            SearchFilter searchFilter = new SearchFilter();
-
 
61
            crmServiceClient = new CRMClient().getClient();
60
 
62
 
61
            if (id != null && !id.isEmpty()) {
63
            if (id != null && !id.isEmpty()) {
62
                log.info("Fetching TicketId: " + id);
64
                searchFilter.setTicketId(Long.parseLong(id));
63
                ticketsList = Collections.singletonList(crmServiceClient.getTicket(Long.parseLong(id)));
65
                ticketsList = crmServiceClient.getTickets(searchFilter);
64
            }
66
            } else {
65
            else {
67
                searchFilter.setCustomerId(Long.parseLong(userId));
66
                ticketsList = crmServiceClient.getTickets(Long.parseLong(userId));
68
                ticketsList = crmServiceClient.getTickets(searchFilter);
67
            }
69
            }
68
 
70
 
69
            if (ticketsList != null) {
71
            if (ticketsList != null) {
70
                for (Ticket ticket : ticketsList) {
72
                for (Ticket ticket : ticketsList) {
71
                    log.info("Adding TicketId: " + ticket.getId());
-
 
72
                    ticketsMap.put(ticket.getId(), ticket);
73
                    ticketsMap.put(ticket.getId(), ticket);
73
                }
74
                }
74
            }
75
            }
75
        } catch (TException e) {
76
        } catch (TException e) {
76
            log.error("Error while getting tickets", e);
77
            log.error("Error while getting tickets", e);
Line 80... Line 81...
80
        return INDEX;
81
        return INDEX;
81
    }
82
    }
82
 
83
 
83
    public String update() {
84
    public String update() {
84
        try {
85
        try {
85
            createServiceClients();
-
 
86
 
-
 
87
            long creatorId = crmServiceClient.getAgentByEmailId(
86
            long creatorId = CRMAuthorizingRealm.getAgent(currentAgentEmailId)
88
                    currentAgentEmailId).getId();
87
                    .getId();
89
 
88
 
90
            // Only subject and close date are editable fields for a ticket
89
            // Only subject and close date are editable fields for a ticket
91
            Ticket ticket = new Ticket();
90
            Ticket ticket = new Ticket();
92
            ticket.setId(Long.parseLong(id));
91
            ticket.setId(Long.parseLong(id));
93
            ticket.setDescription(description);
92
            ticket.setDescription(description);
Line 119... Line 118...
119
 
118
 
120
            log.info(activityType);
119
            log.info(activityType);
121
            if (ActivityType.SEND_EMAIL_TO_CUSTOMER.equals(activity.getType())) {
120
            if (ActivityType.SEND_EMAIL_TO_CUSTOMER.equals(activity.getType())) {
122
                log.info("Sending mail");
121
                log.info("Sending mail");
123
                Client helperClient = new HelperClient().getClient();
122
                Client helperClient = new HelperClient().getClient();
124
                activity.setEmailId(helperClient.saveUserEmailForSending(
123
                activity.setUserEmailId(helperClient.saveUserEmailForSending(
125
                        userEmailId, CRMConstants.CRM_EMAIL_SENDOR, subject,
124
                        userEmailId, CRMConstants.CRM_EMAIL_SENDOR, subject,
126
                        body, null, CRMConstants.CRM_EMAIL_TYPE));
125
                        body, null, CRMConstants.CRM_EMAIL_TYPE));
127
 
126
 
128
                // We change activityType to OTHER when pop up box for email
127
                // We change activityType to OTHER when pop up box for email
129
                // closes
128
                // closes
Line 131... Line 130...
131
                        + "Body: " + body);
130
                        + "Body: " + body);
132
            }
131
            }
133
 
132
 
134
            // handling null values appropriately
133
            // handling null values appropriately
135
            if (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {
134
            if (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {
136
                long assigneeId = crmServiceClient.getAgentByEmailId(
135
                long assigneeId = CRMAuthorizingRealm.getAgent(
137
                        assigneeEmailId).getId();
136
                        assigneeEmailId).getId();
138
                ticket.setAssigneeId(assigneeId);
137
                ticket.setAssigneeId(assigneeId);
139
                activity.setTicketAssigneeId(assigneeId);
138
                activity.setTicketAssigneeId(assigneeId);
140
            }
139
            }
141
 
140
 
-
 
141
            crmServiceClient = new CRMClient().getClient();
142
            crmServiceClient.updateTicket(ticket, activity);
142
            crmServiceClient.updateTicket(ticket, activity);
143
        } catch (TException e) {
143
        } catch (TException e) {
144
            log.error("Error while updating ticket", e);
144
            log.error("Error while updating ticket", e);
145
            return EXCEPTION;
145
            return EXCEPTION;
146
        } catch (HelperServiceException hse) {
146
        } catch (HelperServiceException hse) {
Line 151... Line 151...
151
        return index();
151
        return index();
152
    }
152
    }
153
 
153
 
154
    public String edit() {
154
    public String edit() {
155
        try {
155
        try {
156
            createServiceClients();
-
 
157
            long ticketId = Long.parseLong(id);
156
            long ticketId = Long.parseLong(id);
-
 
157
            SearchFilter searchFilter = new SearchFilter();
-
 
158
            searchFilter.setTicketId(ticketId);
-
 
159
            crmServiceClient = new CRMClient().getClient();
158
            ticket = crmServiceClient.getTicket(ticketId);
160
            ticket = crmServiceClient.getTickets(searchFilter).get(0);
159
            activities = crmServiceClient.getActivitiesForTicket(ticketId);
161
            activities = crmServiceClient.getActivities(searchFilter);
160
            subject = createSubjectString(ticket);
162
            subject = createSubjectString(ticket);
161
            userId = String.valueOf(ticket.getCustomerId());
163
            userId = String.valueOf(ticket.getCustomerId());
162
            userEmailId = ticket.getCustomerEmailId();
164
            userEmailId = ticket.getCustomerEmailId();
163
        } catch (TException e) {
165
        } catch (TException e) {
164
            log.error("Error while loading edit page", e);
166
            log.error("Error while loading edit page", e);
Line 176... Line 178...
176
    public Map<Long, Ticket> getTickets() {
178
    public Map<Long, Ticket> getTickets() {
177
        return ticketsMap;
179
        return ticketsMap;
178
    }
180
    }
179
 
181
 
180
    public User getUser() throws UserContextException, TException {
182
    public User getUser() throws UserContextException, TException {
-
 
183
        userContextServiceClient = new UserClient().getClient();
181
        return userContextServiceClient.getUserById(Long.parseLong(userId));
184
        return userContextServiceClient.getUserById(Long.parseLong(userId));
182
    }
185
    }
183
 
186
 
184
    public Agent getAgent(long agentId) {
187
    public Agent getAgent(long agentId) throws TException {
185
        Agent agent = null;
-
 
186
 
-
 
187
        try {
-
 
188
            agent = crmServiceClient.getAgent(agentId);
188
        return CRMAuthorizingRealm.getAgent(agentId);
189
        } catch (TException e) {
-
 
190
            String errorString = "Could not get agent for " + agentId;
-
 
191
            log.error(errorString, e);
-
 
192
            addActionError(errorString);
-
 
193
        }
-
 
194
 
-
 
195
        return agent;
-
 
196
    }
189
    }
197
 
190
 
198
    public TicketStatus[] getTicketStatuses() {
191
    public TicketStatus[] getTicketStatuses() {
199
        return TicketStatus.values();
192
        return TicketStatus.values();
200
    }
193
    }
Line 203... Line 196...
203
        return TicketPriority.values();
196
        return TicketPriority.values();
204
    }
197
    }
205
 
198
 
206
    public String create() {
199
    public String create() {
207
        try {
200
        try {
208
            createServiceClients();
-
 
209
            long creatorId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();
201
            long creatorId = CRMAuthorizingRealm.getAgent(currentAgentEmailId)
-
 
202
                    .getId();
210
            Ticket ticket = new Ticket();
203
            Ticket ticket = new Ticket();
211
            ticket.setDescription(description);
204
            ticket.setDescription(description);
212
            ticket.setCreatorId(creatorId);
205
            ticket.setCreatorId(creatorId);
213
            ticket.setStatus(TicketStatus.OPEN);
206
            ticket.setStatus(TicketStatus.OPEN);
214
            ticket.setPriority(TicketPriority.valueOf(priority));
207
            ticket.setPriority(TicketPriority.valueOf(priority));
215
            ticket.setCategory(TicketCategory.valueOf(category));
208
            ticket.setCategory(TicketCategory.valueOf(category));
216
            
209
 
217
            Activity activity = new Activity();
210
            Activity activity = new Activity();
218
            // At creation of ticket activity's description is same as that of
211
            // At creation of ticket activity's description is same as that of
219
            // ticket
212
            // ticket
220
            activity.setDescription("Creating Ticket");
213
            activity.setDescription("Creating Ticket");
221
            activity.setType(ActivityType.OTHER);
214
            activity.setType(ActivityType.OTHER);
Line 234... Line 227...
234
                activity.setCustomerId(Long.parseLong(userId));
227
                activity.setCustomerId(Long.parseLong(userId));
235
            }
228
            }
236
 
229
 
237
            // handling null values appropriately
230
            // handling null values appropriately
238
            if (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {
231
            if (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {
239
                long assigneeId = crmServiceClient.getAgentByEmailId(assigneeEmailId).getId();
232
                long assigneeId = CRMAuthorizingRealm.getAgent(assigneeEmailId)
-
 
233
                        .getId();
240
                ticket.setAssigneeId(assigneeId);
234
                ticket.setAssigneeId(assigneeId);
241
                activity.setTicketAssigneeId(assigneeId);
235
                activity.setTicketAssigneeId(assigneeId);
242
            }
236
            }
243
 
237
 
-
 
238
            crmServiceClient = new CRMClient().getClient();
244
            crmServiceClient.insertTicket(ticket, activity);
239
            crmServiceClient.insertTicket(ticket, activity);
245
        } catch (TException e) {
240
        } catch (TException e) {
246
            log.error("Error while creating ticket", e);
241
            log.error("Error while creating ticket", e);
247
            return EXCEPTION;
242
            return EXCEPTION;
248
        }
243
        }
249
 
244
 
250
        return index();
245
        return index();
251
    }
246
    }
252
 
247
 
253
    public String getLoggerRole() {
248
    public boolean isAssigneeEditable() {
254
        try {
-
 
255
            createServiceClients();
-
 
256
            return crmServiceClient.getRoleNamesForAgent(currentAgentEmailId)
249
        return SecurityUtils.getSubject().hasRole("TeamLead");
257
                    .get(0);
-
 
258
        } catch (TException e) {
-
 
259
            log.error("Error while getting roles", e);
-
 
260
            return AGENT;
-
 
261
        }
-
 
262
    }
250
    }
263
 
251
 
264
    public TicketCategory[] getTicketCategories() {
252
    public TicketCategory[] getTicketCategories() {
265
        return TicketCategory.values();
253
        return TicketCategory.values();
266
    }
254
    }
Line 268... Line 256...
268
    public ActivityType[] getActivityTypes() {
256
    public ActivityType[] getActivityTypes() {
269
        return ActivityType.values();
257
        return ActivityType.values();
270
    }
258
    }
271
 
259
 
272
    public List<Agent> getAllAgents() {
260
    public List<Agent> getAllAgents() {
273
        List<Agent> agents = null;
-
 
274
 
-
 
275
        try {
-
 
276
            createServiceClients();
-
 
277
            agents = crmServiceClient.getAllAgents();
261
        return CRMAuthorizingRealm.getAgents();
278
        } catch (TException e) {
-
 
279
            String errorString = "Error while getting roles";
-
 
280
            log.error(errorString, e);
-
 
281
            addActionError(errorString);
-
 
282
        }
-
 
283
 
-
 
284
        return agents;
-
 
285
    }
262
    }
286
 
263
 
287
    public Map<Long, Ticket> getTicketsMap() {
264
    public Map<Long, Ticket> getTicketsMap() {
288
        return ticketsMap;
265
        return ticketsMap;
289
    }
266
    }