Rev 3339 | Rev 3397 | Go to most recent revision | Blame | Compare with Previous | 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.SearchFilter;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 in.shop2020.serving.auth.CRMAuthorizingRealm;import in.shop2020.thrift.clients.CRMClient;import in.shop2020.thrift.clients.UserClient;import java.util.ArrayList;import java.util.Collections;import java.util.List;import org.apache.thrift.TException;/*** @author mandeep**/public class TicketsController extends BaseController {/****/private static final long serialVersionUID = 1L;List<Ticket> tickets = new ArrayList<Ticket>();private String userEmailId;private String description;private String assigneeEmailId;private String priority;private String category;private String orderId;public String create() {try {long creatorId = CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId();Ticket ticket = new Ticket();ticket.setDescription(description);ticket.setCreatorId(creatorId);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("Creating Ticket");activity.setType(ActivityType.OTHER);activity.setTicketPriority(TicketPriority.valueOf(priority));activity.setTicketStatus(TicketStatus.OPEN);activity.setCreatorId(creatorId);activity.setTicketCategory(TicketCategory.valueOf(category));activity.setTicketDescription(description);if (orderId != null && !orderId.isEmpty()) {ticket.setOrderId(Long.parseLong(orderId));}if (userEmailId != null && !userEmailId.isEmpty()) {User user = null;userContextServiceClient = new UserClient().getClient();try {user = userContextServiceClient.getUserByEmail(userEmailId);} catch (UserContextException e) {log.error("Could not fetch user for " + userEmailId, e);}if (user != null && user.getUserId() != -1) {ticket.setCustomerId(user.getUserId());activity.setCustomerId(user.getUserId());}else {ticket.setCustomerEmailId(userEmailId);activity.setCustomerEmailId(userEmailId);}}// handling null values appropriatelyif (assigneeEmailId != null && !assigneeEmailId.isEmpty()) {long assigneeId = CRMAuthorizingRealm.getAgent(assigneeEmailId).getId();ticket.setAssigneeId(assigneeId);activity.setTicketAssigneeId(assigneeId);}crmServiceClient = new CRMClient().getClient();crmServiceClient.insertTicket(ticket, activity);} catch (TException e) {log.error("Error while creating ticket", e);return EXCEPTION;}return getMyOpenTickets();}public String getMyOpenTickets() {try {Agent agent = CRMAuthorizingRealm.getAgent(currentAgentEmailId);SearchFilter searchFilter = new SearchFilter();searchFilter.setTicketAssigneeIds(Collections.singletonList(agent.getId()));crmServiceClient = new CRMClient().getClient();for (Ticket ticket : crmServiceClient.getTickets(searchFilter)) {if (TicketStatus.OPEN.equals(ticket.getStatus())) {tickets.add(ticket);}}} catch (TException e) {String errorString = "Error getting tickets for "+ currentAgentEmailId;log.error(errorString, e);addActionError(errorString);}return INDEX;}public String getMyTickets() {try {Agent agent = CRMAuthorizingRealm.getAgent(currentAgentEmailId);SearchFilter searchFilter = new SearchFilter();searchFilter.setTicketAssigneeIds(Collections.singletonList(agent.getId()));crmServiceClient = new CRMClient().getClient();tickets = crmServiceClient.getTickets(searchFilter);} catch (TException e) {String errorString = "Error getting tickets for "+ currentAgentEmailId;log.error(errorString, e);addActionError(errorString);}return INDEX;}public String getUnassignedTickets() {try {crmServiceClient = new CRMClient().getClient();tickets = crmServiceClient.getUnassignedTickets();} catch (TException e) {String errorString = "Error getting tickets for "+ currentAgentEmailId;log.error(errorString, e);addActionError(errorString);}return INDEX;}public String getAllTickets() {try {SearchFilter searchFilter = new SearchFilter();searchFilter.setTicketAssigneeIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));crmServiceClient = new CRMClient().getClient();tickets = crmServiceClient.getTickets(searchFilter);} catch (TException e) {String errorString = "Error getting tickets for "+ currentAgentEmailId;log.error(errorString, e);addActionError(errorString);}return INDEX;}public String getAllOpenTickets() {try {SearchFilter searchFilter = new SearchFilter();searchFilter.setTicketAssigneeIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));crmServiceClient = new CRMClient().getClient();for (Ticket ticket : crmServiceClient.getTickets(searchFilter)) {if (TicketStatus.OPEN.equals(ticket.getStatus())) {tickets.add(ticket);}}} catch (TException e) {String errorString = "Error getting tickets for "+ currentAgentEmailId;log.error(errorString, e);addActionError(errorString);}return INDEX;}public User getUser(Long userId) {User user = null;try {userContextServiceClient = new UserClient().getClient();user = userContextServiceClient.getUserById(userId);} catch (UserContextException e) {String errorString = "Could not fetch user for " + userId;log.error(errorString, e);addActionError(errorString);} catch (TException e) {String errorString = "Could not create client";log.error(errorString, e);addActionError(errorString);}return user;}public Agent getAgent(long agentId) throws TException {return CRMAuthorizingRealm.getAgent(agentId);}public List<Agent> getAllAgents() {return CRMAuthorizingRealm.getAgents();}public TicketCategory[] getTicketCategories() {return TicketCategory.values();}public TicketPriority[] getTicketPriorities() {return TicketPriority.values();}public List<Ticket> getTickets() {return tickets;}public void setTickets(List<Ticket> tickets) {this.tickets = tickets;}public String getUserEmailId() {return userEmailId;}public void setUserEmailId(String userEmailId) {this.userEmailId = userEmailId;}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 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 getOrderId() {return orderId;}public void setOrderId(String orderId) {this.orderId = orderId;}}