Blame | Last modification | View Log | RSS feed
/****/package in.shop2020.serving.controllers;import in.shop2020.crm.Activity;import in.shop2020.crm.Agent;import in.shop2020.crm.ContactMedium;import in.shop2020.crm.Ticket;import in.shop2020.crm.TicketCategory;import in.shop2020.crm.TicketPriority;import in.shop2020.crm.TicketStatus;import in.shop2020.model.v1.user.User;import in.shop2020.model.v1.user.UserContextException;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.thrift.TException;/*** Action class for ticket pages in CRM tool.** @author mandeep*/@SuppressWarnings("serial")public class UserTicketsController extends BaseController {private Map<Long, Ticket> ticketsMap = new HashMap<Long, Ticket>();private long userId;private String id;private String subject;private String description;private String ticketAssigneeEmailId;private String ticketStatus;private String ticketPriority;private String ticketCategory;private String contactMedium;private String contactTimestamp;private String contactingAgentEmailId;private Ticket ticket;private Activity lastActivity;private List<Activity> activities;private long orderId;public String index() throws Exception {createServiceClients();List<Ticket> ticketsList = crmServiceClient.getTickets(userId);if (ticketsList != null) {for (Ticket ticket : ticketsList) {ticketsMap.put(ticket.getId(), ticket);}}return INDEX;}public String editNew() {contactTimestamp = SDF.format(new Date());return EDIT_NEW;}public String update() throws Exception {createServiceClients();// Only subject and close date are editable fields for a ticketTicket ticket = new Ticket();ticket.setId(Long.parseLong(id));ticket.setSubject(subject);// Update when a ticket is closed!if (TicketStatus.CLOSED.name().equals(ticketStatus)) {ticket.setCloseDate(new Date().getTime());}Activity activity = new Activity();long creatorId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();activity.setContactingAgentId(creatorId);activity.setDescription(description);activity.setContactMedium(ContactMedium.valueOf(contactMedium));activity.setTicketAssigneeId(crmServiceClient.getAgentByEmailId(ticketAssigneeEmailId).getId());activity.setTicketPriority(TicketPriority.valueOf(ticketPriority));activity.setTicketStatus(TicketStatus.valueOf(ticketStatus));activity.setContactTimestamp(SDF.parse(contactTimestamp).getTime());activity.setCreatorId(creatorId);activity.setTicketCategory(TicketCategory.valueOf(ticketCategory));crmServiceClient.updateTicket(ticket);activity.setTicketId(ticket.getId());crmServiceClient.insertActivity(activity);return index();}public String edit() throws TException, UserContextException {createServiceClients();long ticketId = Long.parseLong(id);ticket = crmServiceClient.getTicket(ticketId);lastActivity = crmServiceClient.getLastActivity(ticketId);activities = crmServiceClient.getActivitiesForTicket(Long.parseLong(id));contactTimestamp = SDF.format(new Date());return EDIT;}public Map<Long, Ticket> getTickets() {return ticketsMap;}public User getUser() throws UserContextException, TException {return userContextServiceClient.getUserById(userId);}public Activity getLastActivity(long ticketId) throws TException {return crmServiceClient.getLastActivity(ticketId);}public Agent getAgent(long agentId) throws TException {return crmServiceClient.getAgent(agentId);}public TicketStatus[] getTicketStatuses() {return TicketStatus.values();}public TicketPriority[] getTicketPriorities() {return TicketPriority.values();}public ContactMedium[] getContactMedia() {return ContactMedium.values();}public String create() throws Exception {createServiceClients();long creatorId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();Ticket ticket = new Ticket();ticket.setOpenDate(new Date().getTime());ticket.setSubject(subject);ticket.setCustomerId(userId);ticket.setCreatorId(creatorId);ticket.setOrderId(creatorId);Activity activity = new Activity();activity.setCustomerId(userId);activity.setContactingAgentId(creatorId);activity.setDescription(description);activity.setContactMedium(ContactMedium.valueOf(contactMedium));activity.setTicketAssigneeId(crmServiceClient.getAgentByEmailId(ticketAssigneeEmailId).getId());activity.setTicketPriority(TicketPriority.valueOf(ticketPriority));activity.setTicketStatus(TicketStatus.OPEN);activity.setContactTimestamp(SDF.parse(contactTimestamp).getTime());activity.setCreatorId(creatorId);activity.setTicketCategory(TicketCategory.valueOf(ticketCategory));activity.setTicketId(crmServiceClient.insertTicket(ticket));crmServiceClient.insertActivity(activity);return index();}public TicketCategory[] getTicketCategories(){return TicketCategory.values();}public List<Agent> getAllAgents() throws TException{createServiceClients();return crmServiceClient.getAllAgents();}public Map<Long, Ticket> getTicketsMap() {return ticketsMap;}public void setUserId(String userId) {this.userId = Long.parseLong(userId);}public void setSubject(String subject) {this.subject = subject;}public void setDescription(String description) {this.description = description;}public void setTicketAssigneeEmailId(String ticketAssigneeEmailId) {this.ticketAssigneeEmailId = ticketAssigneeEmailId;}public void setTicketStatus(String ticketStatus) {this.ticketStatus = ticketStatus;}public void setTicketPriority(String ticketPriority) {this.ticketPriority = ticketPriority;}public void setContactMedium(String contactMedium) {this.contactMedium = contactMedium;}public void setContactTimestamp(String contactTimestamp) {this.contactTimestamp = contactTimestamp;}public void setContactingAgentEmailId(String contactingAgentEmailId) {this.contactingAgentEmailId = contactingAgentEmailId;}public void setId(String id) {this.id = id;}public Ticket getTicket() {return ticket;}public Activity getLastActivity() {return lastActivity;}public List<Activity> getActivities() {return activities;}public long getUserId() {return userId;}public String getContactTimestamp() {return contactTimestamp;}public String getTicketCategory() {return ticketCategory;}public void setTicketCategory(String ticketCategory) {this.ticketCategory = ticketCategory;}public long getOrderId() {return orderId;}public void setOrderId(String orderId) {if (orderId != null && !orderId.isEmpty()) {this.orderId = Long.parseLong(orderId);}}}