Subversion Repositories SmartDukaan

Rev

Rev 16323 | 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 
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