Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
3024 mandeep.dh 1
/**
2
 * 
3
 */
4
package in.shop2020.crm.service.handler;
5
 
6
import in.shop2020.crm.Activity;
7
import in.shop2020.crm.Agent;
8
import in.shop2020.crm.CRMService.Iface;
9
import in.shop2020.crm.Ticket;
10
import in.shop2020.crm.handler.ActivityHandler;
11
import in.shop2020.crm.handler.AgentHandler;
12
import in.shop2020.crm.handler.TicketHandler;
13
 
14
import java.text.ParseException;
15
import java.util.ArrayList;
3339 mandeep.dh 16
import java.util.Date;
3024 mandeep.dh 17
import java.util.List;
18
 
19
import org.apache.thrift.TException;
20
import org.springframework.context.ApplicationContext;
21
import org.springframework.context.support.ClassPathXmlApplicationContext;
22
import org.springframework.stereotype.Service;
3206 mandeep.dh 23
import org.springframework.transaction.annotation.Transactional;
3024 mandeep.dh 24
 
25
/**
26
 * Implementation of the interface/services exposed by thrift to clients!
27
 * 
28
 * @author mandeep
29
 */
30
@Service
31
public class CRMServiceHandler implements Iface {
3168 mandeep.dh 32
    ApplicationContext context         = new ClassPathXmlApplicationContext(
33
                                               "context.xml");
3024 mandeep.dh 34
    TicketHandler      ticketHandler   = context.getBean(TicketHandler.class);
35
    ActivityHandler    activityHandler = context.getBean(ActivityHandler.class);
36
    AgentHandler       agentHandler    = context.getBean(AgentHandler.class);
37
 
38
    public List<Ticket> getTickets(long customerId) throws TException {
39
        List<Ticket> ttickets = new ArrayList<Ticket>();
3206 mandeep.dh 40
        for (in.shop2020.crm.domain.Ticket ticket : ticketHandler.getTickets(customerId)) {
3024 mandeep.dh 41
            ttickets.add(ticket.getThriftTicket());
42
        }
43
 
44
        return ttickets;
45
    }
46
 
3206 mandeep.dh 47
    @Transactional
48
    public void updateTicket(Ticket ticket, Activity activity) throws TException {
3024 mandeep.dh 49
        try {
50
            ticketHandler.updateTicket(in.shop2020.crm.domain.Ticket
51
                    .create(ticket));
3206 mandeep.dh 52
            activity.setTicketId(ticket.getId());
53
            activityHandler.insertActivity(in.shop2020.crm.domain.Activity.create(activity));
3024 mandeep.dh 54
        } catch (ParseException e) {
55
            throw new TException("Could not update " + ticket, e);
56
        }
57
    }
58
 
3206 mandeep.dh 59
    @Transactional
60
    public long insertTicket(Ticket ticket, Activity activity) throws TException {
3024 mandeep.dh 61
        try {
3206 mandeep.dh 62
            long ticketId = ticketHandler.insertTicket(in.shop2020.crm.domain.Ticket
3024 mandeep.dh 63
                    .create(ticket));
3206 mandeep.dh 64
            activity.setTicketId(ticketId);
65
            activityHandler.insertActivity(in.shop2020.crm.domain.Activity.create(activity));
66
            return ticketId;
3024 mandeep.dh 67
        } catch (ParseException e) {
68
            throw new TException("Could not insert " + ticket, e);
69
        }
70
    }
71
 
72
    public List<Activity> getActivities(long customerId) throws TException {
73
        List<Activity> tactivities = new ArrayList<Activity>();
3168 mandeep.dh 74
        List<in.shop2020.crm.domain.Activity> activities = activityHandler
75
                .getActivities(customerId);
76
        if (activities != null) {
77
            for (in.shop2020.crm.domain.Activity ticket : activities) {
78
                tactivities.add(ticket.getThriftActivity());
79
            }
3024 mandeep.dh 80
        }
81
        return tactivities;
82
    }
83
 
84
    public void insertActivity(Activity activity) throws TException {
85
        try {
86
            activityHandler.insertActivity(in.shop2020.crm.domain.Activity
87
                    .create(activity));
88
        } catch (ParseException e) {
89
            throw new TException("Could not insert " + activity, e);
90
        }
91
    }
92
 
93
    public Ticket getTicket(long ticketId) throws TException {
3168 mandeep.dh 94
        Ticket thriftTicket = null;
95
 
96
        in.shop2020.crm.domain.Ticket ticket = ticketHandler
97
                .getTicket(ticketId);
98
 
99
        if (ticket != null) {
100
            thriftTicket = ticket.getThriftTicket();
101
        }
102
 
103
        return thriftTicket;
3024 mandeep.dh 104
    }
105
 
106
    public Activity getActivity(long activityId) throws TException {
3168 mandeep.dh 107
        in.shop2020.crm.domain.Activity activity = activityHandler
108
                .getActivity(activityId);
109
        Activity thriftActivity = null;
110
 
111
        if (activity != null) {
112
            thriftActivity = activity.getThriftActivity();
113
        }
114
 
115
        return thriftActivity;
3024 mandeep.dh 116
    }
117
 
118
    public Activity getLastActivity(long ticketId) throws TException {
119
        in.shop2020.crm.domain.Activity lastActivity = activityHandler
120
                .getLastActivity(ticketId);
121
        Activity lastThriftActivity = null;
122
 
123
        if (lastActivity != null) {
124
            lastThriftActivity = lastActivity.getThriftActivity();
125
        }
126
 
127
        return lastThriftActivity;
128
    }
129
 
3339 mandeep.dh 130
    public List<Activity> getActivitiesByCreator(long creatorId)
131
            throws TException {
132
        List<Activity> tactivities = new ArrayList<Activity>();
133
 
134
        for (in.shop2020.crm.domain.Activity ticket : activityHandler
135
                .getActivitiesByCreator(creatorId)) {
136
            tactivities.add(ticket.getThriftActivity());
137
        }
138
 
139
        return tactivities;
140
    }
141
 
3024 mandeep.dh 142
    public List<Activity> getActivitiesForTicket(long ticketId)
143
            throws TException {
144
        List<Activity> tactivities = new ArrayList<Activity>();
145
 
146
        for (in.shop2020.crm.domain.Activity ticket : activityHandler
147
                .getActivitiesForTicket(ticketId)) {
148
            tactivities.add(ticket.getThriftActivity());
149
        }
150
 
151
        return tactivities;
152
    }
153
 
154
    public Agent getAgent(long agentId) throws TException {
3168 mandeep.dh 155
        in.shop2020.crm.domain.Agent agent = agentHandler.getAgent(agentId);
156
        Agent thriftAgent = null;
157
 
158
        if (agent != null) {
159
            thriftAgent = agent.getThriftAgent();
160
        }
161
 
162
        return thriftAgent;
3024 mandeep.dh 163
    }
164
 
165
    public Agent getAgentByEmailId(String agentEmailId) throws TException {
3168 mandeep.dh 166
        in.shop2020.crm.domain.Agent agentByEmail = agentHandler.getAgentByEmail(agentEmailId);
167
        Agent thriftAgent = null;
168
 
169
        if (agentByEmail != null) {
170
            thriftAgent = agentByEmail.getThriftAgent();
171
        }
172
 
173
        return thriftAgent;
3024 mandeep.dh 174
    }
3088 mandeep.dh 175
 
176
    public List<String> getRoleNamesForAgent(String agentEmailId)
3168 mandeep.dh 177
            throws TException {
3088 mandeep.dh 178
        return agentHandler.getRoleNamesForAgent(agentEmailId);
179
    }
180
 
181
    public List<String> getPermissionsForRoleName(String roleName)
3168 mandeep.dh 182
            throws TException {
3088 mandeep.dh 183
        return agentHandler.getPermissionsForRoleName(roleName);
184
    }
185
 
186
    public List<Ticket> getAssignedTickets(long agentId) throws TException {
3137 mandeep.dh 187
        List<Ticket> tickets = new ArrayList<Ticket>();
3088 mandeep.dh 188
 
3168 mandeep.dh 189
        for (in.shop2020.crm.domain.Ticket ticket : ticketHandler
190
                .getAssignedTickets(agentId)) {
3137 mandeep.dh 191
            tickets.add(ticket.getThriftTicket());
192
        }
193
 
194
        return tickets;
3088 mandeep.dh 195
    }
196
 
197
    public List<Agent> getAllAgents() throws TException {
198
        List<Agent> agents = new ArrayList<Agent>();
199
 
200
        for (in.shop2020.crm.domain.Agent agent : agentHandler.getAllAgents()) {
201
            agents.add(agent.getThriftAgent());
202
        }
203
 
204
        return agents;
205
    }
206
 
207
    public void updatePasswordForAgent(String agentEmailId, String password)
3168 mandeep.dh 208
            throws TException {
3088 mandeep.dh 209
        agentHandler.updatePasswordForAgent(agentEmailId, password);
210
    }
3137 mandeep.dh 211
 
212
    public List<Ticket> getUnassignedTickets() throws TException {
213
        List<Ticket> tickets = new ArrayList<Ticket>();
214
 
3168 mandeep.dh 215
        for (in.shop2020.crm.domain.Ticket ticket : ticketHandler
216
                .getUnassignedTickets()) {
3137 mandeep.dh 217
            tickets.add(ticket.getThriftTicket());
218
        }
219
 
220
        return tickets;
221
    }
222
 
223
    public List<Ticket> getAllTickets(long agentId) throws TException {
3168 mandeep.dh 224
        List<in.shop2020.crm.domain.Ticket> tickets = ticketHandler
225
                .getAssignedTickets(agentId);
3137 mandeep.dh 226
 
3168 mandeep.dh 227
        for (in.shop2020.crm.domain.Agent agent : agentHandler
228
                .getReportees(agentId)) {
3137 mandeep.dh 229
            tickets.addAll(ticketHandler.getAssignedTickets(agent.getId()));
230
        }
231
 
232
        List<Ticket> ttickets = new ArrayList<Ticket>();
233
 
234
        for (in.shop2020.crm.domain.Ticket ticket : tickets) {
235
            ttickets.add(ticket.getThriftTicket());
236
        }
237
 
238
        return ttickets;
239
    }
3339 mandeep.dh 240
 
241
    public long getLastEmailProcessedTimestamp() throws TException {
242
        return agentHandler.getLastEmailProcessedTimestamp().getTime();
243
    }
244
 
245
    public void updateLastEmailProcessedTimestamp(long timestamp)
246
            throws TException {
247
        agentHandler.updateLastEmailProcessedTimestamp(new Date(timestamp));
248
    }
3024 mandeep.dh 249
}