Rev 3711 | Rev 4267 | 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.Agent;import in.shop2020.crm.SearchFilter;import in.shop2020.crm.Ticket;import in.shop2020.crm.TicketCategory;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.serving.auth.CRMAuthorizingRealm;import in.shop2020.thrift.clients.CRMClient;import in.shop2020.thrift.clients.TransactionClient;import in.shop2020.thrift.clients.UserClient;import in.shop2020.util.CRMConstants;import java.util.ArrayList;import java.util.Calendar;import java.util.Collections;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 String email;private String 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 agentOpenTicketCount;private long unassignedTicketCount;private long activityCount;private long customerActivityCount;private long pendingCodVerificationCount;private long agentUnreadActivityCount;private long openFailedPaymentsTicketCount;private long openDelayedDeliveryTicketCount;@Action("/")public String index() throws Exception {String returnValue = INPUT;try {if (email == null) {loadTicketCounts();loadCustomerActivities();return returnValue;}userContextServiceClient = new UserClient().getClient();if (email != null && !email.isEmpty()) {user = userContextServiceClient.getUserByEmail(email);} else if (mobileNumber != null && !mobileNumber.isEmpty()) {user = userContextServiceClient.getUserByMobileNumber(Long.parseLong(mobileNumber));} else if (orderId != null && !orderId.isEmpty()) {transactionServiceClient = new TransactionClient().getClient();Order order = transactionServiceClient.getOrder(Long.parseLong(orderId));user = userContextServiceClient.getUserById(order.getCustomer_id());} else if (ticketId != null && !ticketId.isEmpty()) {SearchFilter searchFilter = new SearchFilter();searchFilter.setTicketId(Long.parseLong(ticketId));crmServiceClient = new CRMClient().getClient();List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);if (!tickets.isEmpty()) {Ticket ticket = tickets.get(0);if (ticket.isSetCustomerId()) {user = userContextServiceClient.getUserById(ticket.getCustomerId());}}else {// resetting in case on invalid ticket IdticketId = null;}}if (user == null || user.getUserId() <= 0) {if (ticketId == null || ticketId.isEmpty()) {addActionError("Invalid input");}} else {loadUserCommunicationDetails();loadOrderDetails();loadCartDetails();loadTicketDetails();loadActivityDetails();returnValue = INDEX;}} catch (Exception e) {addActionError("Invalid input");log.error("Error occurred", e);}if (INPUT.equals(returnValue)) {loadTicketCounts();loadCustomerActivities();}return returnValue;}private void loadCustomerActivities() throws TException {SearchFilter searchFilter = new SearchFilter();searchFilter.setActivityCreatorIds(Collections.singletonList(CRMConstants.ADMIN_AGENT_ID));searchFilter.setIsActivityRead(false);agentUnreadActivityCount = 0;customerActivityCount = 0;crmServiceClient = new CRMClient().getClient();List<Activity> activities = crmServiceClient.getActivities(searchFilter);if (activities != null) {for (Activity activity : activities) {if (CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId() == activity.getTicketAssigneeId()) {agentUnreadActivityCount++;}}customerActivityCount = activities.size();}}private void loadActivityDetails() throws TException {SearchFilter searchFilter = new SearchFilter();searchFilter.setCustomerId(user.getUserId());crmServiceClient = new CRMClient().getClient();List<Activity> activities = crmServiceClient.getActivities(searchFilter);if (activities != null) {activityCount = activities.size();}}private void loadTicketCounts() throws TException {SearchFilter searchFilter = new SearchFilter();searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());searchFilter.getTicketStatuses().add(TicketStatus.OPEN);searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);searchFilter.setTicketAssigneeIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));crmServiceClient = new CRMClient().getClient();agentOpenTicketCount = crmServiceClient.getTickets(searchFilter).size();unassignedTicketCount = crmServiceClient.getUnassignedTickets().size();if (canVerifyCOD()) {searchFilter = new SearchFilter();searchFilter.setTicketCategory(TicketCategory.COD_VERIFICATION);searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());searchFilter.getTicketStatuses().add(TicketStatus.OPEN);searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);crmServiceClient = new CRMClient().getClient();pendingCodVerificationCount = crmServiceClient.getTickets(searchFilter).size();}if (canViewFailedPayments()) {searchFilter = new SearchFilter();searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());searchFilter.getTicketStatuses().add(TicketStatus.OPEN);searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);searchFilter.setTicketCategory(TicketCategory.FAILED_PAYMENTS);crmServiceClient = new CRMClient().getClient();openFailedPaymentsTicketCount = crmServiceClient.getTickets(searchFilter).size();}if (canViewDelayedDeliveries()) {searchFilter = new SearchFilter();searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());searchFilter.getTicketStatuses().add(TicketStatus.OPEN);searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);searchFilter.setTicketCategory(TicketCategory.DELAYED_DELIVERY);crmServiceClient = new CRMClient().getClient();openDelayedDeliveryTicketCount = crmServiceClient.getTickets(searchFilter).size();}}private void loadUserCommunicationDetails()throws UserCommunicationException, TException {userContextServiceClient = new UserClient().getClient();List<UserCommunication> userCommunication = userContextServiceClient.getUserCommunicationByUser(user.getUserId());userCommunicationCount = userCommunication.size();}private void loadOrderDetails() throws TransactionServiceException,TException {transactionServiceClient = new TransactionClient().getClient();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() throws UserContextException, TException {userContextServiceClient = new UserClient().getClient();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() throws TException {// Fetching tickets' infoticketCount = 0;openTicketCount = 0;closedTicketCount = 0;crmServiceClient = new CRMClient().getClient();SearchFilter searchFilter = new SearchFilter();searchFilter.setCustomerId(user.getUserId());List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);if (tickets != null) {for (Ticket ticket : tickets) {ticketCount++;if (!ticket.getStatus().equals(TicketStatus.CLOSED)) {openTicketCount++;} else {closedTicketCount++;}}}}public String getToday() {return SDF.format(new Date());}public String getYesterday() {Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.add(Calendar.DAY_OF_MONTH, -1);return SDF.format(calendar.getTime());}public List<Agent> getAllAgents() {return CRMAuthorizingRealm.getAgents();}public void setEmail(String email) {this.email = email;}public String getEmail() {return email;}public void setOrderId(String orderId) {this.orderId = orderId;}public String 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 int getCartItems() {return (int)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 getAgentOpenTicketCount() {return agentOpenTicketCount;}public long getUnassignedTicketCount() {return unassignedTicketCount;}public long getActivityCount() {return activityCount;}public void setActivityCount(long activityCount) {this.activityCount = activityCount;}public long getCustomerActivityCount() {return customerActivityCount;}public void setCustomerActivityCount(long customerActivityCount) {this.customerActivityCount = customerActivityCount;}public long getPendingCodVerificationCount() {return pendingCodVerificationCount;}public void setPendingCodVerificationCount(long pendingCodVerificationCount) {this.pendingCodVerificationCount = pendingCodVerificationCount;}public long getOpenFailedPaymentsTicketCount() {return openFailedPaymentsTicketCount;}public void setOpenFailedPaymentsTicketCount(long openFailedPaymentsTicketCount) {this.openFailedPaymentsTicketCount = openFailedPaymentsTicketCount;}public long getAgentUnreadActivityCount() {return agentUnreadActivityCount;}public void setAgentUnreadActivityCount(long agentUnreadActivityCount) {this.agentUnreadActivityCount = agentUnreadActivityCount;}public long getOpenDelayedDeliveryTicketCount() {return openDelayedDeliveryTicketCount;}public void setOpenDelayedDeliveryTicketCount(long openDelayedDeliveryTicketCount) {this.openDelayedDeliveryTicketCount = openDelayedDeliveryTicketCount;}}