| 14882 |
manish.sha |
1 |
#!/usr/bin/python
|
| 14914 |
manish.sha |
2 |
from elixir import *
|
| 14882 |
manish.sha |
3 |
from dtr.storage import DataService
|
| 14920 |
manish.sha |
4 |
from dtr.storage.DataService import Feedbacks, Users
|
| 14882 |
manish.sha |
5 |
from shop2020.clients.CRMClient import CRMClient
|
|
|
6 |
from shop2020.clients.UserClient import UserClient
|
|
|
7 |
from shop2020.utils.Utils import to_java_date, to_py_date
|
|
|
8 |
from shop2020.thriftpy.crm.ttypes import SearchFilter, TicketCategory, Ticket, \
|
|
|
9 |
Activity, TicketPriority, TicketStatus, ActivityType
|
|
|
10 |
from string import Template
|
|
|
11 |
import sys
|
|
|
12 |
import traceback
|
|
|
13 |
|
|
|
14 |
DataService.initialize(db_hostname='192.168.158.89')
|
|
|
15 |
customerFeedbacks = []
|
|
|
16 |
|
|
|
17 |
class __Feedback:
|
|
|
18 |
def __init__(self, feedbackObj, userObj):
|
|
|
19 |
self.id = feedbackObj.id
|
|
|
20 |
self.user_id = feedbackObj.user_id
|
|
|
21 |
self.email = feedbackObj.email
|
|
|
22 |
self.subject = feedbackObj.subject
|
|
|
23 |
self.message = feedbackObj.message
|
|
|
24 |
self.created = to_java_date(feedbackObj.created)
|
|
|
25 |
self.mobile = userObj.mobile_number
|
|
|
26 |
self.customerName = userObj.first_name +' '+ userObj.last_name
|
|
|
27 |
|
|
|
28 |
def getAllFeedbacks():
|
|
|
29 |
global customerFeedbacks
|
| 14920 |
manish.sha |
30 |
feedbacksAndUsers = session.query(Users,Feedbacks).join((Feedbacks,Users.id==Feedbacks.user_id)).filter(Feedbacks.isTicketCreated==False).all()
|
| 14882 |
manish.sha |
31 |
for feedbackNUser in feedbacksAndUsers:
|
| 14916 |
manish.sha |
32 |
feedback = feedbackNUser[1]
|
|
|
33 |
user = feedbackNUser[0]
|
| 14882 |
manish.sha |
34 |
feedbackInfo = __Feedback(feedback, user)
|
|
|
35 |
customerFeedbacks.append(feedbackInfo)
|
|
|
36 |
|
|
|
37 |
def createTicketsForCustomerQueries(customerFeedbacks):
|
|
|
38 |
crmServiceClient = CRMClient().get_client()
|
|
|
39 |
userServiceClient = UserClient().get_client()
|
|
|
40 |
for customerFeedBack in customerFeedbacks:
|
|
|
41 |
ticket = Ticket()
|
|
|
42 |
activity = Activity()
|
| 14925 |
manish.sha |
43 |
ticket.creatorId = 1
|
| 14882 |
manish.sha |
44 |
user = userServiceClient.getUserByEmail(customerFeedBack.email)
|
|
|
45 |
if 'Cant see my order' in customerFeedBack.subject:
|
|
|
46 |
ticket.category = TicketCategory.PROFITMANDI_ORDER_NOT_SEEN
|
|
|
47 |
ticket.priority = TicketPriority.HIGH
|
|
|
48 |
elif 'Cashback' in customerFeedBack.subject:
|
|
|
49 |
ticket.category = TicketCategory.PROFITMANDI_CASHBACK
|
|
|
50 |
ticket.priority = TicketPriority.HIGH
|
|
|
51 |
elif 'Feedback' in customerFeedBack.subject:
|
|
|
52 |
ticket.category = TicketCategory.PROFITMANDI_FEEDBACK
|
|
|
53 |
ticket.priority = TicketPriority.MEDIUM
|
|
|
54 |
elif 'Recharge Related' in customerFeedBack.subject:
|
|
|
55 |
ticket.category = TicketCategory.PROFITMANDI_RECHARGE_ISSUE
|
|
|
56 |
ticket.priority = TicketPriority.HIGH
|
|
|
57 |
else:
|
|
|
58 |
ticket.category = TicketCategory.PROFITMANDI_OTHER
|
|
|
59 |
ticket.priority = TicketPriority.MEDIUM
|
|
|
60 |
ticket.description = 'User Specified Subject :- '+ customerFeedBack.subject + ' | ' + customerFeedBack.message
|
|
|
61 |
ticket.customerEmailId = customerFeedBack.email
|
| 14922 |
manish.sha |
62 |
if user is not None and user.userId !=-1:
|
| 14925 |
manish.sha |
63 |
ticket.customerId = user.userId
|
| 14882 |
manish.sha |
64 |
ticket.status = TicketStatus.OPEN
|
| 14925 |
manish.sha |
65 |
ticket.openDate = customerFeedBack.created
|
| 14882 |
manish.sha |
66 |
ticket.customerMobileNumber = customerFeedBack.mobile
|
|
|
67 |
ticket.customerName = customerFeedBack.customerName
|
|
|
68 |
|
| 14925 |
manish.sha |
69 |
activity.creatorId = 1
|
| 14882 |
manish.sha |
70 |
activity.ticketAssigneeId = ticket.assigneeId
|
|
|
71 |
activity.type = ActivityType.RECEIVED_EMAIL_FROM_CUSTOMER
|
|
|
72 |
activity.description = 'User Specified Subject :- '+ customerFeedBack.subject + ' | ' + customerFeedBack.message
|
|
|
73 |
activity.ticketCategory = ticket.category
|
|
|
74 |
activity.ticketDescription = ticket.description
|
|
|
75 |
activity.ticketPriority = ticket.priority
|
|
|
76 |
activity.ticketStatus = ticket.status
|
|
|
77 |
activity.customerEmailId = customerFeedBack.email
|
| 14922 |
manish.sha |
78 |
if user is not None and user.userId !=-1:
|
| 14925 |
manish.sha |
79 |
activity.customerId = user.userId
|
| 14882 |
manish.sha |
80 |
activity.customerName = customerFeedBack.customerName
|
|
|
81 |
activity.customerMobileNumber = customerFeedBack.mobile
|
| 14925 |
manish.sha |
82 |
activity.creationTimestamp = customerFeedBack.created
|
|
|
83 |
activity.customerEmailId= customerFeedBack.email
|
| 14882 |
manish.sha |
84 |
|
|
|
85 |
if not crmServiceClient.isAlive():
|
|
|
86 |
crmServiceClient = CRMClient().get_client()
|
|
|
87 |
|
|
|
88 |
ticketId = crmServiceClient.insertTicket(ticket, activity)
|
|
|
89 |
|
|
|
90 |
if ticketId >0:
|
| 14920 |
manish.sha |
91 |
feedback = Feedbacks.get_by(id = customerFeedBack.id)
|
| 14882 |
manish.sha |
92 |
feedback.isTicketCreated = True
|
|
|
93 |
session.commit()
|
| 14941 |
manish.sha |
94 |
|
| 14882 |
manish.sha |
95 |
|
|
|
96 |
def main():
|
| 14914 |
manish.sha |
97 |
try:
|
|
|
98 |
getAllFeedbacks()
|
|
|
99 |
createTicketsForCustomerQueries(customerFeedbacks)
|
|
|
100 |
finally:
|
|
|
101 |
session.close()
|
| 14882 |
manish.sha |
102 |
|
|
|
103 |
if __name__ == '__main__':
|
|
|
104 |
main()
|
|
|
105 |
|