Subversion Repositories SmartDukaan

Rev

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.serving.auth.CRMAuthorizingRealm;
import in.shop2020.thrift.clients.CRMClient;
import in.shop2020.thrift.clients.HelperClient;
import in.shop2020.util.CRMConstants;
import in.shop2020.utils.HelperService.Client;

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            subject;
    private String            body;
    private String            userEmailId;
    private String            customerMobileNumber;
    private String            creatorId;

    public String index() {
        try {
            SearchFilter searchFilter = new SearchFilter();
            crmServiceClient         = new CRMClient().getClient();

            if (creatorId != null && !creatorId.isEmpty()) {
                searchFilter.setActivityCreatorIds(Collections.singletonList(Long.parseLong(creatorId)));
                searchFilter.setIsActivityRead(false);
                activities = crmServiceClient.getActivities(searchFilter);
            } else {
                searchFilter.setActivityCreatorIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));
                activities = crmServiceClient.getActivities(searchFilter);
            }
        } catch (TException e) {
            log.error("Error while retrieving activities for "
                    + currentAgentEmailId, e);
        }

        return INDEX;
    }

    public String create() throws Exception {
        Activity activity = new Activity();
        activity.setDescription(description);
        activity.setType(ActivityType.valueOf(type));
        activity.setCreatorId(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId());

        if (customerMobileNumber != null && !customerMobileNumber.isEmpty()) {
            activity.setCustomerMobileNumber(customerMobileNumber);
        }

        if (ActivityType.SEND_EMAIL_TO_CUSTOMER.equals(activity.getType())) {
            log.info("Sending mail");
            Client helperClient = new HelperClient().getClient();
            activity.setUserEmailId(helperClient.saveUserEmailForSending(
                    userEmailId, CRMConstants.CRM_EMAIL_SENDOR, subject, body,
                    null, CRMConstants.CRM_EMAIL_TYPE));

            activity.setDescription("Subject: " + subject + "\n\n" + "Body: "
                    + body);
        }

        crmServiceClient         = new CRMClient().getClient();
        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 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 getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getUserEmailId() {
        return userEmailId;
    }

    public void setUserEmailId(String userEmailId) {
        this.userEmailId = userEmailId;
    }

    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;
    }
}