summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-11-29 09:12:10 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-11-29 09:12:10 +0700
commit5d4cfcb05b85add3bc08a0e161257a69e10550e2 (patch)
treec08f0975a735ee7f91b16a08fb89022cf6d46340 /indoteknik_custom/models
parent693e78afa8b9b4df99f417392b42bff12ea41f9e (diff)
history of wati
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/wati.py96
1 files changed, 87 insertions, 9 deletions
diff --git a/indoteknik_custom/models/wati.py b/indoteknik_custom/models/wati.py
index 1f694380..bb6f2293 100644
--- a/indoteknik_custom/models/wati.py
+++ b/indoteknik_custom/models/wati.py
@@ -17,7 +17,7 @@ class WatiNotification(models.Model):
text_time = fields.Datetime(string='Text Time')
text_type = fields.Char(string='Text Type')
json_raw = fields.Char(string='JSON Raw Text')
- is_parsed = fields.Boolean(string='Is Parsed')
+ is_parsed = fields.Boolean(string='Is Parsed', default=False)
is_lead = fields.Boolean(string='To Leads', help='apakah sudah ter-convert jadi leads')
def _cleanup(self):
@@ -33,7 +33,7 @@ class WatiNotification(models.Model):
def _parse_notification(self, limit = 0):
domain = [('is_parsed', '=', False)]
- notifications = self.search(domain, order='id desc', limit=limit)
+ notifications = self.search(domain, order='id', limit=limit)
notification_not_parsed_count = self.search_count(domain)
i = 0
for notification in notifications:
@@ -43,14 +43,59 @@ class WatiNotification(models.Model):
sender_name = 'Indoteknik'
if 'senderName' in notification_json:
sender_name = notification_json['senderName']
-
- notification.ticket_id = notification_json['ticketId']
- notification.mobile = notification_json['waId']
- notification.sender_name = sender_name
- notification.text = notification_json['text']
- notification.text_time = datetime.fromtimestamp(float(notification_json['timestamp']))
- notification.text_type = notification_json['type']
+
+ ticket_id = notification_json['ticketId']
+ date_wati = float(notification_json['timestamp'])
+ date_wati = datetime.fromtimestamp(date_wati)
+ wati_history = self.env['wati.history'].search([('ticket_id', '=', ticket_id)], limit=1)
+ if wati_history:
+ self._create_wati_history_line(wati_history, ticket_id, sender_name, notification_json, date_wati)
+ else:
+ new_header = self._create_wati_history_header(ticket_id, sender_name, notification_json, date_wati)
+ self._create_wati_history_line(new_header, ticket_id, sender_name, notification_json, date_wati)
notification.is_parsed = True
+
+ # notification.ticket_id = notification_json['ticketId']
+ # notification.mobile = notification_json['waId']
+ # notification.sender_name = sender_name
+ # notification.text = notification_json['text']
+ # notification.text_time = datetime.fromtimestamp(float(notification_json['timestamp']))
+ # notification.text_type = notification_json['type']
+ # notification.is_parsed = True
+ # return
+
+ def _create_wati_history_header(self, ticket_id, sender_name, notification_json, date_wati):
+ param_header = {
+ 'ticket_id': ticket_id,
+ 'conversation_id': notification_json['conversationId'],
+ 'sender_name': sender_name,
+ 'wa_id': notification_json['waId'],
+ 'text': notification_json['text'],
+ 'date_wati': date_wati or '',
+ }
+ new_header = self.env['wati.history'].create([param_header])
+ return new_header
+
+ def _create_wati_history_line(self, new_header, ticket_id, sender_name, notification_json, date_wati):
+ param_line = {
+ "wati_history_id": new_header.id,
+ "conversation_id": notification_json['conversationId'],
+ "data": notification_json['data'] or '',
+ "event_type": notification_json['eventType'] or '',
+ # "list_reply": notification_json['listReply'] or '',
+ # "message_contact": notification_json['messageContact'] or '',
+ "operator_email": notification_json['operatorEmail'] or '',
+ "operator_name": notification_json['operatorName'] or '',
+ "sender_name": sender_name or '',
+ # "source_url": notification_json['sourceUrl'] or '',
+ "status_string": notification_json['statusString'] or '',
+ "text": notification_json['text'] or '',
+ "ticket_id": ticket_id,
+ "type": notification_json['type'] or '',
+ "wa_id": notification_json['waId'] or '',
+ "date_wati": date_wati or '',
+ }
+ self.env['wati.history.line'].create([param_line])
return
def _convert_to_leads(self):
@@ -116,3 +161,36 @@ class WatiNotification(models.Model):
}])
wati.is_lead = True
wati.lead_id = current_lead.id
+
+
+class WatiHistory(models.Model):
+ _name = 'wati.history'
+
+ ticket_id = fields.Char(string='Ticket ID')
+ conversation_id = fields.Char(string='Conversation ID')
+ sender_name = fields.Char(string='Sender Name')
+ wa_id = fields.Char(string='WA ID')
+ text = fields.Char(string='Text')
+ date_wati = fields.Datetime(string='Date WATI')
+ wati_lines = fields.One2many('wati.history.line', 'wati_history_id', string='Lines', auto_join=True)
+
+class WatiHistoryLine(models.Model):
+ _name = 'wati.history.line'
+
+ #sender
+ wati_history_id = fields.Many2one('ref', required=True, ondelete='cascade', index=True, copy=False)
+ conversation_id = fields.Char(string='Conversation ID')
+ data = fields.Char(string='data')
+ event_type = fields.Char(string='Event Type')
+ list_reply = fields.Char(string='List Reply')
+ message_contact = fields.Char(string='Message Contact')
+ operator_email = fields.Char(string='Operator Email')
+ operator_name = fields.Char(string='Operator Name')
+ sender_name = fields.Char(string='Sender Name')
+ source_url = fields.Char(string='Source URL')
+ status_string = fields.Char(string='Status String')
+ text = fields.Char(string='Text')
+ ticket_id = fields.Char(string='Ticket ID')
+ type = fields.Char(string='Type')
+ wa_id = fields.Char(string='WA ID')
+ date_wati = fields.Datetime(string='Date WATI')