Rev 4142 | Rev 5224 | 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.TicketCategory;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 in.shop2020.util.CRMConstants;import java.text.ParseException;import java.util.ArrayList;import java.util.Collections;import java.util.List;import org.apache.thrift.TException;/*** @author mandeep**/public class ActivityController extends BaseController {/****/private static final long serialVersionUID = 1L;private List<Activity> activities;private String activityId;private String description;private String type;private String category;private String customerMobileNumber;private String creatorId;private String[] agentIds;private String startTimestamp;private String endTimestamp;private String customerEmailId;private String customerName;private String userId;public String index() {try {SearchFilter searchFilter = new SearchFilter();if (activityId != null && !activityId.isEmpty()) {searchFilter.setActivityId(Long.parseLong(activityId));} else if (userId != null && !userId.isEmpty()) {searchFilter.setCustomerId(Long.parseLong(userId));} else if (creatorId != null && !creatorId.isEmpty()) {searchFilter.setActivityCreatorIds(Collections.singletonList(Long.parseLong(creatorId)));searchFilter.setIsActivityRead(false);} else if (agentIds != null && agentIds.length != 0) {searchFilter.setActivityCreatorIds(new ArrayList<Long>());for (String agentId : agentIds) {searchFilter.getActivityCreatorIds().add(CRMAuthorizingRealm.getAgent(agentId).getId());}if (type != null && !type.isEmpty()) {searchFilter.setActivityType(ActivityType.valueOf(type));}if (category != null && !category.isEmpty()) {searchFilter.setTicketCategory(TicketCategory.valueOf(category));}try {if (startTimestamp != null && !startTimestamp.isEmpty()) {searchFilter.setStartTimestamp(SDF.parse(startTimestamp).getTime());}if (endTimestamp != null && !endTimestamp.isEmpty()) {searchFilter.setEndTimestamp(SDF.parse(endTimestamp).getTime());}} catch (ParseException e) {log.error("Error parsing timestamps", e);}} else {searchFilter.setActivityCreatorIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));}crmServiceClient = new CRMClient().getClient();activities = crmServiceClient.getActivities(searchFilter);} catch (TException e) {log.error("Error while retrieving activities for "+ currentAgentEmailId, e);} catch (NumberFormatException e) {log.error("Error parsing userId: " + userId, e);}return INDEX;}public String editNew() {return EDIT_NEW;}public String create() throws Exception {Activity activity = new Activity();activity.setDescription(description);activity.setType(ActivityType.valueOf(type));activity.setCreatorId(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId());if (userId != null && !userId.isEmpty()) {activity.setCustomerId(Long.parseLong(userId));} else {User user = null;userContextServiceClient = new UserClient().getClient();try {if (customerName != null && !customerName.isEmpty()) {activity.setCustomerName(customerName);}if (customerEmailId != null && !customerEmailId.isEmpty()) {activity.setCustomerEmailId(customerEmailId);user = userContextServiceClient.getUserByEmail(customerEmailId);}if ((user == null || user.getUserId() == -1)&& customerMobileNumber != null&& !customerMobileNumber.isEmpty()) {activity.setCustomerMobileNumber(customerMobileNumber);user = userContextServiceClient.getUserByMobileNumber(Long.parseLong(customerMobileNumber));}} catch (UserContextException e) {log.error("Could not fetch user for: " + customerEmailId + " "+ customerMobileNumber + " " + customerName, e);}if (user != null && user.getUserId() != -1) {activity.setCustomerId(user.getUserId());}}crmServiceClient = new CRMClient().getClient();activityId = String.valueOf(crmServiceClient.insertActivity(activity));return index();}public String markAsRead() {try {crmServiceClient = new CRMClient().getClient();crmServiceClient.markAsRead(Long.parseLong(activityId),CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId());} catch (NumberFormatException e) {log.error("Could not parse activity id from" + activityId, e);} catch (TException e) {log.error("Could not mark the activityId: " + activityId+ " as read", e);}return index();}public String getUnreadActivities() {try {SearchFilter searchFilter = new SearchFilter();searchFilter.setIsActivityRead(false);searchFilter.setActivityCreatorIds(Collections.singletonList(CRMConstants.ADMIN_AGENT_ID));searchFilter.setTicketAssigneeIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));crmServiceClient = new CRMClient().getClient();activities = crmServiceClient.getActivities(searchFilter);} catch (TException e) {log.error("Could not get agentId for: " + currentAgentEmailId, e);}return INDEX;}public ActivityType[] getActivityTypes() {return ActivityType.values();}public Agent getAgent(long agentId) throws TException {return CRMAuthorizingRealm.getAgent(agentId);}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getCustomerMobileNumber() {return customerMobileNumber;}public void setCustomerMobileNumber(String customerMobileNumber) {this.customerMobileNumber = customerMobileNumber;}public List<Activity> getActivities() {return activities;}public String getCreatorId() {return creatorId;}public void setCreatorId(String creatorId) {this.creatorId = creatorId;}public String getActivityId() {return activityId;}public void setActivityId(String activityId) {this.activityId = activityId;}public String[] getAgentIds() {return agentIds;}public void setAgentIds(String[] agentIds) {this.agentIds = agentIds;}public String getStartTimestamp() {return startTimestamp;}public void setStartTimestamp(String startTimestamp) {this.startTimestamp = startTimestamp;}public String getEndTimestamp() {return endTimestamp;}public void setEndTimestamp(String endTimestamp) {this.endTimestamp = endTimestamp;}public void setActivities(List<Activity> activities) {this.activities = activities;}public String getCustomerEmailId() {return customerEmailId;}public void setCustomerEmailId(String customerEmailId) {this.customerEmailId = customerEmailId;}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}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 String getCustomerName() {return customerName;}public void setCustomerName(String customerName) {this.customerName = customerName;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}}