Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
3026 mandeep.dh 1
namespace java in.shop2020.crm
2
namespace py shop2020.thriftpy.crm
3
 
3374 rajveer 4
include "GenericService.thrift"
5
 
3026 mandeep.dh 6
enum TicketPriority {
7
    LOW = 0,
8
    HIGH = 1,
9
    MEDIUM = 2
10
}
11
 
12
enum TicketStatus {
13
    OPEN = 0,
14
    CLOSED = 1,
15
    REOPEN = 2
16
}
17
 
18
enum TicketCategory {
19
    RETURN_FORM = 1,
20
    ORDER_CANCELLATION = 2,
21
    DELIVERY_PROBLEM = 3,
22
    PAYMENT_STATUS = 4,
23
    ORDER_STATUS = 5,
24
    PRODUCT_REQUEST = 6,
25
    PRODUCT_QUESTION = 7,
3499 mandeep.dh 26
    OTHER = 8,
3578 mandeep.dh 27
    COD_VERIFICATION = 9,
4008 mandeep.dh 28
    FAILED_PAYMENTS = 10,
4267 anupam.sin 29
    DELAYED_DELIVERY = 11,
4490 anupam.sin 30
    PAYMENT_FLAGGED = 12,
4681 amar.kumar 31
    DOA_RECEIVED = 13,
32
    PRODUCT_PROCUREMENT = 14
3026 mandeep.dh 33
}
34
 
3106 mandeep.dh 35
enum ActivityType {
3269 mandeep.dh 36
    SEND_EMAIL_TO_CUSTOMER = 1,
3271 mandeep.dh 37
    RECEIVED_EMAIL_FROM_CUSTOMER = 2,
3269 mandeep.dh 38
    CALLED_CUSTOMER = 3,
3271 mandeep.dh 39
    RECEIVED_CALL_FROM_CUSTOMER = 4,
4020 mandeep.dh 40
    OTHER = 5,
41
    ESCALATE_TICKET = 6
3106 mandeep.dh 42
}
43
 
3390 mandeep.dh 44
struct Agent {
45
    1:i64 id,
46
    2:string name,
47
    3:string emailId,
48
    4:optional i64 managerId,
4793 amar.kumar 49
    5:string password,
50
    6:bool is_active;
3390 mandeep.dh 51
}
52
 
3026 mandeep.dh 53
struct Ticket {
54
    1:i64 id,
3390 mandeep.dh 55
    2:optional i64 customerId,
56
    3:i64 openDate,
57
    4:optional i64 closeDate,
58
    5:optional string description,
59
    6:TicketPriority priority,
60
    7:TicketCategory category,
61
    8:TicketStatus status,
62
    9:optional i64 assigneeId,
63
   10:i64 creatorId,
64
   11:optional i64 orderId,
65
   12:optional string airwayBillNo,
66
   13:optional string productName,
67
 
68
   // used for un-registered users
69
   14:optional string customerMobileNumber,
70
   15:optional string customerEmailId,
3546 mandeep.dh 71
   16:optional string customerName
3026 mandeep.dh 72
}
73
 
74
struct Activity {
75
    1:i64 id,
3168 mandeep.dh 76
    2:optional string description,
3106 mandeep.dh 77
    3:i64 creationTimestamp, // represents time at which this activity occurred
78
    4:ActivityType type,
3269 mandeep.dh 79
    5:optional i64 customerId, // used for registered users
3390 mandeep.dh 80
    6:i64 creatorId,
3026 mandeep.dh 81
 
3269 mandeep.dh 82
    // represents the numeric identifier for the emails sent to customers
83
    // These are archived in helper..useremailarchive or helper..useremail
3390 mandeep.dh 84
    7:optional i64 userEmailId,
3269 mandeep.dh 85
 
3106 mandeep.dh 86
    // ticket related fields to track changes on ticket fields
3390 mandeep.dh 87
    8:optional i64 ticketId,
88
    9:optional TicketPriority ticketPriority,
89
   10:optional i64 ticketAssigneeId,
90
   11:optional TicketStatus ticketStatus,
91
   12:optional TicketCategory ticketCategory,
92
   13:optional string ticketDescription,
93
 
94
   // Activities created as part of mails received from customers
95
   // have to be explicitly marked as read by agents in CRM.
96
   // This flag is set over such activities when any agent marks it as read!
3546 mandeep.dh 97
   14:optional bool isRead,
3390 mandeep.dh 98
 
99
   // used for un-registered users
100
   15:optional string customerMobileNumber,
101
   16:optional string customerEmailId,
102
   17:optional string customerName,
4241 anupam.sin 103
 
104
   // used for attachments name separated by semicolon
105
   18:optional string attachments
3026 mandeep.dh 106
}
107
 
3390 mandeep.dh 108
struct SearchFilter {
109
    1:optional i64 ticketId,
110
    2:optional i64 activityId,
111
    3:optional list<i64> ticketAssigneeIds,
112
    4:optional list<i64> activityCreatorIds,
113
    5:optional i64 agentId,
114
    6:optional i64 customerId,
115
    7:optional i64 startTimestamp,
116
    8:optional i64 endTimestamp,
117
    9:optional bool isActivityRead,
118
   10:optional string agentEmailId,
119
   11:optional string customerEmailId,
3499 mandeep.dh 120
   12:optional string customerMobileNumber,
3546 mandeep.dh 121
   13:optional list<TicketStatus> ticketStatuses,
3499 mandeep.dh 122
   14:optional TicketCategory ticketCategory,
3546 mandeep.dh 123
   15:optional TicketPriority ticketPriority,
124
   16:optional ActivityType activityType
3026 mandeep.dh 125
}
126
 
3374 rajveer 127
service CRMService extends GenericService.GenericService{
3026 mandeep.dh 128
    // Methods to read/write tickets from/in database
3390 mandeep.dh 129
    list<Ticket> getTickets(1:SearchFilter searchFilter);
3137 mandeep.dh 130
    list<Ticket> getUnassignedTickets();
3206 mandeep.dh 131
    void updateTicket(1:Ticket ticket, 2:Activity activity);
132
    i64 insertTicket(1:Ticket ticket, 2:Activity activity);
4793 amar.kumar 133
    void unassignAgentTickets(1:i32 assigneeId);
3026 mandeep.dh 134
 
135
    // Methods to read/write activities from/in database
3390 mandeep.dh 136
    list<Activity> getActivities(1:SearchFilter searchFilter);
3405 mandeep.dh 137
    i64 insertActivity(1:Activity activity);
3390 mandeep.dh 138
    void markAsRead(1:i64 activityId, 2:i64 agentId);
3026 mandeep.dh 139
 
140
    // Methods to read agent information
3390 mandeep.dh 141
    list<Agent> getAgents(1:SearchFilter searchFilter);
3087 mandeep.dh 142
    void updatePasswordForAgent(1:string agentEmailId, 2:string password);
143
 
144
    // Methods to read roles and permissions information
145
    list<string> getRoleNamesForAgent(1:string agentEmailId);
3106 mandeep.dh 146
    list<string> getPermissionsForRoleName(1:string roleName);
3339 mandeep.dh 147
 
148
    // Misc methods
149
    i64 getLastEmailProcessedTimestamp();
150
    void updateLastEmailProcessedTimestamp(1:i64 timestamp);
4793 amar.kumar 151
 
152
    // Method to change active/inactive status of Agent
153
    void changeAgentStatus(1:bool status, 2:string emailId);
154
 
155
    //Method to add a new CRM Agent 
156
    void insertAgent(1:Agent agent, 2:list<string> role);
3026 mandeep.dh 157
}