Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
14882 manish.sha 1
#!/usr/bin/python
14914 manish.sha 2
from elixir import *
14882 manish.sha 3
from dtr.storage import DataService 
4
from dtr.storage.DataService import Feedbacks, Users
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
30
    feedbacksAndUsers = session.query(Feedbacks,Users).join((Feedbacks,Feedbacks.user_id==Users.id)).filter(Feedbacks.isTicketCreated==False).all()
31
    for feedbackNUser in feedbacksAndUsers:
32
        feedback = feedbackNUser[0]
33
        user = feedbackNUser[1]
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()
43
        ticket.assigneeId = 34
44
        ticket.creatorId = 1
45
        user = userServiceClient.getUserByEmail(customerFeedBack.email)
46
        if 'Cant see my order' in customerFeedBack.subject:
47
            ticket.category = TicketCategory.PROFITMANDI_ORDER_NOT_SEEN
48
            ticket.priority = TicketPriority.HIGH
49
        elif 'Cashback' in customerFeedBack.subject:
50
            ticket.category = TicketCategory.PROFITMANDI_CASHBACK
51
            ticket.priority = TicketPriority.HIGH
52
        elif 'Feedback' in customerFeedBack.subject:
53
            ticket.category = TicketCategory.PROFITMANDI_FEEDBACK
54
            ticket.priority = TicketPriority.MEDIUM
55
        elif 'Recharge Related' in customerFeedBack.subject:
56
            ticket.category = TicketCategory.PROFITMANDI_RECHARGE_ISSUE
57
            ticket.priority = TicketPriority.HIGH
58
        else:
59
            ticket.category = TicketCategory.PROFITMANDI_OTHER
60
            ticket.priority = TicketPriority.MEDIUM
61
        ticket.description = 'User Specified Subject :- '+ customerFeedBack.subject + ' | ' +  customerFeedBack.message
62
        ticket.customerEmailId = customerFeedBack.email
63
        if user is not None and user.id !=-1:
64
            ticket.customerId = user.id
65
        ticket.status = TicketStatus.OPEN
66
        ticket.openDate = customerFeedBack.created
67
        ticket.customerMobileNumber = customerFeedBack.mobile
68
        ticket.customerName = customerFeedBack.customerName
69
 
70
        activity.creatorId = 1
71
        activity.ticketAssigneeId = ticket.assigneeId
72
        activity.type = ActivityType.RECEIVED_EMAIL_FROM_CUSTOMER
73
        activity.description = 'User Specified Subject :- '+ customerFeedBack.subject + ' | ' +  customerFeedBack.message
74
        activity.ticketCategory = ticket.category
75
        activity.ticketDescription = ticket.description
76
        activity.ticketPriority = ticket.priority
77
        activity.ticketStatus = ticket.status
78
        activity.customerEmailId = customerFeedBack.email
79
        if user is not None and user.id !=-1:
80
            activity.customerId  = user.id
81
        activity.customerName = customerFeedBack.customerName
82
        activity.customerMobileNumber = customerFeedBack.mobile
83
        activity.creationTimestamp = customerFeedBack.created
84
        activity.userEmailId = customerFeedBack.email
85
 
86
        if not crmServiceClient.isAlive():
87
            crmServiceClient = CRMClient().get_client()
88
 
89
        ticketId = crmServiceClient.insertTicket(ticket, activity)
90
 
91
        if ticketId >0:
92
            feedback = Feedbacks.get_by(id = customerFeedBack.id)
93
            feedback.isTicketCreated = True
94
            session.commit()
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