Subversion Repositories SmartDukaan

Rev

Rev 3390 | Rev 3405 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3339 mandeep.dh 1
/**
2
 * 
3
 */
4
package in.shop2020.serving.controllers;
5
 
6
import in.shop2020.crm.Activity;
7
import in.shop2020.crm.ActivityType;
8
import in.shop2020.crm.Agent;
3390 mandeep.dh 9
import in.shop2020.crm.SearchFilter;
10
import in.shop2020.serving.auth.CRMAuthorizingRealm;
11
import in.shop2020.thrift.clients.CRMClient;
3339 mandeep.dh 12
import in.shop2020.thrift.clients.HelperClient;
13
import in.shop2020.util.CRMConstants;
14
import in.shop2020.utils.HelperService.Client;
15
 
3397 mandeep.dh 16
import java.text.ParseException;
17
import java.util.ArrayList;
3390 mandeep.dh 18
import java.util.Collections;
3339 mandeep.dh 19
import java.util.List;
20
 
21
import org.apache.thrift.TException;
22
 
23
/**
24
 * @author mandeep
25
 * 
26
 */
27
public class ActivityController extends BaseController {
28
    /**
29
     * 
30
     */
31
    private static final long serialVersionUID = 1L;
32
    private List<Activity>    activities;
3390 mandeep.dh 33
    private String            activityId;
3339 mandeep.dh 34
    private String            description;
35
    private String            type;
36
    private String            subject;
37
    private String            body;
38
    private String            userEmailId;
39
    private String            customerMobileNumber;
40
    private String            creatorId;
3397 mandeep.dh 41
    private String[]          agentIds;
42
    private String            startTimestamp;
43
    private String            endTimestamp;
3339 mandeep.dh 44
 
45
    public String index() {
46
        try {
3390 mandeep.dh 47
            SearchFilter searchFilter = new SearchFilter();
48
 
3339 mandeep.dh 49
            if (creatorId != null && !creatorId.isEmpty()) {
3390 mandeep.dh 50
                searchFilter.setActivityCreatorIds(Collections.singletonList(Long.parseLong(creatorId)));
51
                searchFilter.setIsActivityRead(false);
3397 mandeep.dh 52
            }
53
            else if (agentIds != null && agentIds.length != 0) {
54
                searchFilter.setActivityCreatorIds(new ArrayList<Long>());
55
                for (String agentId : agentIds) {
56
                    searchFilter.getActivityCreatorIds().add(CRMAuthorizingRealm.getAgent(agentId).getId());
57
                }
58
 
59
                try {
60
                    if (startTimestamp != null && !startTimestamp.isEmpty()) {
61
                        searchFilter.setStartTimestamp(SDF.parse(startTimestamp).getTime());
62
                    }
63
 
64
                    if (endTimestamp != null && !endTimestamp.isEmpty()) {
65
                        searchFilter.setEndTimestamp(SDF.parse(endTimestamp).getTime());
66
                    }
67
                }
68
                catch (ParseException e) {
69
                    log.error("Error parsing timestamps", e);
70
                }
71
            }
72
            else {
3390 mandeep.dh 73
                searchFilter.setActivityCreatorIds(Collections.singletonList(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId()));
3339 mandeep.dh 74
            }
3397 mandeep.dh 75
 
76
            crmServiceClient         = new CRMClient().getClient();
77
            activities = crmServiceClient.getActivities(searchFilter);
3339 mandeep.dh 78
        } catch (TException e) {
79
            log.error("Error while retrieving activities for "
80
                    + currentAgentEmailId, e);
81
        }
82
 
83
        return INDEX;
84
    }
85
 
86
    public String create() throws Exception {
87
        Activity activity = new Activity();
88
        activity.setDescription(description);
89
        activity.setType(ActivityType.valueOf(type));
3390 mandeep.dh 90
        activity.setCreatorId(CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId());
3339 mandeep.dh 91
 
92
        if (customerMobileNumber != null && !customerMobileNumber.isEmpty()) {
93
            activity.setCustomerMobileNumber(customerMobileNumber);
94
        }
95
 
96
        if (ActivityType.SEND_EMAIL_TO_CUSTOMER.equals(activity.getType())) {
97
            log.info("Sending mail");
98
            Client helperClient = new HelperClient().getClient();
3390 mandeep.dh 99
            activity.setUserEmailId(helperClient.saveUserEmailForSending(
3339 mandeep.dh 100
                    userEmailId, CRMConstants.CRM_EMAIL_SENDOR, subject, body,
101
                    null, CRMConstants.CRM_EMAIL_TYPE));
102
 
103
            activity.setDescription("Subject: " + subject + "\n\n" + "Body: "
104
                    + body);
105
        }
106
 
3390 mandeep.dh 107
        crmServiceClient         = new CRMClient().getClient();
3339 mandeep.dh 108
        crmServiceClient.insertActivity(activity);
109
 
110
        return index();
111
    }
112
 
3390 mandeep.dh 113
    public String markAsRead()
114
    {
115
        try {
116
            crmServiceClient         = new CRMClient().getClient();
117
            crmServiceClient.markAsRead(Long.parseLong(activityId), CRMAuthorizingRealm.getAgent(currentAgentEmailId).getId());
118
        } catch (NumberFormatException e) {
119
            log.error("Could not parse activity id from" + activityId, e);
120
        } catch (TException e) {
121
            log.error("Could not mark the activityId: " + activityId + " as read", e);
122
        }
123
 
124
        return INDEX;
125
    }
126
 
3339 mandeep.dh 127
    public ActivityType[] getActivityTypes() {
128
        return ActivityType.values();
129
    }
130
 
131
    public Agent getAgent(long agentId) throws TException {
3390 mandeep.dh 132
        return CRMAuthorizingRealm.getAgent(agentId);
3339 mandeep.dh 133
    }
134
 
135
    public String getDescription() {
136
        return description;
137
    }
138
 
139
    public void setDescription(String description) {
140
        this.description = description;
141
    }
142
 
143
    public String getType() {
144
        return type;
145
    }
146
 
147
    public void setType(String type) {
148
        this.type = type;
149
    }
150
 
151
    public String getSubject() {
152
        return subject;
153
    }
154
 
155
    public void setSubject(String subject) {
156
        this.subject = subject;
157
    }
158
 
159
    public String getBody() {
160
        return body;
161
    }
162
 
163
    public void setBody(String body) {
164
        this.body = body;
165
    }
166
 
167
    public String getUserEmailId() {
168
        return userEmailId;
169
    }
170
 
171
    public void setUserEmailId(String userEmailId) {
172
        this.userEmailId = userEmailId;
173
    }
174
 
175
    public String getCustomerMobileNumber() {
176
        return customerMobileNumber;
177
    }
178
 
179
    public void setCustomerMobileNumber(String customerMobileNumber) {
180
        this.customerMobileNumber = customerMobileNumber;
181
    }
182
 
183
    public List<Activity> getActivities() {
184
        return activities;
185
    }
186
 
187
    public String getCreatorId() {
188
        return creatorId;
189
    }
190
 
191
    public void setCreatorId(String creatorId) {
192
        this.creatorId = creatorId;
193
    }
3390 mandeep.dh 194
 
195
    public String getActivityId() {
196
        return activityId;
197
    }
198
 
199
    public void setActivityId(String activityId) {
200
        this.activityId = activityId;
201
    }
3397 mandeep.dh 202
 
203
    public String[] getAgentIds() {
204
        return agentIds;
205
    }
206
 
207
    public void setAgentIds(String[] agentIds) {
208
        this.agentIds = agentIds;
209
    }
210
 
211
    public String getStartTimestamp() {
212
        return startTimestamp;
213
    }
214
 
215
    public void setStartTimestamp(String startTimestamp) {
216
        this.startTimestamp = startTimestamp;
217
    }
218
 
219
    public String getEndTimestamp() {
220
        return endTimestamp;
221
    }
222
 
223
    public void setEndTimestamp(String endTimestamp) {
224
        this.endTimestamp = endTimestamp;
225
    }
226
 
227
    public void setActivities(List<Activity> activities) {
228
        this.activities = activities;
229
    }
3339 mandeep.dh 230
}