summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/wati.py
blob: df467ea1c118d93afbc6dca0f7fb820c2d1693ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from odoo import fields, models, api
from datetime import datetime, timedelta
import logging
import json

_logger = logging.getLogger(__name__)


class WatiNotification(models.Model):
    _name = 'wati.notification'

    json_raw = fields.Char(string='JSON Raw Text')
    is_lead = fields.Boolean(string='To Leads', help='apakah sudah ter-convert jadi leads')

    def _cleanup(self):
        current_time = datetime.now()
        delta_time = current_time - timedelta(days=15)

        delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S')
        self.env['wati.notification'].search([
            ('create_date', '<', delta_time),
            ('is_lead', '=', True),
        ]).unlink()
        _logger.info('Success Cleanup WATI Notification')


    def _convert_to_leads(self):
        query = [
            ('is_lead', '=', False)
        ]
        watis = self.env['wati.notification'].search(query, order='id')

        for wati in watis:
            _logger.info('Convert to Lead WATI Notification ID %s' % wati.id)
            ticket_id = json.loads(wati.json_raw)['ticketId']
            text = json.loads(wati.json_raw)['text']

            current_lead = self.env['crm.lead'].search([('ticket_id', '=', ticket_id)], limit=1)
            operator_email = json.loads(wati.json_raw)['operatorEmail']
            operator_name = json.loads(wati.json_raw)['operatorName']
            event_type = json.loads(wati.json_raw)['eventType']

            if event_type == 'sessionMessageSent':
                if 'Saya *Eko*' in str(text):
                    sales = 11
                elif 'Saya *Nabila*' in str(text):
                    sales = 20
                elif 'Saya *Novita*' in str(text):
                    sales = 377
                elif 'Saya *Putri*' in str(text):
                    sales = 10
                elif 'Saya *Heriyanto*' in str(text):
                    sales = 375
                elif 'Saya *Ade*' in str(text):
                    sales = 9
                elif 'Saya *Adela*' in str(text):
                    sales = 8
                elif 'Saya *Jananto*' in str(text):
                    sales = 376
                elif 'Saya *Dwi*' in str(text):
                    sales = 24
                else:
                    sales = 25 #System
                current_lead.description = str(current_lead.description)+ "| i:" + str(text)
                current_lead.operator_email = operator_email
                current_lead.operator_name = operator_name
                current_lead.user_id = sales
                wati.is_lead = True
            elif current_lead:
                # must append internal notes as a reply here
                current_lead.description = str(current_lead.description) + " | c:" +str(text)
                current_lead.operator_email = operator_email
                current_lead.operator_name = operator_name
                wati.is_lead = True
            else:
                # create new leads
                contact_name = json.loads(wati.json_raw)['senderName']
                phone = json.loads(wati.json_raw)['waId']
                name = 'Ada pesan dari WATI '+str(phone)+' '+str(contact_name)

                self.env['crm.lead'].create([{
                    'name': name,
                    'ticket_id': ticket_id,
                    'operator_email': operator_email,
                    'operator_name': operator_name,
                    'contact_name': contact_name,
                    'phone': phone,
                    'description': "c:" +str(text)
                }])
                wati.is_lead = True