Subversion Repositories SmartDukaan

Rev

Rev 14914 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14882 manish.sha 1
#!/usr/bin/python
2
from dtr.storage import DataService 
3
from dtr.storage.DataService import Feedbacks, Users
4
from shop2020.clients.CRMClient import CRMClient
5
from shop2020.clients.UserClient import UserClient
6
from shop2020.utils.Utils import to_java_date, to_py_date
7
from shop2020.thriftpy.crm.ttypes import SearchFilter, TicketCategory, Ticket, \
8
    Activity, TicketPriority, TicketStatus, ActivityType
9
from string import Template
10
import sys
11
import traceback
12
 
13
DataService.initialize(db_hostname='192.168.158.89')
14
customerFeedbacks = []
15
 
16
class __Feedback:
17
    def __init__(self, feedbackObj, userObj):
18
        self.id = feedbackObj.id
19
        self.user_id = feedbackObj.user_id
20
        self.email = feedbackObj.email
21
        self.subject = feedbackObj.subject
22
        self.message = feedbackObj.message
23
        self.created = to_java_date(feedbackObj.created)
24
        self.mobile = userObj.mobile_number
25
        self.customerName = userObj.first_name +' '+ userObj.last_name
26
 
27
def getAllFeedbacks():
28
    global customerFeedbacks
29
    feedbacksAndUsers = session.query(Feedbacks,Users).join((Feedbacks,Feedbacks.user_id==Users.id)).filter(Feedbacks.isTicketCreated==False).all()
30
    for feedbackNUser in feedbacksAndUsers:
31
        feedback = feedbackNUser[0]
32
        user = feedbackNUser[1]
33
        feedbackInfo = __Feedback(feedback, user)
34
        customerFeedbacks.append(feedbackInfo)
35
 
36
def createTicketsForCustomerQueries(customerFeedbacks):
37
    crmServiceClient = CRMClient().get_client()
38
    userServiceClient = UserClient().get_client()
39
    for customerFeedBack in customerFeedbacks:
40
        ticket = Ticket()
41
        activity = Activity()
42
        ticket.assigneeId = 34
43
        ticket.creatorId = 1
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
62
        if user is not None and user.id !=-1:
63
            ticket.customerId = user.id
64
        ticket.status = TicketStatus.OPEN
65
        ticket.openDate = customerFeedBack.created
66
        ticket.customerMobileNumber = customerFeedBack.mobile
67
        ticket.customerName = customerFeedBack.customerName
68
 
69
        activity.creatorId = 1
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
78
        if user is not None and user.id !=-1:
79
            activity.customerId  = user.id
80
        activity.customerName = customerFeedBack.customerName
81
        activity.customerMobileNumber = customerFeedBack.mobile
82
        activity.creationTimestamp = customerFeedBack.created
83
        activity.userEmailId = customerFeedBack.email
84
 
85
        if not crmServiceClient.isAlive():
86
            crmServiceClient = CRMClient().get_client()
87
 
88
        ticketId = crmServiceClient.insertTicket(ticket, activity)
89
 
90
        if ticketId >0:
91
            feedback = Feedbacks.get_by(id = customerFeedBack.id)
92
            feedback.isTicketCreated = True
93
            session.commit()
94
 
95
def main():
96
    getAllFeedbacks()
97
    createTicketsForCustomerQueries(customerFeedbacks)
98
 
99
if __name__ == '__main__':
100
    main()
101