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
 
140
    public Agent getAgent(long agentId) throws TException {
141
        return crmServiceClient.getAgent(agentId);
142
    }
143
 
144
    public TicketStatus[] getTicketStatuses() {
145
        return TicketStatus.values();
146
    }
147
 
148
    public TicketPriority[] getTicketPriorities() {
149
        return TicketPriority.values();
150
    }
151
 
3106 mandeep.dh 152
    public String create() {
153
        try {
154
            createServiceClients();
155
            long creatorId = crmServiceClient.getAgentByEmailId(
156
                    currentAgentEmailId).getId();
157
            Ticket ticket = new Ticket();
158
            ticket.setDescription(description);
159
            ticket.setCustomerId(userId);
160
            ticket.setCreatorId(creatorId);
3090 mandeep.dh 161
 
3106 mandeep.dh 162
            if (orderId == null || orderId.isEmpty()) {
163
                ticket.setOrderIdIsSet(false);
164
            }
165
            else {
166
                ticket.setOrderId(Long.parseLong(orderId));
167
            }
3090 mandeep.dh 168
 
3106 mandeep.dh 169
            ticket.setStatus(TicketStatus.OPEN);
170
            ticket.setPriority(TicketPriority.valueOf(priority));
171
            ticket.setCategory(TicketCategory.valueOf(category));
3090 mandeep.dh 172
 
3106 mandeep.dh 173
            Activity activity = new Activity();
174
            // At creation of ticket activity's description is same as that of
175
            // ticket
176
            activity.setDescription(description);
177
            activity.setCustomerId(userId);
178
            activity.setType(ActivityType.OTHER);
179
            activity.setTicketPriority(TicketPriority.valueOf(priority));
180
            activity.setTicketStatus(TicketStatus.OPEN);
181
            activity.setCreatorId(creatorId);
182
            activity.setTicketCategory(TicketCategory.valueOf(category));
183
            activity.setTicketDescription(description);
3090 mandeep.dh 184
 
3106 mandeep.dh 185
            // handling null values appropriately
186
            if (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {
187
                long assigneeId = crmServiceClient.getAgentByEmailId(
188
                        assigneeEmailId).getId();
189
                ticket.setAssigneeId(assigneeId);
190
                activity.setTicketAssigneeId(assigneeId);
191
            } else {
192
                ticket.setAssigneeIdIsSet(false);
193
                activity.setTicketAssigneeIdIsSet(false);
194
            }
195
 
196
            activity.setTicketId(crmServiceClient.insertTicket(ticket));
197
            crmServiceClient.insertActivity(activity);
198
        } catch (TException e) {
199
            log.error("Error while creating ticket", e);
200
            return EXCEPTION;
201
        }
202
 
3090 mandeep.dh 203
        return index();
204
    }
205
 
3106 mandeep.dh 206
    public String getLoggerRole() {
207
        try {
208
            createServiceClients();
209
            return crmServiceClient.getRoleNamesForAgent(currentAgentEmailId).get(0);
210
        } catch (TException e) {
211
            log.error("Error while getting roles", e);
212
            return AGENT;
213
        }
214
    }
215
 
216
    public TicketCategory[] getTicketCategories() {
3090 mandeep.dh 217
        return TicketCategory.values();
218
    }
219
 
3106 mandeep.dh 220
    public ActivityType[] getActivityTypes() {
221
        return ActivityType.values();
3090 mandeep.dh 222
    }
223
 
3106 mandeep.dh 224
    public List<Agent> getAllAgents() {
225
        List<Agent> agents = null;
226
 
227
        try {
228
            createServiceClients();
229
            agents = crmServiceClient.getAllAgents();            
230
        }
231
        catch (TException e) {
232
            String errorString = "Error while getting roles";
233
            log.error(errorString, e);
234
            addActionError(errorString);
235
        }
236
 
237
        return agents;
238
    }
239
 
3090 mandeep.dh 240
    public Map<Long, Ticket> getTicketsMap() {
241
        return ticketsMap;
242
    }
243
 
244
    public void setUserId(String userId) {
245
        this.userId = Long.parseLong(userId);
246
    }
247
 
3106 mandeep.dh 248
    public void setOrderId(String orderId) {
249
        this.orderId = orderId;
3090 mandeep.dh 250
    }
251
 
3106 mandeep.dh 252
    public long getUserId() {
253
        return userId;
254
    }
255
 
256
    public void setUserId(long userId) {
257
        this.userId = userId;
258
    }
259
 
260
    public String getId() {
261
        return id;
262
    }
263
 
264
    public void setId(String id) {
265
        this.id = id;
266
    }
267
 
268
    public String getActivityDescription() {
269
        return activityDescription;
270
    }
271
 
272
    public void setActivityDescription(String activityDescription) {
273
        this.activityDescription = activityDescription;
274
    }
275
 
276
    public String getDescription() {
277
        return description;
278
    }
279
 
3090 mandeep.dh 280
    public void setDescription(String description) {
281
        this.description = description;
282
    }
283
 
3106 mandeep.dh 284
    public String getAssigneeEmailId() {
285
        return assigneeEmailId;
3090 mandeep.dh 286
    }
287
 
3106 mandeep.dh 288
    public void setAssigneeEmailId(String assigneeEmailId) {
289
        this.assigneeEmailId = assigneeEmailId;
3090 mandeep.dh 290
    }
291
 
3106 mandeep.dh 292
    public String getStatus() {
293
        return status;
3090 mandeep.dh 294
    }
295
 
3106 mandeep.dh 296
    public void setStatus(String status) {
297
        this.status = status;
3090 mandeep.dh 298
    }
299
 
3106 mandeep.dh 300
    public String getPriority() {
301
        return priority;
3090 mandeep.dh 302
    }
303
 
3106 mandeep.dh 304
    public void setPriority(String priority) {
305
        this.priority = priority;
3090 mandeep.dh 306
    }
307
 
3106 mandeep.dh 308
    public String getCategory() {
309
        return category;
3090 mandeep.dh 310
    }
311
 
3106 mandeep.dh 312
    public void setCategory(String category) {
313
        this.category = category;
3090 mandeep.dh 314
    }
315
 
3106 mandeep.dh 316
    public String getActivityType() {
317
        return activityType;
3090 mandeep.dh 318
    }
319
 
3106 mandeep.dh 320
    public void setActivityType(String activityType) {
321
        this.activityType = activityType;
3090 mandeep.dh 322
    }
323
 
3106 mandeep.dh 324
    public Ticket getTicket() {
325
        return ticket;
3090 mandeep.dh 326
    }
327
 
3106 mandeep.dh 328
    public void setTicket(Ticket ticket) {
329
        this.ticket = ticket;
3090 mandeep.dh 330
    }
331
 
3106 mandeep.dh 332
    public List<Activity> getActivities() {
333
        return activities;
3090 mandeep.dh 334
    }
335
 
3106 mandeep.dh 336
    public void setActivities(List<Activity> activities) {
337
        this.activities = activities;
3090 mandeep.dh 338
    }
339
 
3106 mandeep.dh 340
    public String getOrderId() {
3090 mandeep.dh 341
        return orderId;
342
    }
343
 
3106 mandeep.dh 344
    public void setTicketsMap(Map<Long, Ticket> ticketsMap) {
345
        this.ticketsMap = ticketsMap;
3090 mandeep.dh 346
    }
347
}