Rev 3096 | Rev 3269 | 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 java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import java.util.HashSet;import java.util.List;import java.util.Set;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 static final Set<OrderStatus> failedStatusList = new HashSet<OrderStatus>(Arrays.asList(new OrderStatus[] {OrderStatus.SALES_RET_RESHIPPED,OrderStatus.SALES_RET_REFUNDED,OrderStatus.DOA_INVALID_REFUNDED,OrderStatus.DOA_INVALID_RESHIPPED,OrderStatus.DOA_VALID_REFUNDED,OrderStatus.DOA_RESHIPPED,OrderStatus.REFUNDED,OrderStatus.REJECTED,OrderStatus.FAILED}));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 {try {loadTicketCounts();if (email == null) {return INPUT;}createServiceClients();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");return INPUT;}loadUserCommunicationDetails(userContextServiceClient);loadOrderDetails(transactionServiceClient);loadCartDetails(userContextServiceClient);loadTicketDetails(crmServiceClient);loadActivityDetails(crmServiceClient);return INDEX;}catch (Exception e) {addActionError("Invalid Input");log.error("Error occurred", e);return INPUT;}}private void loadActivityDetails(Client crmServiceClient) throws TException {List<Activity> activities = crmServiceClient.getActivities(user.getUserId());if (activities != null) {activityCount = activities.size();}}private void loadTicketCounts() throws TException {// createServiceClients();// long currentAgentId = crmServiceClient.getAgentByEmailId(currentAgentEmailId).getId();// crmServiceClient.getTickets(currentAgentId);}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 (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;}}