Built motion from commit e8da49ee.|2.6.33
[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 _0x571e=['rows','setTags','omit','spread','Tag','emit','removeTags','download','unix','toString','root','files','tmp','join','server','attachments','transcript-%d-%s.zip','push','User','fullname','Contact','Attachment','Messages','direction','secret','read','WhatsappAccount','Account','Owner','get','closed','closedAt','format','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','createdAt','out','System','lastName','renderFile','.pdf','Whatsapp','createPdfFromHTML','unlinkSync','rimraf','zip-dir','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/environment','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','update','then','error','name','send','index','map','WhatsappInteraction','fieldName','type','key','getOptions','findAll','whatsapp','query','show','params','keys','rawAttributes','model','attributes','intersection','fields','length','includeAll','include','merge','catch','create','body','find','destroy','describe','WhatsappMessage','ids','getMessages','findOne','filters','hasOwnProperty','nolimit','order','sort','where','pick','WhatsappInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','count'];(function(_0x370ea2,_0x18390e){var _0x183043=function(_0x2c492b){while(--_0x2c492b){_0x370ea2['push'](_0x370ea2['shift']());}};_0x183043(++_0x18390e);}(_0x571e,0x1a4));var _0xe571=function(_0x58e181,_0x47c76c){_0x58e181=_0x58e181-0x0;var _0x34248d=_0x571e[_0x58e181];return _0x34248d;};'use strict';var rimraf=require(_0xe571('0x0'));var zipdir=require(_0xe571('0x1'));var moment=require('moment');var BPromise=require(_0xe571('0x2'));var util=require(_0xe571('0x3'));var path=require(_0xe571('0x4'));var ejs=require(_0xe571('0x5'));var fs=require('fs');var _=require(_0xe571('0x6'));var Redis=require(_0xe571('0x7'));var interaction=require(_0xe571('0x8'));var qs=require('../../components/parsers/qs');var pdf=require(_0xe571('0x9'));var logger=require('../../config/logger')('api');var config=require(_0xe571('0xa'));var db=require('../../mysqldb')['db'];config[_0xe571('0xb')]=_[_0xe571('0xc')](config[_0xe571('0xb')],{'host':_0xe571('0xd'),'port':0x18eb});var socket=require(_0xe571('0xe'))(new Redis(config['redis']));require(_0xe571('0xf'))[_0xe571('0x10')](socket);function respondWithStatusCode(_0x1bae9d,_0x361680){_0x361680=_0x361680||0xcc;return function(_0x41b8e6){if(_0x41b8e6){return _0x1bae9d[_0xe571('0x11')](_0x361680);}return _0x1bae9d[_0xe571('0x12')](_0x361680)[_0xe571('0x13')]();};}function respondWithResult(_0x2b2806,_0x516a0b){_0x516a0b=_0x516a0b||0xc8;return function(_0x25f88c){if(_0x25f88c){return _0x2b2806['status'](_0x516a0b)[_0xe571('0x14')](_0x25f88c);}};}function respondWithFilteredResult(_0x4bd322,_0x45b112){return function(_0x34238f){if(_0x34238f){var _0x43e9bd=typeof _0x45b112[_0xe571('0x15')]===_0xe571('0x16')&&typeof _0x45b112[_0xe571('0x17')]===_0xe571('0x16');var _0x1bcdce=_0x34238f['count'];var _0x54d6d0=_0x43e9bd?0x0:_0x45b112[_0xe571('0x15')];var _0x2f9f10=_0x43e9bd?_0x34238f['count']:_0x45b112['offset']+_0x45b112[_0xe571('0x17')];var _0x223070;if(_0x2f9f10>=_0x1bcdce){_0x2f9f10=_0x1bcdce;_0x223070=0xc8;}else{_0x223070=0xce;}_0x4bd322[_0xe571('0x12')](_0x223070);return _0x4bd322[_0xe571('0x18')](_0xe571('0x19'),_0x54d6d0+'-'+_0x2f9f10+'/'+_0x1bcdce)[_0xe571('0x14')](_0x34238f);}return null;};}function saveUpdates(_0x2e3c4b){return function(_0x4bc6b4){if(_0x4bc6b4){return _0x4bc6b4[_0xe571('0x1a')](_0x2e3c4b)[_0xe571('0x1b')](function(_0x30b0fe){return _0x30b0fe;});}return null;};}function removeEntity(_0x2a713a){return function(_0x48e27e){if(_0x48e27e){return _0x48e27e['destroy']()[_0xe571('0x1b')](function(){_0x2a713a['status'](0xcc)[_0xe571('0x13')]();});}};}function handleEntityNotFound(_0x20100b){return function(_0xe78a5f){if(!_0xe78a5f){_0x20100b[_0xe571('0x11')](0x194);}return _0xe78a5f;};}function handleError(_0x319b78,_0x508e8f){_0x508e8f=_0x508e8f||0x1f4;return function(_0x257fdc){logger[_0xe571('0x1c')](_0x257fdc['stack']);if(_0x257fdc[_0xe571('0x1d')]){delete _0x257fdc['name'];}_0x319b78[_0xe571('0x12')](_0x508e8f)[_0xe571('0x1e')](_0x257fdc);};}exports[_0xe571('0x1f')]=function(_0x24efe9,_0x4341bb){var _0xf59292={};var _0x5f0fcb=_[_0xe571('0x20')](db[_0xe571('0x21')]['rawAttributes'],function(_0x9ae173){return{'name':_0x9ae173[_0xe571('0x22')],'type':_0x9ae173[_0xe571('0x23')][_0xe571('0x24')]};});_0xf59292=qs[_0xe571('0x25')](_0x5f0fcb,_0x24efe9);return interaction[_0xe571('0x26')](_0xe571('0x27'),_0x24efe9[_0xe571('0x28')],_0x24efe9['user'],_0xf59292,_0x5f0fcb)[_0xe571('0x1b')](respondWithFilteredResult(_0x4341bb,_0xf59292))['catch'](handleError(_0x4341bb,null));};exports[_0xe571('0x29')]=function(_0x1e676d,_0x25c4e0){var _0x19f763={'raw':![],'where':{'id':_0x1e676d[_0xe571('0x2a')]['id']}},_0x2b6351={};_0x2b6351['model']=_[_0xe571('0x2b')](db[_0xe571('0x21')][_0xe571('0x2c')]);_0x2b6351['query']=_['keys'](_0x1e676d[_0xe571('0x28')]);_0x2b6351['filters']=_['intersection'](_0x2b6351[_0xe571('0x2d')],_0x2b6351[_0xe571('0x28')]);_0x19f763[_0xe571('0x2e')]=_[_0xe571('0x2f')](_0x2b6351['model'],qs['fields'](_0x1e676d['query'][_0xe571('0x30')]));_0x19f763['attributes']=_0x19f763[_0xe571('0x2e')][_0xe571('0x31')]?_0x19f763[_0xe571('0x2e')]:_0x2b6351[_0xe571('0x2d')];if(_0x1e676d[_0xe571('0x28')][_0xe571('0x32')]){_0x19f763[_0xe571('0x33')]=[{'all':!![]}];}_0x19f763=_[_0xe571('0x34')]({},_0x19f763,_0x1e676d['options']);return db['WhatsappInteraction']['find'](_0x19f763)['then'](handleEntityNotFound(_0x25c4e0,null))[_0xe571('0x1b')](respondWithResult(_0x25c4e0,null))[_0xe571('0x35')](handleError(_0x25c4e0,null));};exports[_0xe571('0x36')]=function(_0x2e19d3,_0x4e5126){return db[_0xe571('0x21')][_0xe571('0x36')](_0x2e19d3[_0xe571('0x37')],{})['then'](respondWithResult(_0x4e5126,0xc9))[_0xe571('0x35')](handleError(_0x4e5126,null));};exports[_0xe571('0x1a')]=function(_0x5d7dce,_0x2559ef){if(_0x5d7dce['body']['id']){delete _0x5d7dce[_0xe571('0x37')]['id'];}return db[_0xe571('0x21')][_0xe571('0x38')]({'where':{'id':_0x5d7dce[_0xe571('0x2a')]['id']}})['then'](handleEntityNotFound(_0x2559ef,null))['then'](saveUpdates(_0x5d7dce[_0xe571('0x37')],null))[_0xe571('0x1b')](respondWithResult(_0x2559ef,null))[_0xe571('0x35')](handleError(_0x2559ef,null));};exports[_0xe571('0x39')]=function(_0x11a101,_0x1fc99e){return db['WhatsappInteraction'][_0xe571('0x38')]({'where':{'id':_0x11a101[_0xe571('0x2a')]['id']}})['then'](handleEntityNotFound(_0x1fc99e,null))[_0xe571('0x1b')](removeEntity(_0x1fc99e,null))[_0xe571('0x35')](handleError(_0x1fc99e,null));};exports['describe']=function(_0x897d5c,_0x201e69){return db[_0xe571('0x21')][_0xe571('0x3a')]()[_0xe571('0x1b')](respondWithResult(_0x201e69,null))[_0xe571('0x35')](handleError(_0x201e69,null));};exports['addMessage']=function(_0x485b1e,_0x4bb2a3){return db[_0xe571('0x3b')]['find']({'where':{'id':_0x485b1e[_0xe571('0x2a')]['id']}})[_0xe571('0x1b')](handleEntityNotFound(_0x4bb2a3,null))['then'](function(_0x27779e){if(_0x27779e){return _0x27779e['addMessage'](_0x485b1e[_0xe571('0x37')][_0xe571('0x3c')],_['omit'](_0x485b1e[_0xe571('0x37')],[_0xe571('0x3c'),'id'])||{});}})['then'](respondWithResult(_0x4bb2a3,null))[_0xe571('0x35')](handleError(_0x4bb2a3,null));};exports[_0xe571('0x3d')]=function(_0x2c0817,_0x45d4b8){var _0x331e95={'raw':![],'where':{}};var _0x4e99e9={};var _0x496662={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xe571('0x3e')]({'where':{'id':_0x2c0817[_0xe571('0x2a')]['id']}})['then'](handleEntityNotFound(_0x45d4b8,null))['then'](function(_0x872a3a){if(_0x872a3a){_0x4e99e9[_0xe571('0x2d')]=_[_0xe571('0x2b')](db['WhatsappMessage'][_0xe571('0x2c')]);_0x4e99e9[_0xe571('0x28')]=_[_0xe571('0x2b')](_0x2c0817[_0xe571('0x28')]);_0x4e99e9[_0xe571('0x3f')]=_[_0xe571('0x2f')](_0x4e99e9[_0xe571('0x2d')],_0x4e99e9[_0xe571('0x28')]);_0x331e95[_0xe571('0x2e')]=_['intersection'](_0x4e99e9[_0xe571('0x2d')],qs[_0xe571('0x30')](_0x2c0817[_0xe571('0x28')][_0xe571('0x30')]));_0x331e95['attributes']=_0x331e95[_0xe571('0x2e')][_0xe571('0x31')]?_0x331e95[_0xe571('0x2e')]:_0x4e99e9[_0xe571('0x2d')];if(!_0x2c0817[_0xe571('0x28')][_0xe571('0x40')](_0xe571('0x41'))){_0x331e95[_0xe571('0x17')]=qs[_0xe571('0x17')](_0x2c0817[_0xe571('0x28')][_0xe571('0x17')]);_0x331e95[_0xe571('0x15')]=qs[_0xe571('0x15')](_0x2c0817[_0xe571('0x28')][_0xe571('0x15')]);}_0x331e95[_0xe571('0x42')]=qs[_0xe571('0x43')](_0x2c0817[_0xe571('0x28')]['sort']);_0x331e95[_0xe571('0x44')]=qs['filters'](_[_0xe571('0x45')](_0x2c0817['query'],_0x4e99e9['filters']));_0x331e95['where'][_0xe571('0x46')]=_0x872a3a['id'];if(_0x2c0817[_0xe571('0x28')][_0xe571('0x47')]){_0x331e95[_0xe571('0x44')]=_[_0xe571('0x34')](_0x331e95[_0xe571('0x44')],{'$or':_[_0xe571('0x20')](_0x331e95[_0xe571('0x2e')],function(_0x5a9f9b){var _0x279f3a={};_0x279f3a[_0x5a9f9b]={'$like':'%'+_0x2c0817[_0xe571('0x28')][_0xe571('0x47')]+'%'};return _0x279f3a;})});}if(_0x2c0817[_0xe571('0x28')][_0xe571('0x48')]){var _0x2c4419=_0x2c0817[_0xe571('0x28')][_0xe571('0x48')][_0xe571('0x49')](',');var _0x4f0791={};_0x4f0791[_0x2c4419[0x0]]={'$gte':moment(_0x2c4419[0x1])['format'](_0xe571('0x4a'))};_0x331e95[_0xe571('0x44')]=_['merge'](_0x331e95[_0xe571('0x44')],_0x4f0791);}_0x331e95=_['merge']({},_0x331e95,_0x2c0817['options']);return db['WhatsappMessage'][_0xe571('0x4b')]({'where':_0x331e95[_0xe571('0x44')]})[_0xe571('0x1b')](function(_0x77f4b4){_0x496662[_0xe571('0x4b')]=_0x77f4b4;if(_0x2c0817['query']['includeAll']){_0x331e95[_0xe571('0x33')]=[{'all':!![]}];}return db[_0xe571('0x3b')]['findAll'](_0x331e95);})[_0xe571('0x1b')](function(_0x25510f){_0x496662[_0xe571('0x4c')]=_0x25510f;return _0x496662;});}})[_0xe571('0x1b')](respondWithFilteredResult(_0x45d4b8,_0x331e95))[_0xe571('0x35')](handleError(_0x45d4b8,null));};exports['addTags']=function(_0xe9bf8c,_0x93bf1e){return db[_0xe571('0x21')][_0xe571('0x38')]({'where':{'id':_0xe9bf8c[_0xe571('0x2a')]['id']}})[_0xe571('0x1b')](handleEntityNotFound(_0x93bf1e,null))['then'](function(_0x4f83d7){if(_0x4f83d7){return _0x4f83d7[_0xe571('0x4d')](_0xe9bf8c[_0xe571('0x37')][_0xe571('0x3c')],_[_0xe571('0x4e')](_0xe9bf8c[_0xe571('0x37')],[_0xe571('0x3c'),'id'])||{})[_0xe571('0x4f')](function(){return db[_0xe571('0x50')][_0xe571('0x26')]({'attributes':['id',_0xe571('0x1d'),'color'],'where':{'id':_0xe9bf8c['body'][_0xe571('0x3c')]}});})['then'](function(_0x507266){socket[_0xe571('0x51')]('whatsappInteractionTags:save',{'id':Number(_0xe9bf8c[_0xe571('0x2a')]['id']),'tags':_0x507266||[]});return{'id':Number(_0xe9bf8c['params']['id']),'tags':_0x507266||[]};});}})[_0xe571('0x1b')](respondWithResult(_0x93bf1e,null))[_0xe571('0x35')](handleError(_0x93bf1e,null));};exports[_0xe571('0x52')]=function(_0x3c3795,_0x43007e){return db[_0xe571('0x21')][_0xe571('0x38')]({'where':{'id':_0x3c3795[_0xe571('0x2a')]['id']}})[_0xe571('0x1b')](handleEntityNotFound(_0x43007e,null))['then'](function(_0x1e5f77){if(_0x1e5f77){return _0x1e5f77[_0xe571('0x52')](_0x3c3795['query'][_0xe571('0x3c')]);}})['then'](respondWithStatusCode(_0x43007e,null))[_0xe571('0x35')](handleError(_0x43007e,null));};exports[_0xe571('0x53')]=function(_0x24597c,_0x375aed){var _0x111ee7=moment()[_0xe571('0x54')]()[_0xe571('0x55')]();var _0x42028d=path['join'](config[_0xe571('0x56')],'server',_0xe571('0x57'),_0xe571('0x58'));var _0x206199=path[_0xe571('0x59')](config[_0xe571('0x56')],_0xe571('0x5a'),_0xe571('0x57'),_0xe571('0x5b'));var _0x49a9a2=path['join'](_0x42028d,_0x111ee7);var _0x249783=util['format'](_0xe571('0x5c'),_0x24597c['params']['id'],_0x111ee7);var _0x2fa9c8=path['join'](_0x42028d,_0x249783);var _0x515a4f=[];_0x515a4f[_0xe571('0x5d')]({'model':db[_0xe571('0x5e')],'as':'User','attributes':['id',_0xe571('0x5f')],'raw':!![]});_0x515a4f[_0xe571('0x5d')]({'model':db['CmContact'],'as':_0xe571('0x60'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x24597c[_0xe571('0x28')]['attachments']){_0x515a4f[_0xe571('0x5d')]({'model':db[_0xe571('0x61')],'as':_0xe571('0x61'),'raw':!![]});}var _0x58bf34=[{'model':db[_0xe571('0x3b')],'as':_0xe571('0x62'),'attributes':['id','body','createdAt',_0xe571('0x63'),_0xe571('0x64'),_0xe571('0x65')],'include':_0x515a4f}];_0x58bf34[_0xe571('0x5d')]({'model':db[_0xe571('0x66')],'as':_0xe571('0x67'),'attributes':['id',_0xe571('0x1d')]});_0x58bf34['push']({'model':db['User'],'as':_0xe571('0x68'),'attributes':['id','fullname']});return db[_0xe571('0x21')][_0xe571('0x38')]({'where':{'id':_0x24597c[_0xe571('0x2a')]['id']},'include':_0x58bf34})[_0xe571('0x1b')](handleEntityNotFound(_0x375aed,null))[_0xe571('0x1b')](function(_0x589068){if(_0x589068){var _0x248e08=_0x589068[_0xe571('0x69')]({'plain':!![]});fs['mkdirSync'](_0x49a9a2);var _0x3c374b={'channel':'Whatsapp','account':_0x248e08[_0xe571('0x67')][_0xe571('0x1d')],'agent':_0x248e08[_0xe571('0x68')]?_0x248e08['Owner'][_0xe571('0x5f')]:'N.A.','createdAt':moment(_0x248e08['createdAt'])['format'](_0xe571('0x4a'))[_0xe571('0x55')](),'closedAt':_0x248e08[_0xe571('0x6a')]?moment(_0x248e08[_0xe571('0x6b')])[_0xe571('0x6c')](_0xe571('0x4a'))[_0xe571('0x55')]():'','disposition':_0x248e08[_0xe571('0x6d')],'messages':_(_0x248e08['Messages'])[_0xe571('0x47')]({'secret':![]})['map'](function(_0x542af6){if(_0x542af6[_0xe571('0x61')]){var _0x41c1a4=path['join'](_0x206199,_0x542af6[_0xe571('0x61')][_0xe571('0x6e')]);if(fs[_0xe571('0x6f')](_0x41c1a4)){fs[_0xe571('0x70')](_0x41c1a4)[_0xe571('0x71')](fs[_0xe571('0x72')](path[_0xe571('0x59')](_0x49a9a2,_0x542af6[_0xe571('0x61')][_0xe571('0x6e')])));}}return{'date':moment(_0x542af6[_0xe571('0x73')])[_0xe571('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe571('0x55')](),'sender':_0x542af6[_0xe571('0x63')]===_0xe571('0x74')?_0x542af6[_0xe571('0x5e')]?_0x542af6['User'][_0xe571('0x5f')]:_0xe571('0x75'):_0x542af6[_0xe571('0x60')]['firstName']+(_0x542af6['Contact']['lastName']?'\x20'+_0x542af6['Contact'][_0xe571('0x76')]:''),'body':_0x542af6[_0xe571('0x61')]?_0x542af6['Attachment']['basename']:_0x542af6['body'],'direction':_0x542af6['direction']===_0xe571('0x74')?'A':'C','secret':_0x542af6[_0xe571('0x64')],'read':_0x542af6['read'],'attachment':_0x542af6[_0xe571('0x61')]};})['value']()};return ejs[_0xe571('0x77')](path[_0xe571('0x59')](config[_0xe571('0x56')],_0xe571('0x5a'),'views','downloadInteraction.ejs'),{'interaction':_0x3c374b})[_0xe571('0x1b')](function(_0x78d7c2){var _0x309b38=path[_0xe571('0x59')](_0x49a9a2,'transcript-'+_0x248e08['id']+'-'+_0x111ee7+_0xe571('0x78'));var _0x1a9ea6={'path':_0x309b38,'channel':_0xe571('0x79'),'interactionId':_0x248e08['id']};return pdf[_0xe571('0x7a')](_0x78d7c2,_0x1a9ea6);})['then'](function(){return new BPromise(function(_0x20c934,_0x153b05){zipdir(_0x49a9a2,{'saveTo':_0x2fa9c8},function(_0x139914,_0x16a81c){if(_0x139914)return _0x153b05(_0x139914);return _0x20c934(_0x16a81c);});})[_0xe571('0x1b')](function(){return new BPromise(function(_0xa53f3,_0x403d71){rimraf(_0x49a9a2,function(_0x2a43cd){if(_0x2a43cd)_0x403d71(_0x2a43cd);return _0xa53f3();});});})['then'](function(){return _0x375aed[_0xe571('0x53')](_0x2fa9c8,_0x249783,function(_0x9826ac){if(_0x9826ac){console['log']('err',_0x9826ac);}else{fs[_0xe571('0x7b')](_0x2fa9c8);}});});});}else{return _0x375aed['sendStatus'](0xc8);}})[_0xe571('0x35')](handleError(_0x375aed,null));};