ef322d962151477200ac086330670e1bda900186
[motion2.git] / server / api / whatsappInteraction / whatsappInteraction.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x8bac=['User','fullname','CmContact','firstName','attachments','Attachment','Messages','direction','read','WhatsappAccount','Account','get','Owner','createdAt','closedAt','basename','existsSync','createReadStream','createWriteStream','System','Contact','lastName','secret','value','renderFile','downloadInteraction.ejs','transcript-','Whatsapp','download','log','err','unlinkSync','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','end','offset','limit','count','set','Content-Range','json','then','destroy','stack','name','index','map','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','user','catch','keys','filters','intersection','model','attributes','fields','length','options','find','create','body','update','params','describe','addMessage','ids','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','WhatsappInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','WhatsappMessage','includeAll','include','setTags','spread','Tag','color','removeTags','unix','toString','join','root','server','files','tmp','transcript-%d-%s.zip','push'];(function(_0x5055db,_0x22829e){var _0x49fe6e=function(_0x4462e){while(--_0x4462e){_0x5055db['push'](_0x5055db['shift']());}};_0x49fe6e(++_0x22829e);}(_0x8bac,0x110));var _0xc8ba=function(_0x2ef44b,_0x553359){_0x2ef44b=_0x2ef44b-0x0;var _0x2405b9=_0x8bac[_0x2ef44b];return _0x2405b9;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xc8ba('0x0'));var path=require(_0xc8ba('0x1'));var ejs=require(_0xc8ba('0x2'));var fs=require('fs');var _=require(_0xc8ba('0x3'));var Redis=require(_0xc8ba('0x4'));var interaction=require(_0xc8ba('0x5'));var qs=require(_0xc8ba('0x6'));var pdf=require(_0xc8ba('0x7'));var logger=require(_0xc8ba('0x8'))('api');var config=require('../../config/environment');var db=require(_0xc8ba('0x9'))['db'];config[_0xc8ba('0xa')]=_[_0xc8ba('0xb')](config['redis'],{'host':_0xc8ba('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc8ba('0xd'))[_0xc8ba('0xe')](socket);function respondWithStatusCode(_0x40123a,_0x8669b8){_0x8669b8=_0x8669b8||0xcc;return function(_0x1c5fc7){if(_0x1c5fc7){return _0x40123a[_0xc8ba('0xf')](_0x8669b8);}return _0x40123a[_0xc8ba('0x10')](_0x8669b8)[_0xc8ba('0x11')]();};}function respondWithResult(_0x4d1d44,_0x34a4b9){_0x34a4b9=_0x34a4b9||0xc8;return function(_0x2fa352){if(_0x2fa352){return _0x4d1d44[_0xc8ba('0x10')](_0x34a4b9)['json'](_0x2fa352);}};}function respondWithFilteredResult(_0x5bed46,_0xd2b072){return function(_0x419536){if(_0x419536){var _0x87462e=typeof _0xd2b072[_0xc8ba('0x12')]==='undefined'&&typeof _0xd2b072[_0xc8ba('0x13')]==='undefined';var _0x469624=_0x419536[_0xc8ba('0x14')];var _0x1ffab3=_0x87462e?0x0:_0xd2b072['offset'];var _0x2f2911=_0x87462e?_0x419536[_0xc8ba('0x14')]:_0xd2b072[_0xc8ba('0x12')]+_0xd2b072[_0xc8ba('0x13')];var _0x4d4880;if(_0x2f2911>=_0x469624){_0x2f2911=_0x469624;_0x4d4880=0xc8;}else{_0x4d4880=0xce;}_0x5bed46['status'](_0x4d4880);return _0x5bed46[_0xc8ba('0x15')](_0xc8ba('0x16'),_0x1ffab3+'-'+_0x2f2911+'/'+_0x469624)[_0xc8ba('0x17')](_0x419536);}return null;};}function saveUpdates(_0x5d2713){return function(_0x54d17e){if(_0x54d17e){return _0x54d17e['update'](_0x5d2713)[_0xc8ba('0x18')](function(_0x287867){return _0x287867;});}return null;};}function removeEntity(_0x4ee750){return function(_0x56a9fc){if(_0x56a9fc){return _0x56a9fc[_0xc8ba('0x19')]()[_0xc8ba('0x18')](function(){_0x4ee750[_0xc8ba('0x10')](0xcc)[_0xc8ba('0x11')]();});}};}function handleEntityNotFound(_0xb06a03){return function(_0x7adc4c){if(!_0x7adc4c){_0xb06a03[_0xc8ba('0xf')](0x194);}return _0x7adc4c;};}function handleError(_0x1b9c4e,_0x32984c){_0x32984c=_0x32984c||0x1f4;return function(_0x4c47a5){logger['error'](_0x4c47a5[_0xc8ba('0x1a')]);if(_0x4c47a5[_0xc8ba('0x1b')]){delete _0x4c47a5[_0xc8ba('0x1b')];}_0x1b9c4e[_0xc8ba('0x10')](_0x32984c)['send'](_0x4c47a5);};}exports[_0xc8ba('0x1c')]=function(_0x4f17ae,_0x46a7b5){var _0x25c7b1={};var _0x484b67=_[_0xc8ba('0x1d')](db[_0xc8ba('0x1e')][_0xc8ba('0x1f')],function(_0x5a24b5){return{'name':_0x5a24b5[_0xc8ba('0x20')],'type':_0x5a24b5[_0xc8ba('0x21')][_0xc8ba('0x22')]};});_0x25c7b1=qs[_0xc8ba('0x23')](_0x484b67,_0x4f17ae);return interaction[_0xc8ba('0x24')](_0xc8ba('0x25'),_0x4f17ae[_0xc8ba('0x26')],_0x4f17ae[_0xc8ba('0x27')],_0x25c7b1,_0x484b67)['then'](respondWithFilteredResult(_0x46a7b5,_0x25c7b1))[_0xc8ba('0x28')](handleError(_0x46a7b5,null));};exports['show']=function(_0x210cd5,_0x46d1fa){var _0x1d322c={'raw':![],'where':{'id':_0x210cd5['params']['id']}},_0x288861={};_0x288861['model']=_['keys'](db[_0xc8ba('0x1e')][_0xc8ba('0x1f')]);_0x288861[_0xc8ba('0x26')]=_[_0xc8ba('0x29')](_0x210cd5[_0xc8ba('0x26')]);_0x288861[_0xc8ba('0x2a')]=_[_0xc8ba('0x2b')](_0x288861[_0xc8ba('0x2c')],_0x288861[_0xc8ba('0x26')]);_0x1d322c[_0xc8ba('0x2d')]=_[_0xc8ba('0x2b')](_0x288861['model'],qs[_0xc8ba('0x2e')](_0x210cd5[_0xc8ba('0x26')][_0xc8ba('0x2e')]));_0x1d322c[_0xc8ba('0x2d')]=_0x1d322c['attributes'][_0xc8ba('0x2f')]?_0x1d322c[_0xc8ba('0x2d')]:_0x288861[_0xc8ba('0x2c')];if(_0x210cd5['query']['includeAll']){_0x1d322c['include']=[{'all':!![]}];}_0x1d322c=_['merge']({},_0x1d322c,_0x210cd5[_0xc8ba('0x30')]);return db['WhatsappInteraction'][_0xc8ba('0x31')](_0x1d322c)[_0xc8ba('0x18')](handleEntityNotFound(_0x46d1fa,null))[_0xc8ba('0x18')](respondWithResult(_0x46d1fa,null))[_0xc8ba('0x28')](handleError(_0x46d1fa,null));};exports[_0xc8ba('0x32')]=function(_0x233b2b,_0x55fe07){return db['WhatsappInteraction'][_0xc8ba('0x32')](_0x233b2b[_0xc8ba('0x33')],{})['then'](respondWithResult(_0x55fe07,0xc9))[_0xc8ba('0x28')](handleError(_0x55fe07,null));};exports[_0xc8ba('0x34')]=function(_0x2334c3,_0x1caf25){if(_0x2334c3[_0xc8ba('0x33')]['id']){delete _0x2334c3[_0xc8ba('0x33')]['id'];}return db[_0xc8ba('0x1e')][_0xc8ba('0x31')]({'where':{'id':_0x2334c3['params']['id']}})[_0xc8ba('0x18')](handleEntityNotFound(_0x1caf25,null))[_0xc8ba('0x18')](saveUpdates(_0x2334c3[_0xc8ba('0x33')],null))[_0xc8ba('0x18')](respondWithResult(_0x1caf25,null))['catch'](handleError(_0x1caf25,null));};exports['destroy']=function(_0x185b26,_0x432d8e){return db[_0xc8ba('0x1e')]['find']({'where':{'id':_0x185b26[_0xc8ba('0x35')]['id']}})[_0xc8ba('0x18')](handleEntityNotFound(_0x432d8e,null))['then'](removeEntity(_0x432d8e,null))[_0xc8ba('0x28')](handleError(_0x432d8e,null));};exports[_0xc8ba('0x36')]=function(_0x5395e3,_0xa3acc5){return db[_0xc8ba('0x1e')][_0xc8ba('0x36')]()[_0xc8ba('0x18')](respondWithResult(_0xa3acc5,null))[_0xc8ba('0x28')](handleError(_0xa3acc5,null));};exports[_0xc8ba('0x37')]=function(_0x576ee0,_0x4b02cb){return db['WhatsappMessage']['find']({'where':{'id':_0x576ee0['params']['id']}})[_0xc8ba('0x18')](handleEntityNotFound(_0x4b02cb,null))[_0xc8ba('0x18')](function(_0x1cc2d3){if(_0x1cc2d3){return _0x1cc2d3[_0xc8ba('0x37')](_0x576ee0[_0xc8ba('0x33')]['ids'],_['omit'](_0x576ee0[_0xc8ba('0x33')],[_0xc8ba('0x38'),'id'])||{});}})[_0xc8ba('0x18')](respondWithResult(_0x4b02cb,null))[_0xc8ba('0x28')](handleError(_0x4b02cb,null));};exports[_0xc8ba('0x39')]=function(_0x319d8b,_0xe40750){var _0x12712f={'raw':![],'where':{}};var _0xec9cb9={};var _0x393319={'count':0x0,'rows':[]};return db[_0xc8ba('0x1e')][_0xc8ba('0x3a')]({'where':{'id':_0x319d8b[_0xc8ba('0x35')]['id']}})['then'](handleEntityNotFound(_0xe40750,null))[_0xc8ba('0x18')](function(_0x1f3547){if(_0x1f3547){_0xec9cb9[_0xc8ba('0x2c')]=_[_0xc8ba('0x29')](db['WhatsappMessage'][_0xc8ba('0x1f')]);_0xec9cb9[_0xc8ba('0x26')]=_[_0xc8ba('0x29')](_0x319d8b[_0xc8ba('0x26')]);_0xec9cb9['filters']=_[_0xc8ba('0x2b')](_0xec9cb9['model'],_0xec9cb9[_0xc8ba('0x26')]);_0x12712f[_0xc8ba('0x2d')]=_[_0xc8ba('0x2b')](_0xec9cb9[_0xc8ba('0x2c')],qs[_0xc8ba('0x2e')](_0x319d8b[_0xc8ba('0x26')][_0xc8ba('0x2e')]));_0x12712f[_0xc8ba('0x2d')]=_0x12712f[_0xc8ba('0x2d')][_0xc8ba('0x2f')]?_0x12712f[_0xc8ba('0x2d')]:_0xec9cb9[_0xc8ba('0x2c')];if(!_0x319d8b['query'][_0xc8ba('0x3b')](_0xc8ba('0x3c'))){_0x12712f['limit']=qs[_0xc8ba('0x13')](_0x319d8b[_0xc8ba('0x26')][_0xc8ba('0x13')]);_0x12712f[_0xc8ba('0x12')]=qs[_0xc8ba('0x12')](_0x319d8b[_0xc8ba('0x26')]['offset']);}_0x12712f[_0xc8ba('0x3d')]=qs[_0xc8ba('0x3e')](_0x319d8b['query'][_0xc8ba('0x3e')]);_0x12712f[_0xc8ba('0x3f')]=qs[_0xc8ba('0x2a')](_['pick'](_0x319d8b[_0xc8ba('0x26')],_0xec9cb9[_0xc8ba('0x2a')]));_0x12712f[_0xc8ba('0x3f')][_0xc8ba('0x40')]=_0x1f3547['id'];if(_0x319d8b[_0xc8ba('0x26')][_0xc8ba('0x41')]){_0x12712f[_0xc8ba('0x3f')]=_[_0xc8ba('0x42')](_0x12712f['where'],{'$or':_[_0xc8ba('0x1d')](_0x12712f[_0xc8ba('0x2d')],function(_0x11cb05){var _0x322c57={};_0x322c57[_0x11cb05]={'$like':'%'+_0x319d8b['query'][_0xc8ba('0x41')]+'%'};return _0x322c57;})});}if(_0x319d8b[_0xc8ba('0x26')]['$gte']){var _0x28078f=_0x319d8b[_0xc8ba('0x26')][_0xc8ba('0x43')][_0xc8ba('0x44')](',');var _0x12783f={};_0x12783f[_0x28078f[0x0]]={'$gte':moment(_0x28078f[0x1])[_0xc8ba('0x45')](_0xc8ba('0x46'))};_0x12712f[_0xc8ba('0x3f')]=_[_0xc8ba('0x42')](_0x12712f[_0xc8ba('0x3f')],_0x12783f);}_0x12712f=_[_0xc8ba('0x42')]({},_0x12712f,_0x319d8b[_0xc8ba('0x30')]);return db[_0xc8ba('0x47')]['count']({'where':_0x12712f[_0xc8ba('0x3f')]})[_0xc8ba('0x18')](function(_0x3b5d0d){_0x393319[_0xc8ba('0x14')]=_0x3b5d0d;if(_0x319d8b[_0xc8ba('0x26')][_0xc8ba('0x48')]){_0x12712f[_0xc8ba('0x49')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x12712f);})[_0xc8ba('0x18')](function(_0xa7a8c2){_0x393319['rows']=_0xa7a8c2;return _0x393319;});}})['then'](respondWithFilteredResult(_0xe40750,_0x12712f))[_0xc8ba('0x28')](handleError(_0xe40750,null));};exports['addTags']=function(_0x4b57cd,_0x32dea0){return db[_0xc8ba('0x1e')][_0xc8ba('0x31')]({'where':{'id':_0x4b57cd[_0xc8ba('0x35')]['id']}})[_0xc8ba('0x18')](handleEntityNotFound(_0x32dea0,null))['then'](function(_0x1c6681){if(_0x1c6681){return _0x1c6681[_0xc8ba('0x4a')](_0x4b57cd['body'][_0xc8ba('0x38')],_['omit'](_0x4b57cd['body'],['ids','id'])||{})[_0xc8ba('0x4b')](function(){return db[_0xc8ba('0x4c')][_0xc8ba('0x24')]({'attributes':['id',_0xc8ba('0x1b'),_0xc8ba('0x4d')],'where':{'id':_0x4b57cd[_0xc8ba('0x33')][_0xc8ba('0x38')]}});})['then'](function(_0x36f2fa){socket['emit']('whatsappInteractionTags:save',{'id':Number(_0x4b57cd[_0xc8ba('0x35')]['id']),'tags':_0x36f2fa||[]});return{'id':Number(_0x4b57cd[_0xc8ba('0x35')]['id']),'tags':_0x36f2fa||[]};});}})[_0xc8ba('0x18')](respondWithResult(_0x32dea0,null))['catch'](handleError(_0x32dea0,null));};exports[_0xc8ba('0x4e')]=function(_0xd53301,_0x2d8d4b){return db[_0xc8ba('0x1e')]['find']({'where':{'id':_0xd53301[_0xc8ba('0x35')]['id']}})[_0xc8ba('0x18')](handleEntityNotFound(_0x2d8d4b,null))[_0xc8ba('0x18')](function(_0x5689e7){if(_0x5689e7){return _0x5689e7['removeTags'](_0xd53301[_0xc8ba('0x26')][_0xc8ba('0x38')]);}})[_0xc8ba('0x18')](respondWithStatusCode(_0x2d8d4b,null))[_0xc8ba('0x28')](handleError(_0x2d8d4b,null));};exports['download']=function(_0x4008a0,_0x68d57f){var _0xe4ec07=moment()[_0xc8ba('0x4f')]()[_0xc8ba('0x50')]();var _0x2f4e06=path[_0xc8ba('0x51')](config[_0xc8ba('0x52')],_0xc8ba('0x53'),_0xc8ba('0x54'),_0xc8ba('0x55'));var _0x4e8aaa=path[_0xc8ba('0x51')](config[_0xc8ba('0x52')],'server',_0xc8ba('0x54'),'attachments');var _0x4fceea=path['join'](_0x2f4e06,_0xe4ec07);var _0x1a3ac4=util[_0xc8ba('0x45')](_0xc8ba('0x56'),_0x4008a0[_0xc8ba('0x35')]['id'],_0xe4ec07);var _0xbeebaa=path[_0xc8ba('0x51')](_0x2f4e06,_0x1a3ac4);var _0x4290c9=[];_0x4290c9[_0xc8ba('0x57')]({'model':db[_0xc8ba('0x58')],'as':_0xc8ba('0x58'),'attributes':['id',_0xc8ba('0x59')],'raw':!![]});_0x4290c9[_0xc8ba('0x57')]({'model':db[_0xc8ba('0x5a')],'as':'Contact','attributes':['id',_0xc8ba('0x5b'),'lastName'],'raw':!![]});if(_0x4008a0[_0xc8ba('0x26')][_0xc8ba('0x5c')]){_0x4290c9[_0xc8ba('0x57')]({'model':db[_0xc8ba('0x5d')],'as':_0xc8ba('0x5d'),'raw':!![]});}var _0x4a1065=[{'model':db['WhatsappMessage'],'as':_0xc8ba('0x5e'),'attributes':['id',_0xc8ba('0x33'),'createdAt',_0xc8ba('0x5f'),'secret',_0xc8ba('0x60')],'include':_0x4290c9}];_0x4a1065['push']({'model':db[_0xc8ba('0x61')],'as':_0xc8ba('0x62'),'attributes':['id','name']});_0x4a1065[_0xc8ba('0x57')]({'model':db['User'],'as':'Owner','attributes':['id',_0xc8ba('0x59')]});return db[_0xc8ba('0x1e')][_0xc8ba('0x31')]({'where':{'id':_0x4008a0[_0xc8ba('0x35')]['id']},'include':_0x4a1065})['then'](handleEntityNotFound(_0x68d57f,null))[_0xc8ba('0x18')](function(_0x35d230){if(_0x35d230){var _0x454722=_0x35d230[_0xc8ba('0x63')]({'plain':!![]});fs['mkdirSync'](_0x4fceea);var _0x495338={'channel':'Whatsapp','account':_0x454722[_0xc8ba('0x62')][_0xc8ba('0x1b')],'agent':_0x454722[_0xc8ba('0x64')]?_0x454722['Owner'][_0xc8ba('0x59')]:'N.A.','createdAt':moment(_0x454722[_0xc8ba('0x65')])['format'](_0xc8ba('0x46'))[_0xc8ba('0x50')](),'closedAt':_0x454722['closed']?moment(_0x454722[_0xc8ba('0x66')])['format'](_0xc8ba('0x46'))[_0xc8ba('0x50')]():'','disposition':_0x454722['disposition'],'messages':_(_0x454722['Messages'])['filter']({'secret':![]})[_0xc8ba('0x1d')](function(_0x16dfc0){if(_0x16dfc0['Attachment']){var _0x44d83c=path[_0xc8ba('0x51')](_0x4e8aaa,_0x16dfc0['Attachment'][_0xc8ba('0x67')]);if(fs[_0xc8ba('0x68')](_0x44d83c)){fs[_0xc8ba('0x69')](_0x44d83c)['pipe'](fs[_0xc8ba('0x6a')](path[_0xc8ba('0x51')](_0x4fceea,_0x16dfc0['Attachment']['basename'])));}}return{'date':moment(_0x16dfc0[_0xc8ba('0x65')])[_0xc8ba('0x45')]('YYYY-MM-DD\x20HH:mm:ss')[_0xc8ba('0x50')](),'sender':_0x16dfc0[_0xc8ba('0x5f')]==='out'?_0x16dfc0[_0xc8ba('0x58')]?_0x16dfc0[_0xc8ba('0x58')][_0xc8ba('0x59')]:_0xc8ba('0x6b'):_0x16dfc0['Contact'][_0xc8ba('0x5b')]+(_0x16dfc0[_0xc8ba('0x6c')][_0xc8ba('0x6d')]?'\x20'+_0x16dfc0[_0xc8ba('0x6c')]['lastName']:''),'body':_0x16dfc0[_0xc8ba('0x5d')]?_0x16dfc0[_0xc8ba('0x5d')][_0xc8ba('0x67')]:_0x16dfc0['body'],'direction':_0x16dfc0[_0xc8ba('0x5f')]==='out'?'A':'C','secret':_0x16dfc0[_0xc8ba('0x6e')],'read':_0x16dfc0[_0xc8ba('0x60')],'attachment':_0x16dfc0[_0xc8ba('0x5d')]};})[_0xc8ba('0x6f')]()};return ejs[_0xc8ba('0x70')](path[_0xc8ba('0x51')](config[_0xc8ba('0x52')],'server','views',_0xc8ba('0x71')),{'interaction':_0x495338})[_0xc8ba('0x18')](function(_0x1f6b2d){var _0x5c378a=path[_0xc8ba('0x51')](_0x4fceea,_0xc8ba('0x72')+_0x454722['id']+'-'+_0xe4ec07+'.pdf');var _0x5d186e={'path':_0x5c378a,'channel':_0xc8ba('0x73'),'interactionId':_0x454722['id']};return pdf['createPdfFromHTML'](_0x1f6b2d,_0x5d186e);})['then'](function(){return new BPromise(function(_0xf884f5,_0x543ca7){zipdir(_0x4fceea,{'saveTo':_0xbeebaa},function(_0xad9f03,_0x51f324){if(_0xad9f03)return _0x543ca7(_0xad9f03);return _0xf884f5(_0x51f324);});})['then'](function(){return new BPromise(function(_0x12aeab,_0x1aae2e){rimraf(_0x4fceea,function(_0x3fc288){if(_0x3fc288)_0x1aae2e(_0x3fc288);return _0x12aeab();});});})[_0xc8ba('0x18')](function(){return _0x68d57f[_0xc8ba('0x74')](_0xbeebaa,_0x1a3ac4,function(_0x492cfb){if(_0x492cfb){console[_0xc8ba('0x75')](_0xc8ba('0x76'),_0x492cfb);}else{fs[_0xc8ba('0x77')](_0xbeebaa);}});});});}else{return _0x68d57f[_0xc8ba('0xf')](0xc8);}})['catch'](handleError(_0x68d57f,null));};