0aca2775d2ad128c2bfbee499b8881f0585deb4b
[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 _0xfe70=['closedAt','disposition','createWriteStream','out','System','basename','value','renderFile','views','downloadInteraction.ejs','.pdf','log','rimraf','zip-dir','bluebird','util','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','findAll','query','user','params','WhatsappInteraction','keys','filters','model','attributes','intersection','fields','length','includeAll','include','options','find','catch','create','body','describe','ids','getMessages','findOne','hasOwnProperty','order','sort','where','pick','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','merge','WhatsappMessage','addTags','omit','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','User','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','secret','read','WhatsappAccount','Account','Owner','fullname','mkdirSync','N.A.','createdAt','toString','closed'];(function(_0x169790,_0x48aa33){var _0x4d0f36=function(_0x2a848d){while(--_0x2a848d){_0x169790['push'](_0x169790['shift']());}};_0x4d0f36(++_0x48aa33);}(_0xfe70,0x102));var _0x0fe7=function(_0x393500,_0x1037af){_0x393500=_0x393500-0x0;var _0x120d3b=_0xfe70[_0x393500];return _0x120d3b;};'use strict';var rimraf=require(_0x0fe7('0x0'));var zipdir=require(_0x0fe7('0x1'));var moment=require('moment');var BPromise=require(_0x0fe7('0x2'));var util=require(_0x0fe7('0x3'));var path=require(_0x0fe7('0x4'));var ejs=require(_0x0fe7('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x0fe7('0x6'));var qs=require(_0x0fe7('0x7'));var pdf=require(_0x0fe7('0x8'));var logger=require(_0x0fe7('0x9'))(_0x0fe7('0xa'));var config=require(_0x0fe7('0xb'));var db=require(_0x0fe7('0xc'))['db'];config[_0x0fe7('0xd')]=_[_0x0fe7('0xe')](config[_0x0fe7('0xd')],{'host':_0x0fe7('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0fe7('0xd')]));require(_0x0fe7('0x10'))[_0x0fe7('0x11')](socket);function respondWithStatusCode(_0x3f9c23,_0x6fb19c){_0x6fb19c=_0x6fb19c||0xcc;return function(_0x5db0fc){if(_0x5db0fc){return _0x3f9c23[_0x0fe7('0x12')](_0x6fb19c);}return _0x3f9c23[_0x0fe7('0x13')](_0x6fb19c)[_0x0fe7('0x14')]();};}function respondWithResult(_0x35ddd2,_0xa99399){_0xa99399=_0xa99399||0xc8;return function(_0xe83fd9){if(_0xe83fd9){return _0x35ddd2[_0x0fe7('0x13')](_0xa99399)[_0x0fe7('0x15')](_0xe83fd9);}};}function respondWithFilteredResult(_0x190323,_0x37f371){return function(_0x3fee6d){if(_0x3fee6d){var _0x47c520=typeof _0x37f371[_0x0fe7('0x16')]===_0x0fe7('0x17')&&typeof _0x37f371['limit']===_0x0fe7('0x17');var _0x31abcb=_0x3fee6d[_0x0fe7('0x18')];var _0x48100f=_0x47c520?0x0:_0x37f371[_0x0fe7('0x16')];var _0x4a27ed=_0x47c520?_0x3fee6d[_0x0fe7('0x18')]:_0x37f371[_0x0fe7('0x16')]+_0x37f371[_0x0fe7('0x19')];var _0xf37f37;if(_0x4a27ed>=_0x31abcb){_0x4a27ed=_0x31abcb;_0xf37f37=0xc8;}else{_0xf37f37=0xce;}_0x190323[_0x0fe7('0x13')](_0xf37f37);return _0x190323[_0x0fe7('0x1a')](_0x0fe7('0x1b'),_0x48100f+'-'+_0x4a27ed+'/'+_0x31abcb)[_0x0fe7('0x15')](_0x3fee6d);}return null;};}function saveUpdates(_0x1cf43f){return function(_0x4cb390){if(_0x4cb390){return _0x4cb390[_0x0fe7('0x1c')](_0x1cf43f)[_0x0fe7('0x1d')](function(_0x123875){return _0x123875;});}return null;};}function removeEntity(_0x325777){return function(_0x2efef8){if(_0x2efef8){return _0x2efef8[_0x0fe7('0x1e')]()[_0x0fe7('0x1d')](function(){_0x325777['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x32a479){return function(_0xf60d31){if(!_0xf60d31){_0x32a479[_0x0fe7('0x12')](0x194);}return _0xf60d31;};}function handleError(_0x7cd368,_0x534dd9){_0x534dd9=_0x534dd9||0x1f4;return function(_0x1ff208){logger[_0x0fe7('0x1f')](_0x1ff208[_0x0fe7('0x20')]);if(_0x1ff208['name']){delete _0x1ff208[_0x0fe7('0x21')];}_0x7cd368['status'](_0x534dd9)[_0x0fe7('0x22')](_0x1ff208);};}exports[_0x0fe7('0x23')]=function(_0x51c69b,_0x36f5a6){var _0x39a35b={};var _0x262146=_[_0x0fe7('0x24')](db['WhatsappInteraction'][_0x0fe7('0x25')],function(_0x34a3df){return{'name':_0x34a3df[_0x0fe7('0x26')],'type':_0x34a3df['type'][_0x0fe7('0x27')]};});_0x39a35b=qs['getOptions'](_0x262146,_0x51c69b);return interaction[_0x0fe7('0x28')]('whatsapp',_0x51c69b[_0x0fe7('0x29')],_0x51c69b[_0x0fe7('0x2a')],_0x39a35b,_0x262146)[_0x0fe7('0x1d')](respondWithFilteredResult(_0x36f5a6,_0x39a35b))['catch'](handleError(_0x36f5a6,null));};exports['show']=function(_0x1c25ae,_0x12b527){var _0x3e19ec={'raw':![],'where':{'id':_0x1c25ae[_0x0fe7('0x2b')]['id']}},_0x3388c9={};_0x3388c9['model']=_['keys'](db[_0x0fe7('0x2c')][_0x0fe7('0x25')]);_0x3388c9['query']=_[_0x0fe7('0x2d')](_0x1c25ae['query']);_0x3388c9[_0x0fe7('0x2e')]=_['intersection'](_0x3388c9[_0x0fe7('0x2f')],_0x3388c9['query']);_0x3e19ec[_0x0fe7('0x30')]=_[_0x0fe7('0x31')](_0x3388c9['model'],qs[_0x0fe7('0x32')](_0x1c25ae[_0x0fe7('0x29')][_0x0fe7('0x32')]));_0x3e19ec[_0x0fe7('0x30')]=_0x3e19ec[_0x0fe7('0x30')][_0x0fe7('0x33')]?_0x3e19ec[_0x0fe7('0x30')]:_0x3388c9[_0x0fe7('0x2f')];if(_0x1c25ae['query'][_0x0fe7('0x34')]){_0x3e19ec[_0x0fe7('0x35')]=[{'all':!![]}];}_0x3e19ec=_['merge']({},_0x3e19ec,_0x1c25ae[_0x0fe7('0x36')]);return db[_0x0fe7('0x2c')][_0x0fe7('0x37')](_0x3e19ec)['then'](handleEntityNotFound(_0x12b527,null))[_0x0fe7('0x1d')](respondWithResult(_0x12b527,null))[_0x0fe7('0x38')](handleError(_0x12b527,null));};exports[_0x0fe7('0x39')]=function(_0x1a14f4,_0xbbe2d){return db[_0x0fe7('0x2c')][_0x0fe7('0x39')](_0x1a14f4[_0x0fe7('0x3a')],{})[_0x0fe7('0x1d')](respondWithResult(_0xbbe2d,0xc9))[_0x0fe7('0x38')](handleError(_0xbbe2d,null));};exports[_0x0fe7('0x1c')]=function(_0x2994c2,_0x4be3ab){if(_0x2994c2['body']['id']){delete _0x2994c2[_0x0fe7('0x3a')]['id'];}return db[_0x0fe7('0x2c')][_0x0fe7('0x37')]({'where':{'id':_0x2994c2[_0x0fe7('0x2b')]['id']}})[_0x0fe7('0x1d')](handleEntityNotFound(_0x4be3ab,null))[_0x0fe7('0x1d')](saveUpdates(_0x2994c2['body'],null))['then'](respondWithResult(_0x4be3ab,null))['catch'](handleError(_0x4be3ab,null));};exports['destroy']=function(_0x56bedb,_0x2ab407){return db[_0x0fe7('0x2c')][_0x0fe7('0x37')]({'where':{'id':_0x56bedb['params']['id']}})['then'](handleEntityNotFound(_0x2ab407,null))[_0x0fe7('0x1d')](removeEntity(_0x2ab407,null))['catch'](handleError(_0x2ab407,null));};exports[_0x0fe7('0x3b')]=function(_0x4d733d,_0x427da7){return db[_0x0fe7('0x2c')][_0x0fe7('0x3b')]()[_0x0fe7('0x1d')](respondWithResult(_0x427da7,null))['catch'](handleError(_0x427da7,null));};exports['addMessage']=function(_0x40bd15,_0xd46358){return db['WhatsappMessage'][_0x0fe7('0x37')]({'where':{'id':_0x40bd15[_0x0fe7('0x2b')]['id']}})[_0x0fe7('0x1d')](handleEntityNotFound(_0xd46358,null))[_0x0fe7('0x1d')](function(_0x33efcf){if(_0x33efcf){return _0x33efcf['addMessage'](_0x40bd15[_0x0fe7('0x3a')]['ids'],_['omit'](_0x40bd15[_0x0fe7('0x3a')],[_0x0fe7('0x3c'),'id'])||{});}})[_0x0fe7('0x1d')](respondWithResult(_0xd46358,null))[_0x0fe7('0x38')](handleError(_0xd46358,null));};exports[_0x0fe7('0x3d')]=function(_0x45f206,_0x532298){var _0x8623b2={'raw':![],'where':{}};var _0x446380={};var _0x4ec809={'count':0x0,'rows':[]};return db[_0x0fe7('0x2c')][_0x0fe7('0x3e')]({'where':{'id':_0x45f206[_0x0fe7('0x2b')]['id']}})['then'](handleEntityNotFound(_0x532298,null))[_0x0fe7('0x1d')](function(_0x14dbd6){if(_0x14dbd6){_0x446380['model']=_[_0x0fe7('0x2d')](db['WhatsappMessage'][_0x0fe7('0x25')]);_0x446380[_0x0fe7('0x29')]=_['keys'](_0x45f206[_0x0fe7('0x29')]);_0x446380[_0x0fe7('0x2e')]=_[_0x0fe7('0x31')](_0x446380['model'],_0x446380[_0x0fe7('0x29')]);_0x8623b2[_0x0fe7('0x30')]=_['intersection'](_0x446380[_0x0fe7('0x2f')],qs[_0x0fe7('0x32')](_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x32')]));_0x8623b2[_0x0fe7('0x30')]=_0x8623b2['attributes']['length']?_0x8623b2[_0x0fe7('0x30')]:_0x446380[_0x0fe7('0x2f')];if(!_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x3f')]('nolimit')){_0x8623b2[_0x0fe7('0x19')]=qs['limit'](_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x19')]);_0x8623b2[_0x0fe7('0x16')]=qs['offset'](_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x16')]);}_0x8623b2[_0x0fe7('0x40')]=qs[_0x0fe7('0x41')](_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x41')]);_0x8623b2[_0x0fe7('0x42')]=qs[_0x0fe7('0x2e')](_[_0x0fe7('0x43')](_0x45f206[_0x0fe7('0x29')],_0x446380[_0x0fe7('0x2e')]));_0x8623b2[_0x0fe7('0x42')]['WhatsappInteractionId']=_0x14dbd6['id'];if(_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x44')]){_0x8623b2[_0x0fe7('0x42')]=_['merge'](_0x8623b2['where'],{'$or':_[_0x0fe7('0x24')](_0x8623b2[_0x0fe7('0x30')],function(_0xc59220){var _0x35559d={};_0x35559d[_0xc59220]={'$like':'%'+_0x45f206[_0x0fe7('0x29')]['filter']+'%'};return _0x35559d;})});}if(_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x45')]){var _0xdfd569=_0x45f206[_0x0fe7('0x29')][_0x0fe7('0x45')]['split'](',');var _0x1efa90={};_0x1efa90[_0xdfd569[0x0]]={'$gte':moment(_0xdfd569[0x1])[_0x0fe7('0x46')](_0x0fe7('0x47'))};_0x8623b2['where']=_[_0x0fe7('0x48')](_0x8623b2['where'],_0x1efa90);}_0x8623b2=_[_0x0fe7('0x48')]({},_0x8623b2,_0x45f206[_0x0fe7('0x36')]);return db[_0x0fe7('0x49')]['count']({'where':_0x8623b2[_0x0fe7('0x42')]})[_0x0fe7('0x1d')](function(_0xd981cc){_0x4ec809[_0x0fe7('0x18')]=_0xd981cc;if(_0x45f206[_0x0fe7('0x29')]['includeAll']){_0x8623b2[_0x0fe7('0x35')]=[{'all':!![]}];}return db[_0x0fe7('0x49')]['findAll'](_0x8623b2);})[_0x0fe7('0x1d')](function(_0x2ddc91){_0x4ec809['rows']=_0x2ddc91;return _0x4ec809;});}})[_0x0fe7('0x1d')](respondWithFilteredResult(_0x532298,_0x8623b2))[_0x0fe7('0x38')](handleError(_0x532298,null));};exports[_0x0fe7('0x4a')]=function(_0x14aac3,_0x55cd66){return db[_0x0fe7('0x2c')][_0x0fe7('0x37')]({'where':{'id':_0x14aac3['params']['id']}})[_0x0fe7('0x1d')](handleEntityNotFound(_0x55cd66,null))[_0x0fe7('0x1d')](function(_0x112b01){if(_0x112b01){return _0x112b01['setTags'](_0x14aac3[_0x0fe7('0x3a')][_0x0fe7('0x3c')],_[_0x0fe7('0x4b')](_0x14aac3['body'],[_0x0fe7('0x3c'),'id'])||{})[_0x0fe7('0x4c')](function(){return db[_0x0fe7('0x4d')][_0x0fe7('0x28')]({'attributes':['id',_0x0fe7('0x21'),_0x0fe7('0x4e')],'where':{'id':_0x14aac3[_0x0fe7('0x3a')][_0x0fe7('0x3c')]}});})['then'](function(_0x12c9a0){socket[_0x0fe7('0x4f')](_0x0fe7('0x50'),{'id':Number(_0x14aac3[_0x0fe7('0x2b')]['id']),'tags':_0x12c9a0||[]});return{'id':Number(_0x14aac3[_0x0fe7('0x2b')]['id']),'tags':_0x12c9a0||[]};});}})[_0x0fe7('0x1d')](respondWithResult(_0x55cd66,null))[_0x0fe7('0x38')](handleError(_0x55cd66,null));};exports[_0x0fe7('0x51')]=function(_0x584d16,_0xe35056){return db[_0x0fe7('0x2c')][_0x0fe7('0x37')]({'where':{'id':_0x584d16['params']['id']}})[_0x0fe7('0x1d')](handleEntityNotFound(_0xe35056,null))['then'](function(_0x421c92){if(_0x421c92){return _0x421c92['removeTags'](_0x584d16['query']['ids']);}})[_0x0fe7('0x1d')](respondWithStatusCode(_0xe35056,null))[_0x0fe7('0x38')](handleError(_0xe35056,null));};exports[_0x0fe7('0x52')]=function(_0x56f61c,_0x5d4d02){var _0x3a9808=moment()[_0x0fe7('0x53')]()['toString']();var _0x1f17e5=path[_0x0fe7('0x54')](config[_0x0fe7('0x55')],_0x0fe7('0x56'),_0x0fe7('0x57'),_0x0fe7('0x58'));var _0x697102=path[_0x0fe7('0x54')](config[_0x0fe7('0x55')],_0x0fe7('0x56'),_0x0fe7('0x57'),_0x0fe7('0x59'));var _0x27b7c2=path[_0x0fe7('0x54')](_0x1f17e5,_0x3a9808);var _0x279a38=util['format'](_0x0fe7('0x5a'),_0x56f61c[_0x0fe7('0x2b')]['id'],_0x3a9808);var _0x583f48=path[_0x0fe7('0x54')](_0x1f17e5,_0x279a38);var _0x4d0355=[];_0x4d0355[_0x0fe7('0x5b')]({'model':db[_0x0fe7('0x5c')],'as':_0x0fe7('0x5c'),'attributes':['id','fullname'],'raw':!![]});_0x4d0355[_0x0fe7('0x5b')]({'model':db[_0x0fe7('0x5d')],'as':_0x0fe7('0x5e'),'attributes':['id',_0x0fe7('0x5f'),_0x0fe7('0x60')],'raw':!![]});if(_0x56f61c[_0x0fe7('0x29')]['attachments']){_0x4d0355[_0x0fe7('0x5b')]({'model':db[_0x0fe7('0x61')],'as':_0x0fe7('0x61'),'raw':!![]});}var _0x11e00b=[{'model':db[_0x0fe7('0x49')],'as':_0x0fe7('0x62'),'attributes':['id',_0x0fe7('0x3a'),'createdAt',_0x0fe7('0x63'),_0x0fe7('0x64'),_0x0fe7('0x65')],'include':_0x4d0355}];_0x11e00b['push']({'model':db[_0x0fe7('0x66')],'as':_0x0fe7('0x67'),'attributes':['id',_0x0fe7('0x21')]});_0x11e00b[_0x0fe7('0x5b')]({'model':db['User'],'as':_0x0fe7('0x68'),'attributes':['id',_0x0fe7('0x69')]});return db['WhatsappInteraction'][_0x0fe7('0x37')]({'where':{'id':_0x56f61c[_0x0fe7('0x2b')]['id']},'include':_0x11e00b})['then'](handleEntityNotFound(_0x5d4d02,null))[_0x0fe7('0x1d')](function(_0x50b705){if(_0x50b705){var _0xe06ba2=_0x50b705['get']({'plain':!![]});fs[_0x0fe7('0x6a')](_0x27b7c2);var _0x245a16={'channel':'Whatsapp','account':_0xe06ba2[_0x0fe7('0x67')][_0x0fe7('0x21')],'agent':_0xe06ba2['Owner']?_0xe06ba2[_0x0fe7('0x68')][_0x0fe7('0x69')]:_0x0fe7('0x6b'),'createdAt':moment(_0xe06ba2[_0x0fe7('0x6c')])[_0x0fe7('0x46')](_0x0fe7('0x47'))[_0x0fe7('0x6d')](),'closedAt':_0xe06ba2[_0x0fe7('0x6e')]?moment(_0xe06ba2[_0x0fe7('0x6f')])[_0x0fe7('0x46')](_0x0fe7('0x47'))[_0x0fe7('0x6d')]():'','disposition':_0xe06ba2[_0x0fe7('0x70')],'messages':_(_0xe06ba2[_0x0fe7('0x62')])[_0x0fe7('0x44')]({'secret':![]})[_0x0fe7('0x24')](function(_0xbc0500){if(_0xbc0500[_0x0fe7('0x61')]){var _0x490982=path[_0x0fe7('0x54')](_0x697102,_0xbc0500[_0x0fe7('0x61')]['basename']);if(fs['existsSync'](_0x490982)){fs['createReadStream'](_0x490982)['pipe'](fs[_0x0fe7('0x71')](path[_0x0fe7('0x54')](_0x27b7c2,_0xbc0500[_0x0fe7('0x61')]['basename'])));}}return{'date':moment(_0xbc0500[_0x0fe7('0x6c')])[_0x0fe7('0x46')](_0x0fe7('0x47'))[_0x0fe7('0x6d')](),'sender':_0xbc0500['direction']===_0x0fe7('0x72')?_0xbc0500[_0x0fe7('0x5c')]?_0xbc0500[_0x0fe7('0x5c')][_0x0fe7('0x69')]:_0x0fe7('0x73'):_0xbc0500['Contact'][_0x0fe7('0x5f')]+(_0xbc0500[_0x0fe7('0x5e')][_0x0fe7('0x60')]?'\x20'+_0xbc0500['Contact'][_0x0fe7('0x60')]:''),'body':_0xbc0500['Attachment']?_0xbc0500[_0x0fe7('0x61')][_0x0fe7('0x74')]:_0xbc0500['body'],'direction':_0xbc0500[_0x0fe7('0x63')]==='out'?'A':'C','secret':_0xbc0500[_0x0fe7('0x64')],'read':_0xbc0500[_0x0fe7('0x65')],'attachment':_0xbc0500[_0x0fe7('0x61')]};})[_0x0fe7('0x75')]()};return ejs[_0x0fe7('0x76')](path[_0x0fe7('0x54')](config[_0x0fe7('0x55')],_0x0fe7('0x56'),_0x0fe7('0x77'),_0x0fe7('0x78')),{'interaction':_0x245a16})['then'](function(_0xa5f8ce){var _0x53ca89=path[_0x0fe7('0x54')](_0x27b7c2,'transcript-'+_0xe06ba2['id']+'-'+_0x3a9808+_0x0fe7('0x79'));var _0x5e43b9={'path':_0x53ca89,'channel':'Whatsapp','interactionId':_0xe06ba2['id']};return pdf['createPdfFromHTML'](_0xa5f8ce,_0x5e43b9);})[_0x0fe7('0x1d')](function(){return new BPromise(function(_0x4af088,_0x33ff9b){zipdir(_0x27b7c2,{'saveTo':_0x583f48},function(_0x840296,_0x2cda5a){if(_0x840296)return _0x33ff9b(_0x840296);return _0x4af088(_0x2cda5a);});})[_0x0fe7('0x1d')](function(){return new BPromise(function(_0x3f573b,_0x169b6e){rimraf(_0x27b7c2,function(_0x2ec449){if(_0x2ec449)_0x169b6e(_0x2ec449);return _0x3f573b();});});})[_0x0fe7('0x1d')](function(){return _0x5d4d02[_0x0fe7('0x52')](_0x583f48,_0x279a38,function(_0x525e86){if(_0x525e86){console[_0x0fe7('0x7a')]('err',_0x525e86);}else{fs['unlinkSync'](_0x583f48);}});});});}else{return _0x5d4d02[_0x0fe7('0x12')](0xc8);}})[_0x0fe7('0x38')](handleError(_0x5d4d02,null));};