Rev 3090 | Blame | Last modification | View Log | RSS feed
/****/package in.shop2020.serving.controllers;import in.shop2020.crm.Activity;import in.shop2020.crm.ActivityType;import in.shop2020.crm.Agent;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 static final String AGENT = "Agent";private Map<Long, Ticket> ticketsMap = new HashMap<Long, Ticket>();private long userId;private String id;private String activityDescription;private String description;private String assigneeEmailId;private String status;private String priority;private String category;private String activityType;private Ticket ticket;private List<Activity> activities;private String orderId;public String index() {try {createServiceClients();List<Ticket> ticketsList = crmServiceClient.getTickets(userId);if (ticketsList != null) {for (Ticket ticket : ticketsList) {ticketsMap.put(ticket.getId(), ticket);}}} catch (TException e) {log.error("Error while getting tickets", e);return EXCEPTION;}return INDEX;}public String update() {try {createServiceClients();long creatorId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();// Only subject and close date are editable fields for a ticketTicket ticket = new Ticket();ticket.setId(Long.parseLong(id));ticket.setDescription(description);ticket.setCategory(TicketCategory.valueOf(category));ticket.setPriority(TicketPriority.valueOf(priority));ticket.setStatus(TicketStatus.valueOf(status));// Update when a ticket is closed!if (TicketStatus.CLOSED.name().equals(status)) {ticket.setCloseDate(new Date().getTime());} else {ticket.setCloseDateIsSet(false);}Activity activity = new Activity();activity.setDescription(activityDescription);activity.setCustomerId(userId);activity.setType(ActivityType.valueOf(activityType));activity.setTicketPriority(TicketPriority.valueOf(priority));activity.setTicketStatus(TicketStatus.valueOf(status));activity.setCreatorId(creatorId);activity.setTicketCategory(TicketCategory.valueOf(category));activity.setTicketDescription(description);// handling null values appropriatelyif (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {long assigneeId = crmServiceClient.getAgentByEmailId(assigneeEmailId).getId();ticket.setAssigneeId(assigneeId);activity.setTicketAssigneeId(assigneeId);} else {ticket.setAssigneeIdIsSet(false);activity.setTicketAssigneeIdIsSet(false);}crmServiceClient.updateTicket(ticket);activity.setTicketId(ticket.getId());crmServiceClient.insertActivity(activity);} catch (TException e) {log.error("Error while updating ticket", e);return EXCEPTION;}return index();}public String edit() {try {createServiceClients();long ticketId = Long.parseLong(id);ticket = crmServiceClient.getTicket(ticketId);activities = crmServiceClient.getActivitiesForTicket(Long.parseLong(id));} catch (TException e) {log.error("Error while loading edit page", e);return EXCEPTION;}return EDIT;}public Map<Long, Ticket> getTickets() {return ticketsMap;}public User getUser() throws UserContextException, TException {return userContextServiceClient.getUserById(userId);}public Agent getAgent(long agentId) throws TException {return crmServiceClient.getAgent(agentId);}public TicketStatus[] getTicketStatuses() {return TicketStatus.values();}public TicketPriority[] getTicketPriorities() {return TicketPriority.values();}public String create() {try {createServiceClients();long creatorId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();Ticket ticket = new Ticket();ticket.setDescription(description);ticket.setCustomerId(userId);ticket.setCreatorId(creatorId);if (orderId == null || orderId.isEmpty()) {ticket.setOrderIdIsSet(false);}else {ticket.setOrderId(Long.parseLong(orderId));}ticket.setStatus(TicketStatus.OPEN);ticket.setPriority(TicketPriority.valueOf(priority));ticket.setCategory(TicketCategory.valueOf(category));Activity activity = new Activity();// At creation of ticket activity's description is same as that of// ticketactivity.setDescription(description);activity.setCustomerId(userId);activity.setType(ActivityType.OTHER);activity.setTicketPriority(TicketPriority.valueOf(priority));activity.setTicketStatus(TicketStatus.OPEN);activity.setCreatorId(creatorId);activity.setTicketCategory(TicketCategory.valueOf(category));activity.setTicketDescription(description);// handling null values appropriatelyif (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {long assigneeId = crmServiceClient.getAgentByEmailId(assigneeEmailId).getId();ticket.setAssigneeId(assigneeId);activity.setTicketAssigneeId(assigneeId);} else {ticket.setAssigneeIdIsSet(false);activity.setTicketAssigneeIdIsSet(false);}activity.setTicketId(crmServiceClient.insertTicket(ticket));crmServiceClient.insertActivity(activity);} catch (TException e) {log.error("Error while creating ticket", e);return EXCEPTION;}return index();}public String getLoggerRole() {try {createServiceClients();return crmServiceClient.getRoleNamesForAgent(currentAgentEmailId).get(0);} catch (TException e) {log.error("Error while getting roles", e);return AGENT;}}public TicketCategory[] getTicketCategories() {return TicketCategory.values();}public ActivityType[] getActivityTypes() {return ActivityType.values();}public List<Agent> getAllAgents() {List<Agent> agents = null;try {createServiceClients();agents = crmServiceClient.getAllAgents();}catch (TException e) {String errorString = "Error while getting roles";log.error(errorString, e);addActionError(errorString);}return agents;}public Map<Long, Ticket> getTicketsMap() {return ticketsMap;}public void setUserId(String userId) {this.userId = Long.parseLong(userId);}public void setOrderId(String orderId) {this.orderId = orderId;}public long getUserId() {return userId;}public void setUserId(long userId) {this.userId = userId;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getActivityDescription() {return activityDescription;}public void setActivityDescription(String activityDescription) {this.activityDescription = activityDescription;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getAssigneeEmailId() {return assigneeEmailId;}public void setAssigneeEmailId(String assigneeEmailId) {this.assigneeEmailId = assigneeEmailId;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}public String getPriority() {return priority;}public void setPriority(String priority) {this.priority = priority;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}public String getActivityType() {return activityType;}public void setActivityType(String activityType) {this.activityType = activityType;}public Ticket getTicket() {return ticket;}public void setTicket(Ticket ticket) {this.ticket = ticket;}public List<Activity> getActivities() {return activities;}public void setActivities(List<Activity> activities) {this.activities = activities;}public String getOrderId() {return orderId;}public void setTicketsMap(Map<Long, Ticket> ticketsMap) {this.ticketsMap = ticketsMap;}}