Rev 3137 | Rev 3339 | 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.CRMService.Client;import in.shop2020.crm.Ticket;import in.shop2020.crm.TicketStatus;import in.shop2020.model.v1.order.Order;import in.shop2020.model.v1.order.OrderStatus;import in.shop2020.model.v1.order.TransactionServiceException;import in.shop2020.model.v1.user.Cart;import in.shop2020.model.v1.user.Line;import in.shop2020.model.v1.user.User;import in.shop2020.model.v1.user.UserCommunication;import in.shop2020.model.v1.user.UserCommunicationException;import in.shop2020.model.v1.user.UserContextException;import in.shop2020.model.v1.user.UserState;import in.shop2020.util.CRMConstants;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import org.apache.log4j.Logger;import org.apache.struts2.convention.annotation.Action;import org.apache.thrift.TException;/*** @author vikas**/@SuppressWarnings("serial")public class HomeController extends BaseController {private static final Logger log = Logger.getLogger(HomeController.class);private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");private String email;private long orderId;private String mobileNumber;private User user;private long orderCount;private long completedOrderCount;private long openOrderCount;private long failedOrderCount;private long userCommunicationCount;private long ticketCount;private long openTicketCount;private long closedTicketCount;private String ticketId;private String lastLogin;private double cartItems;private String couponCode = "";private long agentTicketCount;private long agentOpenTicketCount;private long unassignedTicketCount;private long allTicketCount;private long allOpenTicketCount;private long activityCount;@Action("/")public String index() throws Exception {createServiceClients();String returnValue = INPUT;try {if (email == null) {loadTicketCounts(crmServiceClient);return returnValue;}if (email != null && !email.isEmpty()) {user = userContextServiceClient.getUserByEmail(email);}else if (mobileNumber != null && !mobileNumber.isEmpty()) {user = userContextServiceClient.getUserByMobileNumber(Long.parseLong(mobileNumber));}else if (orderId != 0) {Order order = transactionServiceClient.getOrder(orderId);user = userContextServiceClient.getUserById(order.getCustomer_id());}else if (ticketId != null && !ticketId.isEmpty()) {Ticket ticket = crmServiceClient.getTicket(Long.parseLong(ticketId));user = userContextServiceClient.getUserById(ticket.getCustomerId());}if (user == null || user.getUserId() <= 0) {addActionError("Invalid Input");}else {loadUserCommunicationDetails(userContextServiceClient);loadOrderDetails(transactionServiceClient);loadCartDetails(userContextServiceClient);loadTicketDetails(crmServiceClient);loadActivityDetails(crmServiceClient);returnValue = INDEX;}}catch (Exception e) {addActionError("Invalid input");log.error("Error occurred", e);}if (INPUT.equals(returnValue)) {loadTicketCounts(crmServiceClient);}return returnValue;}private void loadActivityDetails(Client crmServiceClient) throws TException {List<Activity> activities = crmServiceClient.getActivities(user.getUserId());if (activities != null) {activityCount = activities.size();}}private void loadTicketCounts(Client crmServiceClient) throws TException {long currentAgentId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();List<Ticket> tickets = crmServiceClient.getAssignedTickets(currentAgentId);agentTicketCount = tickets.size();for (Ticket ticket : tickets) {if (TicketStatus.OPEN.equals(ticket.getStatus())) {agentOpenTicketCount++;}}List<Ticket> unassignedTickets = crmServiceClient.getUnassignedTickets();unassignedTicketCount = unassignedTickets.size();List<Ticket> allTickets = crmServiceClient.getAllTickets(currentAgentId);allTicketCount = allTickets.size();for (Ticket ticket : allTickets) {if (TicketStatus.OPEN.equals(ticket.getStatus())) {allOpenTicketCount++;}}}private void loadUserCommunicationDetails(in.shop2020.model.v1.user.UserContextService.Client userContextServiceClient)throws UserCommunicationException, TException {List<UserCommunication> userCommunication = userContextServiceClient.getUserCommunicationByUser(user.getUserId());userCommunicationCount = userCommunication.size();}private void loadOrderDetails(in.shop2020.model.v1.order.TransactionService.Client transactionServiceClient)throws TransactionServiceException, TException {List<Order> allOrders = transactionServiceClient.getOrdersForCustomer(user.getUserId(), 0, (new Date()).getTime(), null);orderCount = allOrders.size();for (Order o : allOrders) {if (o.getStatus() == OrderStatus.DELIVERY_SUCCESS) {completedOrderCount++;}else if (CRMConstants.failedStatusList.contains(o.getStatus())) {failedOrderCount++;}else {openOrderCount++;}}}private void loadCartDetails(in.shop2020.model.v1.user.UserContextService.Client userContextServiceClient)throws UserContextException, TException {UserState userState = userContextServiceClient.getUserState(user.getUserId());lastLogin = sdf.format(new Date(userState.getLastLogin()));Cart cart = null;try {cart = userContextServiceClient.getCurrentCart(user.getUserId());if (cart.getCouponCode() != null) {couponCode = cart.getCouponCode();}for (Line line : cart.getLines()) {cartItems += line.getQuantity();}} catch (Exception e) {log.warn("No cart assigned for this user", e);}}private void loadTicketDetails(Client crmServiceClient) throws TException {// Fetching tickets' infoticketCount = 0;openTicketCount = 0;closedTicketCount = 0;List<Ticket> tickets = crmServiceClient.getTickets(user.getUserId());if (tickets != null){for (Ticket ticket : tickets) {ticketCount++;if (!ticket.getStatus().equals(TicketStatus.CLOSED)) {openTicketCount++;}else {closedTicketCount++;}}}}public void setEmail(String email) {this.email = email;}public String getEmail() {return email;}public void setOrderId(String orderId) {if (orderId != null && !orderId.isEmpty()) {this.orderId = Long.parseLong(orderId);}}public Long getOrderId() {return orderId;}public User getUser() {return user;}public long getOrderCount() {return orderCount;}public long getCompletedOrderCount() {return completedOrderCount;}public long getOpenOrderCount() {return openOrderCount;}public long getFailedOrderCount() {return failedOrderCount;}public double getCartItems() {return cartItems;}public String getLastLogin() {return lastLogin;}public String getCouponCode() {return couponCode;}public long getUserCommunicationCount() {return userCommunicationCount;}public long getTicketCount() {return ticketCount;}public long getOpenTicketCount() {return openTicketCount;}public long getClosedTicketCount() {return closedTicketCount;}public void setMobileNumber(String mobileNumber) {this.mobileNumber = mobileNumber;}public String getTicketId() {return ticketId;}public void setTicketId(String ticketId) {this.ticketId = ticketId;}public long getAgentTicketCount() {return agentTicketCount;}public long getAgentOpenTicketCount() {return agentOpenTicketCount;}public long getUnassignedTicketCount() {return unassignedTicketCount;}public long getAllTicketCount() {return allTicketCount;}public long getAllOpenTicketCount() {return allOpenTicketCount;}public long getActivityCount() {return activityCount;}public void setActivityCount(long activityCount) {this.activityCount = activityCount;}}