Built motion from commit e1760111.|2.6.18
[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 _0x9918=['describe','WhatsappMessage','addMessage','ids','fields','nolimit','sort','where','WhatsappInteractionId','filter','$gte','split','format','includeAll','addTags','omit','spread','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','join','root','server','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Account','Owner','mkdirSync','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','basename','createReadStream','pipe','createWriteStream','out','System','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','bluebird','util','path','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','update','then','destroy','end','error','name','send','index','map','WhatsappInteraction','rawAttributes','type','key','getOptions','findAll','whatsapp','query','user','catch','model','keys','filters','intersection','attributes','length','include','merge','options','find','create','body','params'];(function(_0x199a6d,_0x2b1eba){var _0x11cafb=function(_0x46fd00){while(--_0x46fd00){_0x199a6d['push'](_0x199a6d['shift']());}};_0x11cafb(++_0x2b1eba);}(_0x9918,0x133));var _0x8991=function(_0x7aeee4,_0x4c888c){_0x7aeee4=_0x7aeee4-0x0;var _0xcebaeb=_0x9918[_0x7aeee4];return _0xcebaeb;};'use strict';var rimraf=require(_0x8991('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x8991('0x1'));var util=require(_0x8991('0x2'));var path=require(_0x8991('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require(_0x8991('0x4'));var interaction=require(_0x8991('0x5'));var qs=require(_0x8991('0x6'));var pdf=require(_0x8991('0x7'));var logger=require(_0x8991('0x8'))('api');var config=require(_0x8991('0x9'));var db=require(_0x8991('0xa'))['db'];config[_0x8991('0xb')]=_[_0x8991('0xc')](config[_0x8991('0xb')],{'host':_0x8991('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8991('0xe'))['register'](socket);function respondWithStatusCode(_0x5f2b6b,_0x3f4167){_0x3f4167=_0x3f4167||0xcc;return function(_0x2cfa3d){if(_0x2cfa3d){return _0x5f2b6b[_0x8991('0xf')](_0x3f4167);}return _0x5f2b6b['status'](_0x3f4167)['end']();};}function respondWithResult(_0x2b7c31,_0xa4bb04){_0xa4bb04=_0xa4bb04||0xc8;return function(_0x5d7f11){if(_0x5d7f11){return _0x2b7c31[_0x8991('0x10')](_0xa4bb04)[_0x8991('0x11')](_0x5d7f11);}};}function respondWithFilteredResult(_0x460041,_0x30bad9){return function(_0x5eaf04){if(_0x5eaf04){var _0x52b320=typeof _0x30bad9['offset']===_0x8991('0x12')&&typeof _0x30bad9[_0x8991('0x13')]===_0x8991('0x12');var _0x9296e=_0x5eaf04['count'];var _0x2dae81=_0x52b320?0x0:_0x30bad9[_0x8991('0x14')];var _0xaa4a76=_0x52b320?_0x5eaf04[_0x8991('0x15')]:_0x30bad9[_0x8991('0x14')]+_0x30bad9[_0x8991('0x13')];var _0x20ff6e;if(_0xaa4a76>=_0x9296e){_0xaa4a76=_0x9296e;_0x20ff6e=0xc8;}else{_0x20ff6e=0xce;}_0x460041[_0x8991('0x10')](_0x20ff6e);return _0x460041[_0x8991('0x16')](_0x8991('0x17'),_0x2dae81+'-'+_0xaa4a76+'/'+_0x9296e)[_0x8991('0x11')](_0x5eaf04);}return null;};}function saveUpdates(_0x2c1869){return function(_0x5c447b){if(_0x5c447b){return _0x5c447b[_0x8991('0x18')](_0x2c1869)[_0x8991('0x19')](function(_0xa85e06){return _0xa85e06;});}return null;};}function removeEntity(_0x403b8a){return function(_0x49792d){if(_0x49792d){return _0x49792d[_0x8991('0x1a')]()['then'](function(){_0x403b8a[_0x8991('0x10')](0xcc)[_0x8991('0x1b')]();});}};}function handleEntityNotFound(_0x12d783){return function(_0x532372){if(!_0x532372){_0x12d783['sendStatus'](0x194);}return _0x532372;};}function handleError(_0x877dea,_0x967e85){_0x967e85=_0x967e85||0x1f4;return function(_0x11104f){logger[_0x8991('0x1c')](_0x11104f['stack']);if(_0x11104f[_0x8991('0x1d')]){delete _0x11104f[_0x8991('0x1d')];}_0x877dea['status'](_0x967e85)[_0x8991('0x1e')](_0x11104f);};}exports[_0x8991('0x1f')]=function(_0x4b5238,_0x1b7bac){var _0x57e6cd={};var _0x33b322=_[_0x8991('0x20')](db[_0x8991('0x21')][_0x8991('0x22')],function(_0x305bdb){return{'name':_0x305bdb['fieldName'],'type':_0x305bdb[_0x8991('0x23')][_0x8991('0x24')]};});_0x57e6cd=qs[_0x8991('0x25')](_0x33b322,_0x4b5238);return interaction[_0x8991('0x26')](_0x8991('0x27'),_0x4b5238[_0x8991('0x28')],_0x4b5238[_0x8991('0x29')],_0x57e6cd,_0x33b322)['then'](respondWithFilteredResult(_0x1b7bac,_0x57e6cd))[_0x8991('0x2a')](handleError(_0x1b7bac,null));};exports['show']=function(_0x49c478,_0x395930){var _0x284795={'raw':![],'where':{'id':_0x49c478['params']['id']}},_0x30623d={};_0x30623d[_0x8991('0x2b')]=_[_0x8991('0x2c')](db[_0x8991('0x21')][_0x8991('0x22')]);_0x30623d[_0x8991('0x28')]=_[_0x8991('0x2c')](_0x49c478[_0x8991('0x28')]);_0x30623d[_0x8991('0x2d')]=_[_0x8991('0x2e')](_0x30623d['model'],_0x30623d[_0x8991('0x28')]);_0x284795[_0x8991('0x2f')]=_[_0x8991('0x2e')](_0x30623d['model'],qs['fields'](_0x49c478['query']['fields']));_0x284795[_0x8991('0x2f')]=_0x284795['attributes'][_0x8991('0x30')]?_0x284795['attributes']:_0x30623d[_0x8991('0x2b')];if(_0x49c478['query']['includeAll']){_0x284795[_0x8991('0x31')]=[{'all':!![]}];}_0x284795=_[_0x8991('0x32')]({},_0x284795,_0x49c478[_0x8991('0x33')]);return db[_0x8991('0x21')][_0x8991('0x34')](_0x284795)['then'](handleEntityNotFound(_0x395930,null))['then'](respondWithResult(_0x395930,null))[_0x8991('0x2a')](handleError(_0x395930,null));};exports[_0x8991('0x35')]=function(_0x3ac49d,_0x932166){return db[_0x8991('0x21')][_0x8991('0x35')](_0x3ac49d['body'],{})[_0x8991('0x19')](respondWithResult(_0x932166,0xc9))[_0x8991('0x2a')](handleError(_0x932166,null));};exports['update']=function(_0x378fce,_0x3de177){if(_0x378fce[_0x8991('0x36')]['id']){delete _0x378fce[_0x8991('0x36')]['id'];}return db[_0x8991('0x21')][_0x8991('0x34')]({'where':{'id':_0x378fce[_0x8991('0x37')]['id']}})[_0x8991('0x19')](handleEntityNotFound(_0x3de177,null))['then'](saveUpdates(_0x378fce[_0x8991('0x36')],null))['then'](respondWithResult(_0x3de177,null))['catch'](handleError(_0x3de177,null));};exports[_0x8991('0x1a')]=function(_0x3f89b2,_0x52e821){return db[_0x8991('0x21')][_0x8991('0x34')]({'where':{'id':_0x3f89b2[_0x8991('0x37')]['id']}})[_0x8991('0x19')](handleEntityNotFound(_0x52e821,null))['then'](removeEntity(_0x52e821,null))[_0x8991('0x2a')](handleError(_0x52e821,null));};exports[_0x8991('0x38')]=function(_0x25869a,_0x3f0948){return db[_0x8991('0x21')][_0x8991('0x38')]()[_0x8991('0x19')](respondWithResult(_0x3f0948,null))[_0x8991('0x2a')](handleError(_0x3f0948,null));};exports['addMessage']=function(_0x4312f9,_0x167f94){return db[_0x8991('0x39')][_0x8991('0x34')]({'where':{'id':_0x4312f9[_0x8991('0x37')]['id']}})['then'](handleEntityNotFound(_0x167f94,null))['then'](function(_0xc5bef6){if(_0xc5bef6){return _0xc5bef6[_0x8991('0x3a')](_0x4312f9[_0x8991('0x36')]['ids'],_['omit'](_0x4312f9[_0x8991('0x36')],[_0x8991('0x3b'),'id'])||{});}})[_0x8991('0x19')](respondWithResult(_0x167f94,null))[_0x8991('0x2a')](handleError(_0x167f94,null));};exports['getMessages']=function(_0x120341,_0x154343){var _0x48a9a2={'raw':![],'where':{}};var _0x5c009d={};var _0x5956cd={'count':0x0,'rows':[]};return db['WhatsappInteraction']['findOne']({'where':{'id':_0x120341[_0x8991('0x37')]['id']}})[_0x8991('0x19')](handleEntityNotFound(_0x154343,null))[_0x8991('0x19')](function(_0x4f9f00){if(_0x4f9f00){_0x5c009d[_0x8991('0x2b')]=_[_0x8991('0x2c')](db[_0x8991('0x39')][_0x8991('0x22')]);_0x5c009d['query']=_[_0x8991('0x2c')](_0x120341[_0x8991('0x28')]);_0x5c009d[_0x8991('0x2d')]=_['intersection'](_0x5c009d[_0x8991('0x2b')],_0x5c009d[_0x8991('0x28')]);_0x48a9a2['attributes']=_[_0x8991('0x2e')](_0x5c009d['model'],qs[_0x8991('0x3c')](_0x120341[_0x8991('0x28')][_0x8991('0x3c')]));_0x48a9a2[_0x8991('0x2f')]=_0x48a9a2['attributes'][_0x8991('0x30')]?_0x48a9a2[_0x8991('0x2f')]:_0x5c009d['model'];if(!_0x120341[_0x8991('0x28')]['hasOwnProperty'](_0x8991('0x3d'))){_0x48a9a2['limit']=qs['limit'](_0x120341['query'][_0x8991('0x13')]);_0x48a9a2['offset']=qs[_0x8991('0x14')](_0x120341['query'][_0x8991('0x14')]);}_0x48a9a2['order']=qs[_0x8991('0x3e')](_0x120341['query'][_0x8991('0x3e')]);_0x48a9a2['where']=qs['filters'](_['pick'](_0x120341[_0x8991('0x28')],_0x5c009d[_0x8991('0x2d')]));_0x48a9a2[_0x8991('0x3f')][_0x8991('0x40')]=_0x4f9f00['id'];if(_0x120341[_0x8991('0x28')][_0x8991('0x41')]){_0x48a9a2[_0x8991('0x3f')]=_[_0x8991('0x32')](_0x48a9a2['where'],{'$or':_[_0x8991('0x20')](_0x48a9a2[_0x8991('0x2f')],function(_0x5a8d4f){var _0x5b2f47={};_0x5b2f47[_0x5a8d4f]={'$like':'%'+_0x120341['query'][_0x8991('0x41')]+'%'};return _0x5b2f47;})});}if(_0x120341[_0x8991('0x28')][_0x8991('0x42')]){var _0x5c1ac9=_0x120341[_0x8991('0x28')][_0x8991('0x42')][_0x8991('0x43')](',');var _0x2c6d1f={};_0x2c6d1f[_0x5c1ac9[0x0]]={'$gte':moment(_0x5c1ac9[0x1])[_0x8991('0x44')]('YYYY-MM-DD\x20HH:mm:ss')};_0x48a9a2[_0x8991('0x3f')]=_['merge'](_0x48a9a2[_0x8991('0x3f')],_0x2c6d1f);}_0x48a9a2=_[_0x8991('0x32')]({},_0x48a9a2,_0x120341['options']);return db[_0x8991('0x39')][_0x8991('0x15')]({'where':_0x48a9a2[_0x8991('0x3f')]})['then'](function(_0x1e6981){_0x5956cd[_0x8991('0x15')]=_0x1e6981;if(_0x120341[_0x8991('0x28')][_0x8991('0x45')]){_0x48a9a2['include']=[{'all':!![]}];}return db['WhatsappMessage'][_0x8991('0x26')](_0x48a9a2);})[_0x8991('0x19')](function(_0x586af4){_0x5956cd['rows']=_0x586af4;return _0x5956cd;});}})[_0x8991('0x19')](respondWithFilteredResult(_0x154343,_0x48a9a2))[_0x8991('0x2a')](handleError(_0x154343,null));};exports[_0x8991('0x46')]=function(_0x85019f,_0x20911b){return db[_0x8991('0x21')]['find']({'where':{'id':_0x85019f['params']['id']}})['then'](handleEntityNotFound(_0x20911b,null))[_0x8991('0x19')](function(_0xb71900){if(_0xb71900){return _0xb71900['setTags'](_0x85019f[_0x8991('0x36')][_0x8991('0x3b')],_[_0x8991('0x47')](_0x85019f['body'],[_0x8991('0x3b'),'id'])||{})[_0x8991('0x48')](function(){return db['Tag'][_0x8991('0x26')]({'attributes':['id','name',_0x8991('0x49')],'where':{'id':_0x85019f[_0x8991('0x36')]['ids']}});})['then'](function(_0x945a0e){socket[_0x8991('0x4a')](_0x8991('0x4b'),{'id':Number(_0x85019f[_0x8991('0x37')]['id']),'tags':_0x945a0e||[]});return{'id':Number(_0x85019f[_0x8991('0x37')]['id']),'tags':_0x945a0e||[]};});}})[_0x8991('0x19')](respondWithResult(_0x20911b,null))['catch'](handleError(_0x20911b,null));};exports[_0x8991('0x4c')]=function(_0x4cdc4b,_0x17d928){return db[_0x8991('0x21')][_0x8991('0x34')]({'where':{'id':_0x4cdc4b[_0x8991('0x37')]['id']}})['then'](handleEntityNotFound(_0x17d928,null))[_0x8991('0x19')](function(_0x597dbd){if(_0x597dbd){return _0x597dbd[_0x8991('0x4c')](_0x4cdc4b[_0x8991('0x28')][_0x8991('0x3b')]);}})[_0x8991('0x19')](respondWithStatusCode(_0x17d928,null))[_0x8991('0x2a')](handleError(_0x17d928,null));};exports[_0x8991('0x4d')]=function(_0x45f304,_0x365174){var _0x46599a=moment()[_0x8991('0x4e')]()[_0x8991('0x4f')]();var _0x1f07f2=path[_0x8991('0x50')](config[_0x8991('0x51')],'server','files','tmp');var _0x3c5e6f=path['join'](config[_0x8991('0x51')],_0x8991('0x52'),'files',_0x8991('0x53'));var _0x3d60a9=path[_0x8991('0x50')](_0x1f07f2,_0x46599a);var _0xdd9a58=util['format'](_0x8991('0x54'),_0x45f304[_0x8991('0x37')]['id'],_0x46599a);var _0x21a87f=path[_0x8991('0x50')](_0x1f07f2,_0xdd9a58);var _0x483178=[];_0x483178[_0x8991('0x55')]({'model':db[_0x8991('0x56')],'as':_0x8991('0x56'),'attributes':['id',_0x8991('0x57')],'raw':!![]});_0x483178[_0x8991('0x55')]({'model':db[_0x8991('0x58')],'as':_0x8991('0x59'),'attributes':['id',_0x8991('0x5a'),_0x8991('0x5b')],'raw':!![]});if(_0x45f304[_0x8991('0x28')][_0x8991('0x53')]){_0x483178['push']({'model':db[_0x8991('0x5c')],'as':_0x8991('0x5c'),'raw':!![]});}var _0x1b1b65=[{'model':db[_0x8991('0x39')],'as':_0x8991('0x5d'),'attributes':['id',_0x8991('0x36'),_0x8991('0x5e'),_0x8991('0x5f'),_0x8991('0x60'),'read'],'include':_0x483178}];_0x1b1b65[_0x8991('0x55')]({'model':db[_0x8991('0x61')],'as':_0x8991('0x62'),'attributes':['id',_0x8991('0x1d')]});_0x1b1b65[_0x8991('0x55')]({'model':db[_0x8991('0x56')],'as':_0x8991('0x63'),'attributes':['id',_0x8991('0x57')]});return db[_0x8991('0x21')][_0x8991('0x34')]({'where':{'id':_0x45f304['params']['id']},'include':_0x1b1b65})[_0x8991('0x19')](handleEntityNotFound(_0x365174,null))['then'](function(_0x41f596){if(_0x41f596){var _0x3409f2=_0x41f596['get']({'plain':!![]});fs[_0x8991('0x64')](_0x3d60a9);var _0x197377={'channel':'Whatsapp','account':_0x3409f2[_0x8991('0x62')][_0x8991('0x1d')],'agent':_0x3409f2[_0x8991('0x63')]?_0x3409f2[_0x8991('0x63')][_0x8991('0x57')]:_0x8991('0x65'),'createdAt':moment(_0x3409f2['createdAt'])['format'](_0x8991('0x66'))[_0x8991('0x4f')](),'closedAt':_0x3409f2[_0x8991('0x67')]?moment(_0x3409f2[_0x8991('0x68')])[_0x8991('0x44')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x3409f2[_0x8991('0x69')],'messages':_(_0x3409f2[_0x8991('0x5d')])[_0x8991('0x41')]({'secret':![]})[_0x8991('0x20')](function(_0x52d3be){if(_0x52d3be[_0x8991('0x5c')]){var _0x2a9517=path[_0x8991('0x50')](_0x3c5e6f,_0x52d3be[_0x8991('0x5c')][_0x8991('0x6a')]);if(fs['existsSync'](_0x2a9517)){fs[_0x8991('0x6b')](_0x2a9517)[_0x8991('0x6c')](fs[_0x8991('0x6d')](path['join'](_0x3d60a9,_0x52d3be['Attachment'][_0x8991('0x6a')])));}}return{'date':moment(_0x52d3be[_0x8991('0x5e')])['format'](_0x8991('0x66'))[_0x8991('0x4f')](),'sender':_0x52d3be[_0x8991('0x5f')]===_0x8991('0x6e')?_0x52d3be[_0x8991('0x56')]?_0x52d3be[_0x8991('0x56')][_0x8991('0x57')]:_0x8991('0x6f'):_0x52d3be[_0x8991('0x59')][_0x8991('0x5a')]+(_0x52d3be[_0x8991('0x59')][_0x8991('0x5b')]?'\x20'+_0x52d3be[_0x8991('0x59')][_0x8991('0x5b')]:''),'body':_0x52d3be[_0x8991('0x5c')]?_0x52d3be[_0x8991('0x5c')]['basename']:_0x52d3be[_0x8991('0x36')],'direction':_0x52d3be['direction']===_0x8991('0x6e')?'A':'C','secret':_0x52d3be[_0x8991('0x60')],'read':_0x52d3be['read'],'attachment':_0x52d3be[_0x8991('0x5c')]};})[_0x8991('0x70')]()};return ejs[_0x8991('0x71')](path['join'](config['root'],'server',_0x8991('0x72'),_0x8991('0x73')),{'interaction':_0x197377})['then'](function(_0x456b50){var _0x5c35bb=path[_0x8991('0x50')](_0x3d60a9,_0x8991('0x74')+_0x3409f2['id']+'-'+_0x46599a+_0x8991('0x75'));var _0x579202={'path':_0x5c35bb,'channel':'Whatsapp','interactionId':_0x3409f2['id']};return pdf[_0x8991('0x76')](_0x456b50,_0x579202);})[_0x8991('0x19')](function(){return new BPromise(function(_0x69869a,_0x1e832b){zipdir(_0x3d60a9,{'saveTo':_0x21a87f},function(_0x31283c,_0xc81fa1){if(_0x31283c)return _0x1e832b(_0x31283c);return _0x69869a(_0xc81fa1);});})['then'](function(){return new BPromise(function(_0x18feac,_0x37b770){rimraf(_0x3d60a9,function(_0x4f1f80){if(_0x4f1f80)_0x37b770(_0x4f1f80);return _0x18feac();});});})[_0x8991('0x19')](function(){return _0x365174['download'](_0x21a87f,_0xdd9a58,function(_0x30dfb4){if(_0x30dfb4){console['log'](_0x8991('0x77'),_0x30dfb4);}else{fs[_0x8991('0x78')](_0x21a87f);}});});});}else{return _0x365174[_0x8991('0xf')](0xc8);}})[_0x8991('0x2a')](handleError(_0x365174,null));};