Subversion Repositories SmartDukaan

Rev

Rev 3375 | Rev 3405 | 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;
3390 mandeep.dh 7
import in.shop2020.crm.ActivityType;
3024 mandeep.dh 8
import in.shop2020.crm.Agent;
9
import in.shop2020.crm.CRMService.Iface;
3390 mandeep.dh 10
import in.shop2020.crm.SearchFilter;
3024 mandeep.dh 11
import in.shop2020.crm.Ticket;
12
import in.shop2020.crm.handler.ActivityHandler;
13
import in.shop2020.crm.handler.AgentHandler;
14
import in.shop2020.crm.handler.TicketHandler;
15
 
16
import java.text.ParseException;
17
import java.util.ArrayList;
3339 mandeep.dh 18
import java.util.Date;
3024 mandeep.dh 19
import java.util.List;
20
 
21
import org.apache.thrift.TException;
22
import org.springframework.context.ApplicationContext;
23
import org.springframework.context.support.ClassPathXmlApplicationContext;
24
import org.springframework.stereotype.Service;
3206 mandeep.dh 25
import org.springframework.transaction.annotation.Transactional;
3024 mandeep.dh 26
 
27
/**
28
 * Implementation of the interface/services exposed by thrift to clients!
29
 * 
30
 * @author mandeep
31
 */
32
@Service
33
public class CRMServiceHandler implements Iface {
3168 mandeep.dh 34
    ApplicationContext context         = new ClassPathXmlApplicationContext(
35
                                               "context.xml");
3024 mandeep.dh 36
    TicketHandler      ticketHandler   = context.getBean(TicketHandler.class);
37
    ActivityHandler    activityHandler = context.getBean(ActivityHandler.class);
38
    AgentHandler       agentHandler    = context.getBean(AgentHandler.class);
39
 
3390 mandeep.dh 40
    public List<Ticket> getTickets(SearchFilter searchFilter) throws TException {
3024 mandeep.dh 41
        List<Ticket> ttickets = new ArrayList<Ticket>();
3390 mandeep.dh 42
        for (in.shop2020.crm.domain.Ticket ticket : ticketHandler
43
                .getTickets(in.shop2020.crm.domain.SearchFilter
44
                        .create(searchFilter))) {
3024 mandeep.dh 45
            ttickets.add(ticket.getThriftTicket());
46
        }
47
 
48
        return ttickets;
49
    }
50
 
3390 mandeep.dh 51
    public List<Ticket> getUnassignedTickets() throws TException {
52
        List<Ticket> tickets = new ArrayList<Ticket>();
53
 
54
        for (in.shop2020.crm.domain.Ticket ticket : ticketHandler
55
                .getUnassignedTickets()) {
56
            tickets.add(ticket.getThriftTicket());
57
        }
58
 
59
        return tickets;
60
    }
61
 
3206 mandeep.dh 62
    @Transactional
3390 mandeep.dh 63
    public void updateTicket(Ticket ticket, Activity activity)
64
            throws TException {
3024 mandeep.dh 65
        try {
66
            ticketHandler.updateTicket(in.shop2020.crm.domain.Ticket
67
                    .create(ticket));
3206 mandeep.dh 68
            activity.setTicketId(ticket.getId());
3390 mandeep.dh 69
            activityHandler.insertActivity(in.shop2020.crm.domain.Activity
70
                    .create(activity));
3024 mandeep.dh 71
        } catch (ParseException e) {
72
            throw new TException("Could not update " + ticket, e);
73
        }
74
    }
75
 
3206 mandeep.dh 76
    @Transactional
3390 mandeep.dh 77
    public long insertTicket(Ticket ticket, Activity activity)
78
            throws TException {
3024 mandeep.dh 79
        try {
3390 mandeep.dh 80
            long ticketId = ticketHandler
81
                    .insertTicket(in.shop2020.crm.domain.Ticket.create(ticket));
3206 mandeep.dh 82
            activity.setTicketId(ticketId);
3390 mandeep.dh 83
            activityHandler.insertActivity(in.shop2020.crm.domain.Activity
84
                    .create(activity));
3206 mandeep.dh 85
            return ticketId;
3024 mandeep.dh 86
        } catch (ParseException e) {
87
            throw new TException("Could not insert " + ticket, e);
88
        }
89
    }
90
 
3390 mandeep.dh 91
    public List<Activity> getActivities(SearchFilter searchFilter)
92
            throws TException {
3024 mandeep.dh 93
        List<Activity> tactivities = new ArrayList<Activity>();
3168 mandeep.dh 94
        List<in.shop2020.crm.domain.Activity> activities = activityHandler
3390 mandeep.dh 95
                .getActivities(in.shop2020.crm.domain.SearchFilter
96
                        .create(searchFilter));
97
 
3168 mandeep.dh 98
        if (activities != null) {
99
            for (in.shop2020.crm.domain.Activity ticket : activities) {
100
                tactivities.add(ticket.getThriftActivity());
101
            }
3024 mandeep.dh 102
        }
3390 mandeep.dh 103
 
3024 mandeep.dh 104
        return tactivities;
105
    }
106
 
107
    public void insertActivity(Activity activity) throws TException {
108
        try {
109
            activityHandler.insertActivity(in.shop2020.crm.domain.Activity
110
                    .create(activity));
111
        } catch (ParseException e) {
112
            throw new TException("Could not insert " + activity, e);
113
        }
114
    }
115
 
3390 mandeep.dh 116
    @Transactional
117
    public void markAsRead(long activityId, long agentId) throws TException {
118
        in.shop2020.crm.domain.SearchFilter searchFilter = new in.shop2020.crm.domain.SearchFilter();
119
        searchFilter.setActivityId(activityId);
120
        activityHandler.markAsRead(activityId);
3168 mandeep.dh 121
        in.shop2020.crm.domain.Activity activity = activityHandler
3390 mandeep.dh 122
                .getActivities(searchFilter).get(0);
123
        activity.setCreatorId(agentId);
124
        activity.setDescription("Marked as read ticketId: "
125
                + activity.getTicketId() + ", activityId: " + activityId);
126
        activity.setType(ActivityType.OTHER);
127
        activityHandler.insertActivity(activity);
3024 mandeep.dh 128
    }
129
 
3390 mandeep.dh 130
    public List<Agent> getAgents(SearchFilter searchFilter) throws TException {
131
        List<Agent> agents = new ArrayList<Agent>();
3024 mandeep.dh 132
 
3390 mandeep.dh 133
        for (in.shop2020.crm.domain.Agent agent : agentHandler
134
                .getAgents(in.shop2020.crm.domain.SearchFilter
135
                        .create(searchFilter))) {
136
            agents.add(agent.getThriftAgent());
3024 mandeep.dh 137
        }
138
 
3390 mandeep.dh 139
        return agents;
3024 mandeep.dh 140
    }
141
 
3390 mandeep.dh 142
    public void updatePasswordForAgent(String agentEmailId, String password)
3339 mandeep.dh 143
            throws TException {
3390 mandeep.dh 144
        agentHandler.updatePasswordForAgent(agentEmailId, password);
145
    }
3339 mandeep.dh 146
 
3390 mandeep.dh 147
    public long getLastEmailProcessedTimestamp() throws TException {
148
        return agentHandler.getLastEmailProcessedTimestamp().getTime();
3339 mandeep.dh 149
    }
150
 
3390 mandeep.dh 151
    public void updateLastEmailProcessedTimestamp(long timestamp)
3024 mandeep.dh 152
            throws TException {
3390 mandeep.dh 153
        agentHandler.updateLastEmailProcessedTimestamp(new Date(timestamp));
3024 mandeep.dh 154
    }
155
 
3088 mandeep.dh 156
    public List<String> getRoleNamesForAgent(String agentEmailId)
3168 mandeep.dh 157
            throws TException {
3088 mandeep.dh 158
        return agentHandler.getRoleNamesForAgent(agentEmailId);
159
    }
160
 
161
    public List<String> getPermissionsForRoleName(String roleName)
3168 mandeep.dh 162
            throws TException {
3088 mandeep.dh 163
        return agentHandler.getPermissionsForRoleName(roleName);
164
    }
165
 
3375 rajveer 166
	public boolean isAlive() throws TException {
167
		// TODO Auto-generated method stub
168
		return true;
169
	}
170
 
171
	public void closeSession() throws TException {
172
		// TODO Auto-generated method stub
173
 
174
	}
3024 mandeep.dh 175
}