Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3090 mandeep.dh 1
/**
2
 * 
3
 */
4
package in.shop2020.serving.controllers;
5
 
6
import in.shop2020.crm.Activity;
3106 mandeep.dh 7
import in.shop2020.crm.ActivityType;
3090 mandeep.dh 8
import in.shop2020.crm.Agent;
9
import in.shop2020.crm.Ticket;
10
import in.shop2020.crm.TicketCategory;
11
import in.shop2020.crm.TicketPriority;
12
import in.shop2020.crm.TicketStatus;
13
import in.shop2020.model.v1.user.User;
14
import in.shop2020.model.v1.user.UserContextException;
15
 
16
import java.util.Date;
17
import java.util.HashMap;
18
import java.util.List;
19
import java.util.Map;
20
 
21
import org.apache.thrift.TException;
22
 
23
/**
24
 * Action class for ticket pages in CRM tool.
3106 mandeep.dh 25
 * 
3090 mandeep.dh 26
 * @author mandeep
27
 */
28
@SuppressWarnings("serial")
29
public class UserTicketsController extends BaseController {
3106 mandeep.dh 30
    private static final String AGENT = "Agent";
31
 
3090 mandeep.dh 32
    private Map<Long, Ticket> ticketsMap = new HashMap<Long, Ticket>();
33
 
34
    private long              userId;
35
    private String            id;
3106 mandeep.dh 36
    private String            activityDescription;
3090 mandeep.dh 37
    private String            description;
3106 mandeep.dh 38
    private String            assigneeEmailId;
39
    private String            status;
40
    private String            priority;
41
    private String            category;
42
    private String            activityType;
3090 mandeep.dh 43
    private Ticket            ticket;
44
    private List<Activity>    activities;
3106 mandeep.dh 45
    private String            orderId;
3090 mandeep.dh 46
 
3106 mandeep.dh 47
    public String index() {
48
        try {
49
            createServiceClients();
50
            List<Ticket> ticketsList = crmServiceClient.getTickets(userId);
51
            if (ticketsList != null) {
52
                for (Ticket ticket : ticketsList) {
53
                    ticketsMap.put(ticket.getId(), ticket);
54
                }
3090 mandeep.dh 55
            }
3106 mandeep.dh 56
        } catch (TException e) {
57
            log.error("Error while getting tickets", e);
58
            return EXCEPTION;
3090 mandeep.dh 59
        }
60
        return INDEX;
61
    }
62
 
3106 mandeep.dh 63
    public String update() {
64
        try {
65
            createServiceClients();
3090 mandeep.dh 66
 
3106 mandeep.dh 67
            long creatorId = crmServiceClient.getAgentByEmailId(
68
                    currentAgentEmailId).getId();
3090 mandeep.dh 69
 
3106 mandeep.dh 70
            // Only subject and close date are editable fields for a ticket
71
            Ticket ticket = new Ticket();
72
            ticket.setId(Long.parseLong(id));
73
            ticket.setDescription(description);
74
            ticket.setCategory(TicketCategory.valueOf(category));
75
            ticket.setPriority(TicketPriority.valueOf(priority));
76
            ticket.setStatus(TicketStatus.valueOf(status));
3090 mandeep.dh 77
 
3106 mandeep.dh 78
            // Update when a ticket is closed!
79
            if (TicketStatus.CLOSED.name().equals(status)) {
80
                ticket.setCloseDate(new Date().getTime());
81
            } else {
82
                ticket.setCloseDateIsSet(false);
83
            }
3090 mandeep.dh 84
 
3106 mandeep.dh 85
            Activity activity = new Activity();
86
            activity.setDescription(activityDescription);
87
            activity.setCustomerId(userId);
88
            activity.setType(ActivityType.valueOf(activityType));
89
            activity.setTicketPriority(TicketPriority.valueOf(priority));
90
            activity.setTicketStatus(TicketStatus.valueOf(status));
91
            activity.setCreatorId(creatorId);
92
            activity.setTicketCategory(TicketCategory.valueOf(category));
93
            activity.setTicketDescription(description);
3090 mandeep.dh 94
 
3106 mandeep.dh 95
            // handling null values appropriately
96
            if (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {
97
                long assigneeId = crmServiceClient.getAgentByEmailId(
98
                        assigneeEmailId).getId();
99
                ticket.setAssigneeId(assigneeId);
100
                activity.setTicketAssigneeId(assigneeId);
101
            } else {
102
                ticket.setAssigneeIdIsSet(false);
103
                activity.setTicketAssigneeIdIsSet(false);
104
            }
3090 mandeep.dh 105
 
3106 mandeep.dh 106
            crmServiceClient.updateTicket(ticket);
107
            activity.setTicketId(ticket.getId());
108
            crmServiceClient.insertActivity(activity);
109
        } catch (TException e) {
110
            log.error("Error while updating ticket", e);
111
            return EXCEPTION;
112
        }
113
 
3090 mandeep.dh 114
        return index();
115
    }
116
 
3106 mandeep.dh 117
    public String edit() {
118
        try {
119
            createServiceClients();
120
            long ticketId = Long.parseLong(id);
121
            ticket = crmServiceClient.getTicket(ticketId);
122
            activities = crmServiceClient.getActivitiesForTicket(Long
123
                    .parseLong(id));
124
        } catch (TException e) {
125
            log.error("Error while loading edit page", e);
126
            return EXCEPTION;
127
        }
128
 
3090 mandeep.dh 129
        return EDIT;
130
    }
131
 
132
    public Map<Long, Ticket> getTickets() {
133
        return ticketsMap;
134
    }
135
 
136
    public User getUser() throws UserContextException, TException {
137
        return userContextServiceClient.getUserById(userId);
138
    }
139
 
3137 mandeep.dh 140
    public Agent getAgent(long agentId) {
141
        Agent agent = null;
142
 
143
        try {
144
            agent = crmServiceClient.getAgent(agentId);
145
        } catch (TException e) {
146
            String errorString = "Could not get agent for " + agentId;
147
            log.error(errorString, e);
148
            addActionError(errorString);
149
        }
150
 
151
        return agent;
3090 mandeep.dh 152
    }
153
 
154
    public TicketStatus[] getTicketStatuses() {
155
        return TicketStatus.values();
156
    }
157
 
158
    public TicketPriority[] getTicketPriorities() {
159
        return TicketPriority.values();
160
    }
161
 
3106 mandeep.dh 162
    public String create() {
163
        try {
164
            createServiceClients();
165
            long creatorId = crmServiceClient.getAgentByEmailId(
166
                    currentAgentEmailId).getId();
167
            Ticket ticket = new Ticket();
168
            ticket.setDescription(description);
169
            ticket.setCustomerId(userId);
170
            ticket.setCreatorId(creatorId);
3090 mandeep.dh 171
 
3106 mandeep.dh 172
            if (orderId == null || orderId.isEmpty()) {
173
                ticket.setOrderIdIsSet(false);
174
            }
175
            else {
176
                ticket.setOrderId(Long.parseLong(orderId));
177
            }
3090 mandeep.dh 178
 
3106 mandeep.dh 179
            ticket.setStatus(TicketStatus.OPEN);
180
            ticket.setPriority(TicketPriority.valueOf(priority));
181
            ticket.setCategory(TicketCategory.valueOf(category));
3090 mandeep.dh 182
 
3106 mandeep.dh 183
            Activity activity = new Activity();
184
            // At creation of ticket activity's description is same as that of
185
            // ticket
186
            activity.setDescription(description);
187
            activity.setCustomerId(userId);
188
            activity.setType(ActivityType.OTHER);
189
            activity.setTicketPriority(TicketPriority.valueOf(priority));
190
            activity.setTicketStatus(TicketStatus.OPEN);
191
            activity.setCreatorId(creatorId);
192
            activity.setTicketCategory(TicketCategory.valueOf(category));
193
            activity.setTicketDescription(description);
3090 mandeep.dh 194
 
3106 mandeep.dh 195
            // handling null values appropriately
196
            if (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {
197
                long assigneeId = crmServiceClient.getAgentByEmailId(
198
                        assigneeEmailId).getId();
199
                ticket.setAssigneeId(assigneeId);
200
                activity.setTicketAssigneeId(assigneeId);
201
            } else {
202
                ticket.setAssigneeIdIsSet(false);
203
                activity.setTicketAssigneeIdIsSet(false);
204
            }
205
 
206
            activity.setTicketId(crmServiceClient.insertTicket(ticket));
207
            crmServiceClient.insertActivity(activity);
208
        } catch (TException e) {
209
            log.error("Error while creating ticket", e);
210
            return EXCEPTION;
211
        }
212
 
3090 mandeep.dh 213
        return index();
214
    }
215
 
3106 mandeep.dh 216
    public String getLoggerRole() {
217
        try {
218
            createServiceClients();
219
            return crmServiceClient.getRoleNamesForAgent(currentAgentEmailId).get(0);
220
        } catch (TException e) {
221
            log.error("Error while getting roles", e);
222
            return AGENT;
223
        }
224
    }
225
 
226
    public TicketCategory[] getTicketCategories() {
3090 mandeep.dh 227
        return TicketCategory.values();
228
    }
229
 
3106 mandeep.dh 230
    public ActivityType[] getActivityTypes() {
231
        return ActivityType.values();
3090 mandeep.dh 232
    }
233
 
3106 mandeep.dh 234
    public List<Agent> getAllAgents() {
235
        List<Agent> agents = null;
236
 
237
        try {
238
            createServiceClients();
239
            agents = crmServiceClient.getAllAgents();            
240
        }
241
        catch (TException e) {
242
            String errorString = "Error while getting roles";
243
            log.error(errorString, e);
244
            addActionError(errorString);
245
        }
246
 
247
        return agents;
248
    }
249
 
3090 mandeep.dh 250
    public Map<Long, Ticket> getTicketsMap() {
251
        return ticketsMap;
252
    }
253
 
254
    public void setUserId(String userId) {
255
        this.userId = Long.parseLong(userId);
256
    }
257
 
3106 mandeep.dh 258
    public void setOrderId(String orderId) {
259
        this.orderId = orderId;
3090 mandeep.dh 260
    }
261
 
3106 mandeep.dh 262
    public long getUserId() {
263
        return userId;
264
    }
265
 
266
    public void setUserId(long userId) {
267
        this.userId = userId;
268
    }
269
 
270
    public String getId() {
271
        return id;
272
    }
273
 
274
    public void setId(String id) {
275
        this.id = id;
276
    }
277
 
278
    public String getActivityDescription() {
279
        return activityDescription;
280
    }
281
 
282
    public void setActivityDescription(String activityDescription) {
283
        this.activityDescription = activityDescription;
284
    }
285
 
286
    public String getDescription() {
287
        return description;
288
    }
289
 
3090 mandeep.dh 290
    public void setDescription(String description) {
291
        this.description = description;
292
    }
293
 
3106 mandeep.dh 294
    public String getAssigneeEmailId() {
295
        return assigneeEmailId;
3090 mandeep.dh 296
    }
297
 
3106 mandeep.dh 298
    public void setAssigneeEmailId(String assigneeEmailId) {
299
        this.assigneeEmailId = assigneeEmailId;
3090 mandeep.dh 300
    }
301
 
3106 mandeep.dh 302
    public String getStatus() {
303
        return status;
3090 mandeep.dh 304
    }
305
 
3106 mandeep.dh 306
    public void setStatus(String status) {
307
        this.status = status;
3090 mandeep.dh 308
    }
309
 
3106 mandeep.dh 310
    public String getPriority() {
311
        return priority;
3090 mandeep.dh 312
    }
313
 
3106 mandeep.dh 314
    public void setPriority(String priority) {
315
        this.priority = priority;
3090 mandeep.dh 316
    }
317
 
3106 mandeep.dh 318
    public String getCategory() {
319
        return category;
3090 mandeep.dh 320
    }
321
 
3106 mandeep.dh 322
    public void setCategory(String category) {
323
        this.category = category;
3090 mandeep.dh 324
    }
325
 
3106 mandeep.dh 326
    public String getActivityType() {
327
        return activityType;
3090 mandeep.dh 328
    }
329
 
3106 mandeep.dh 330
    public void setActivityType(String activityType) {
331
        this.activityType = activityType;
3090 mandeep.dh 332
    }
333
 
3106 mandeep.dh 334
    public Ticket getTicket() {
335
        return ticket;
3090 mandeep.dh 336
    }
337
 
3106 mandeep.dh 338
    public void setTicket(Ticket ticket) {
339
        this.ticket = ticket;
3090 mandeep.dh 340
    }
341
 
3106 mandeep.dh 342
    public List<Activity> getActivities() {
343
        return activities;
3090 mandeep.dh 344
    }
345
 
3106 mandeep.dh 346
    public void setActivities(List<Activity> activities) {
347
        this.activities = activities;
3090 mandeep.dh 348
    }
349
 
3106 mandeep.dh 350
    public String getOrderId() {
3090 mandeep.dh 351
        return orderId;
352
    }
353
 
3106 mandeep.dh 354
    public void setTicketsMap(Map<Long, Ticket> ticketsMap) {
355
        this.ticketsMap = ticketsMap;
3090 mandeep.dh 356
    }
357
}