Subversion Repositories SmartDukaan

Rev

Rev 3499 | Rev 3546 | 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,
27
    COD_VERIFICATION = 9
3026 mandeep.dh 28
}
29
 
3106 mandeep.dh 30
enum ActivityType {
3269 mandeep.dh 31
    SEND_EMAIL_TO_CUSTOMER = 1,
3271 mandeep.dh 32
    RECEIVED_EMAIL_FROM_CUSTOMER = 2,
3269 mandeep.dh 33
    CALLED_CUSTOMER = 3,
3271 mandeep.dh 34
    RECEIVED_CALL_FROM_CUSTOMER = 4,
3269 mandeep.dh 35
    OTHER = 5
3106 mandeep.dh 36
}
37
 
3390 mandeep.dh 38
struct Agent {
39
    1:i64 id,
40
    2:string name,
41
    3:string emailId,
42
    4:optional i64 managerId,
43
    5:string password
44
}
45
 
3026 mandeep.dh 46
struct Ticket {
47
    1:i64 id,
3390 mandeep.dh 48
    2:optional i64 customerId,
49
    3:i64 openDate,
50
    4:optional i64 closeDate,
51
    5:optional string description,
52
    6:TicketPriority priority,
53
    7:TicketCategory category,
54
    8:TicketStatus status,
55
    9:optional i64 assigneeId,
56
   10:i64 creatorId,
57
   11:optional i64 orderId,
58
   12:optional string airwayBillNo,
59
   13:optional string productName,
60
 
61
   // used for un-registered users
62
   14:optional string customerMobileNumber,
63
   15:optional string customerEmailId,
64
   16:optional string customerName,
65
 
66
   // knitted/enriched object
67
   17:optional Agent assignee,
68
   18:optional Agent creator
3026 mandeep.dh 69
}
70
 
71
struct Activity {
72
    1:i64 id,
3168 mandeep.dh 73
    2:optional string description,
3106 mandeep.dh 74
    3:i64 creationTimestamp, // represents time at which this activity occurred
75
    4:ActivityType type,
3269 mandeep.dh 76
    5:optional i64 customerId, // used for registered users
3390 mandeep.dh 77
    6:i64 creatorId,
3026 mandeep.dh 78
 
3269 mandeep.dh 79
    // represents the numeric identifier for the emails sent to customers
80
    // These are archived in helper..useremailarchive or helper..useremail
3390 mandeep.dh 81
    7:optional i64 userEmailId,
3269 mandeep.dh 82
 
3106 mandeep.dh 83
    // ticket related fields to track changes on ticket fields
3390 mandeep.dh 84
    8:optional i64 ticketId,
85
    9:optional TicketPriority ticketPriority,
86
   10:optional i64 ticketAssigneeId,
87
   11:optional TicketStatus ticketStatus,
88
   12:optional TicketCategory ticketCategory,
89
   13:optional string ticketDescription,
90
 
91
   // Activities created as part of mails received from customers
92
   // have to be explicitly marked as read by agents in CRM.
93
   // This flag is set over such activities when any agent marks it as read!
94
   14:optional bool isRead
95
 
96
   // used for un-registered users
97
   15:optional string customerMobileNumber,
98
   16:optional string customerEmailId,
99
   17:optional string customerName,
100
 
101
   // knitted types for enriched objects
102
   18:optional Agent creator,
103
   19:optional Agent ticketAssignee
3026 mandeep.dh 104
}
105
 
3390 mandeep.dh 106
struct SearchFilter {
107
    1:optional i64 ticketId,
108
    2:optional i64 activityId,
109
    3:optional list<i64> ticketAssigneeIds,
110
    4:optional list<i64> activityCreatorIds,
111
    5:optional i64 agentId,
112
    6:optional i64 customerId,
113
    7:optional i64 startTimestamp,
114
    8:optional i64 endTimestamp,
115
    9:optional bool isActivityRead,
116
   10:optional string agentEmailId,
117
   11:optional string customerEmailId,
3499 mandeep.dh 118
   12:optional string customerMobileNumber,
119
   13:optional TicketStatus ticketStatus,
120
   14:optional TicketCategory ticketCategory,
121
   15:optional TicketPriority ticketPriority
3026 mandeep.dh 122
}
123
 
3374 rajveer 124
service CRMService extends GenericService.GenericService{
3026 mandeep.dh 125
    // Methods to read/write tickets from/in database
3390 mandeep.dh 126
    list<Ticket> getTickets(1:SearchFilter searchFilter);
3137 mandeep.dh 127
    list<Ticket> getUnassignedTickets();
3206 mandeep.dh 128
    void updateTicket(1:Ticket ticket, 2:Activity activity);
129
    i64 insertTicket(1:Ticket ticket, 2:Activity activity);
3026 mandeep.dh 130
 
131
    // Methods to read/write activities from/in database
3390 mandeep.dh 132
    list<Activity> getActivities(1:SearchFilter searchFilter);
3405 mandeep.dh 133
    i64 insertActivity(1:Activity activity);
3390 mandeep.dh 134
    void markAsRead(1:i64 activityId, 2:i64 agentId);
3026 mandeep.dh 135
 
136
    // Methods to read agent information
3390 mandeep.dh 137
    list<Agent> getAgents(1:SearchFilter searchFilter);
3087 mandeep.dh 138
    void updatePasswordForAgent(1:string agentEmailId, 2:string password);
139
 
140
    // Methods to read roles and permissions information
141
    list<string> getRoleNamesForAgent(1:string agentEmailId);
3106 mandeep.dh 142
    list<string> getPermissionsForRoleName(1:string roleName);
3339 mandeep.dh 143
 
144
    // Misc methods
145
    i64 getLastEmailProcessedTimestamp();
146
    void updateLastEmailProcessedTimestamp(1:i64 timestamp);
3530 mandeep.dh 147
    oneway void processCODTxn(1:i64 transactionId);
3026 mandeep.dh 148
}