3061595dfc9044f080502993b37fae05e561f5e6
[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 _0xe66b=['destroy','error','stack','name','send','map','WhatsappInteraction','fieldName','type','key','findAll','whatsapp','query','user','catch','show','params','model','keys','rawAttributes','intersection','attributes','fields','includeAll','include','merge','find','create','body','update','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','filters','pick','WhatsappInteractionId','filter','$gte','split','format','options','rows','addTags','setTags','spread','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','push','CmContact','Contact','firstName','lastName','Attachment','createdAt','secret','WhatsappAccount','Account','Owner','fullname','get','mkdirSync','Whatsapp','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','basename','pipe','createWriteStream','direction','out','System','read','renderFile','views','transcript-','.pdf','log','err','unlinkSync','sendStatus','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','status','end','json','offset','limit','undefined','count','set','Content-Range','then'];(function(_0x2abf59,_0x33a435){var _0x3bc8ce=function(_0x3bd6e8){while(--_0x3bd6e8){_0x2abf59['push'](_0x2abf59['shift']());}};_0x3bc8ce(++_0x33a435);}(_0xe66b,0x65));var _0xbe66=function(_0x25adbd,_0x4f612f){_0x25adbd=_0x25adbd-0x0;var _0x4abc82=_0xe66b[_0x25adbd];return _0x4abc82;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0xbe66('0x0'));var BPromise=require(_0xbe66('0x1'));var util=require(_0xbe66('0x2'));var path=require(_0xbe66('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xbe66('0x4'));var Redis=require(_0xbe66('0x5'));var interaction=require(_0xbe66('0x6'));var qs=require('../../components/parsers/qs');var pdf=require(_0xbe66('0x7'));var logger=require(_0xbe66('0x8'))(_0xbe66('0x9'));var config=require(_0xbe66('0xa'));var db=require(_0xbe66('0xb'))['db'];config[_0xbe66('0xc')]=_['defaults'](config[_0xbe66('0xc')],{'host':_0xbe66('0xd'),'port':0x18eb});var socket=require(_0xbe66('0xe'))(new Redis(config[_0xbe66('0xc')]));require('./whatsappInteraction.socket')[_0xbe66('0xf')](socket);function respondWithStatusCode(_0x5ccf4f,_0x1d971a){_0x1d971a=_0x1d971a||0xcc;return function(_0x53299d){if(_0x53299d){return _0x5ccf4f['sendStatus'](_0x1d971a);}return _0x5ccf4f[_0xbe66('0x10')](_0x1d971a)[_0xbe66('0x11')]();};}function respondWithResult(_0xfad110,_0xc9af3f){_0xc9af3f=_0xc9af3f||0xc8;return function(_0xb8dcd3){if(_0xb8dcd3){return _0xfad110[_0xbe66('0x10')](_0xc9af3f)[_0xbe66('0x12')](_0xb8dcd3);}};}function respondWithFilteredResult(_0x12382c,_0x57a4b7){return function(_0xf5b4d9){if(_0xf5b4d9){var _0x521afc=typeof _0x57a4b7[_0xbe66('0x13')]==='undefined'&&typeof _0x57a4b7[_0xbe66('0x14')]===_0xbe66('0x15');var _0x334ece=_0xf5b4d9[_0xbe66('0x16')];var _0xd35052=_0x521afc?0x0:_0x57a4b7[_0xbe66('0x13')];var _0x5e7f1f=_0x521afc?_0xf5b4d9[_0xbe66('0x16')]:_0x57a4b7[_0xbe66('0x13')]+_0x57a4b7[_0xbe66('0x14')];var _0x4a00e5;if(_0x5e7f1f>=_0x334ece){_0x5e7f1f=_0x334ece;_0x4a00e5=0xc8;}else{_0x4a00e5=0xce;}_0x12382c[_0xbe66('0x10')](_0x4a00e5);return _0x12382c[_0xbe66('0x17')](_0xbe66('0x18'),_0xd35052+'-'+_0x5e7f1f+'/'+_0x334ece)[_0xbe66('0x12')](_0xf5b4d9);}return null;};}function saveUpdates(_0x23bc5a){return function(_0x42f0b1){if(_0x42f0b1){return _0x42f0b1['update'](_0x23bc5a)[_0xbe66('0x19')](function(_0x2f7ffc){return _0x2f7ffc;});}return null;};}function removeEntity(_0x1c407b){return function(_0x97fb0){if(_0x97fb0){return _0x97fb0[_0xbe66('0x1a')]()[_0xbe66('0x19')](function(){_0x1c407b['status'](0xcc)[_0xbe66('0x11')]();});}};}function handleEntityNotFound(_0x57d136){return function(_0x1eae01){if(!_0x1eae01){_0x57d136['sendStatus'](0x194);}return _0x1eae01;};}function handleError(_0x260c9b,_0xc98735){_0xc98735=_0xc98735||0x1f4;return function(_0x16b295){logger[_0xbe66('0x1b')](_0x16b295[_0xbe66('0x1c')]);if(_0x16b295['name']){delete _0x16b295[_0xbe66('0x1d')];}_0x260c9b[_0xbe66('0x10')](_0xc98735)[_0xbe66('0x1e')](_0x16b295);};}exports['index']=function(_0x1a4909,_0x31f039){var _0xbcdeba={};var _0x410ee5=_[_0xbe66('0x1f')](db[_0xbe66('0x20')]['rawAttributes'],function(_0x479e40){return{'name':_0x479e40[_0xbe66('0x21')],'type':_0x479e40[_0xbe66('0x22')][_0xbe66('0x23')]};});_0xbcdeba=qs['getOptions'](_0x410ee5,_0x1a4909);return interaction[_0xbe66('0x24')](_0xbe66('0x25'),_0x1a4909[_0xbe66('0x26')],_0x1a4909[_0xbe66('0x27')],_0xbcdeba,_0x410ee5)[_0xbe66('0x19')](respondWithFilteredResult(_0x31f039,_0xbcdeba))[_0xbe66('0x28')](handleError(_0x31f039,null));};exports[_0xbe66('0x29')]=function(_0x84f39b,_0x35d6db){var _0x3df376={'raw':![],'where':{'id':_0x84f39b[_0xbe66('0x2a')]['id']}},_0x56eac6={};_0x56eac6[_0xbe66('0x2b')]=_[_0xbe66('0x2c')](db[_0xbe66('0x20')][_0xbe66('0x2d')]);_0x56eac6[_0xbe66('0x26')]=_[_0xbe66('0x2c')](_0x84f39b[_0xbe66('0x26')]);_0x56eac6['filters']=_[_0xbe66('0x2e')](_0x56eac6[_0xbe66('0x2b')],_0x56eac6[_0xbe66('0x26')]);_0x3df376[_0xbe66('0x2f')]=_[_0xbe66('0x2e')](_0x56eac6[_0xbe66('0x2b')],qs['fields'](_0x84f39b[_0xbe66('0x26')][_0xbe66('0x30')]));_0x3df376['attributes']=_0x3df376[_0xbe66('0x2f')]['length']?_0x3df376[_0xbe66('0x2f')]:_0x56eac6[_0xbe66('0x2b')];if(_0x84f39b[_0xbe66('0x26')][_0xbe66('0x31')]){_0x3df376[_0xbe66('0x32')]=[{'all':!![]}];}_0x3df376=_[_0xbe66('0x33')]({},_0x3df376,_0x84f39b['options']);return db[_0xbe66('0x20')][_0xbe66('0x34')](_0x3df376)['then'](handleEntityNotFound(_0x35d6db,null))[_0xbe66('0x19')](respondWithResult(_0x35d6db,null))[_0xbe66('0x28')](handleError(_0x35d6db,null));};exports['create']=function(_0x2c0fb0,_0x4e5bb8){return db[_0xbe66('0x20')][_0xbe66('0x35')](_0x2c0fb0[_0xbe66('0x36')],{})[_0xbe66('0x19')](respondWithResult(_0x4e5bb8,0xc9))[_0xbe66('0x28')](handleError(_0x4e5bb8,null));};exports[_0xbe66('0x37')]=function(_0xe0ad70,_0x3504d3){if(_0xe0ad70[_0xbe66('0x36')]['id']){delete _0xe0ad70[_0xbe66('0x36')]['id'];}return db['WhatsappInteraction'][_0xbe66('0x34')]({'where':{'id':_0xe0ad70[_0xbe66('0x2a')]['id']}})['then'](handleEntityNotFound(_0x3504d3,null))['then'](saveUpdates(_0xe0ad70['body'],null))[_0xbe66('0x19')](respondWithResult(_0x3504d3,null))[_0xbe66('0x28')](handleError(_0x3504d3,null));};exports[_0xbe66('0x1a')]=function(_0x5df799,_0x4ebc2d){return db[_0xbe66('0x20')][_0xbe66('0x34')]({'where':{'id':_0x5df799['params']['id']}})['then'](handleEntityNotFound(_0x4ebc2d,null))['then'](removeEntity(_0x4ebc2d,null))[_0xbe66('0x28')](handleError(_0x4ebc2d,null));};exports[_0xbe66('0x38')]=function(_0x22b697,_0x3b4d78){return db[_0xbe66('0x20')][_0xbe66('0x38')]()[_0xbe66('0x19')](respondWithResult(_0x3b4d78,null))['catch'](handleError(_0x3b4d78,null));};exports[_0xbe66('0x39')]=function(_0x345f21,_0x5439a2){return db[_0xbe66('0x3a')][_0xbe66('0x34')]({'where':{'id':_0x345f21['params']['id']}})['then'](handleEntityNotFound(_0x5439a2,null))[_0xbe66('0x19')](function(_0x2d6450){if(_0x2d6450){return _0x2d6450[_0xbe66('0x39')](_0x345f21[_0xbe66('0x36')][_0xbe66('0x3b')],_['omit'](_0x345f21[_0xbe66('0x36')],[_0xbe66('0x3b'),'id'])||{});}})[_0xbe66('0x19')](respondWithResult(_0x5439a2,null))[_0xbe66('0x28')](handleError(_0x5439a2,null));};exports[_0xbe66('0x3c')]=function(_0x105ec2,_0x5497cf){var _0x2e57d9={'raw':![],'where':{}};var _0x3aac4d={};var _0x403db3={'count':0x0,'rows':[]};return db[_0xbe66('0x20')][_0xbe66('0x3d')]({'where':{'id':_0x105ec2['params']['id']}})[_0xbe66('0x19')](handleEntityNotFound(_0x5497cf,null))[_0xbe66('0x19')](function(_0x3df6bb){if(_0x3df6bb){_0x3aac4d['model']=_['keys'](db['WhatsappMessage'][_0xbe66('0x2d')]);_0x3aac4d[_0xbe66('0x26')]=_[_0xbe66('0x2c')](_0x105ec2['query']);_0x3aac4d['filters']=_[_0xbe66('0x2e')](_0x3aac4d[_0xbe66('0x2b')],_0x3aac4d[_0xbe66('0x26')]);_0x2e57d9['attributes']=_[_0xbe66('0x2e')](_0x3aac4d[_0xbe66('0x2b')],qs[_0xbe66('0x30')](_0x105ec2['query']['fields']));_0x2e57d9[_0xbe66('0x2f')]=_0x2e57d9[_0xbe66('0x2f')]['length']?_0x2e57d9[_0xbe66('0x2f')]:_0x3aac4d[_0xbe66('0x2b')];if(!_0x105ec2[_0xbe66('0x26')][_0xbe66('0x3e')](_0xbe66('0x3f'))){_0x2e57d9[_0xbe66('0x14')]=qs[_0xbe66('0x14')](_0x105ec2[_0xbe66('0x26')]['limit']);_0x2e57d9[_0xbe66('0x13')]=qs[_0xbe66('0x13')](_0x105ec2[_0xbe66('0x26')][_0xbe66('0x13')]);}_0x2e57d9[_0xbe66('0x40')]=qs[_0xbe66('0x41')](_0x105ec2[_0xbe66('0x26')][_0xbe66('0x41')]);_0x2e57d9[_0xbe66('0x42')]=qs[_0xbe66('0x43')](_[_0xbe66('0x44')](_0x105ec2[_0xbe66('0x26')],_0x3aac4d[_0xbe66('0x43')]));_0x2e57d9[_0xbe66('0x42')][_0xbe66('0x45')]=_0x3df6bb['id'];if(_0x105ec2[_0xbe66('0x26')]['filter']){_0x2e57d9[_0xbe66('0x42')]=_[_0xbe66('0x33')](_0x2e57d9[_0xbe66('0x42')],{'$or':_['map'](_0x2e57d9[_0xbe66('0x2f')],function(_0x23c0b5){var _0x39ae8e={};_0x39ae8e[_0x23c0b5]={'$like':'%'+_0x105ec2[_0xbe66('0x26')][_0xbe66('0x46')]+'%'};return _0x39ae8e;})});}if(_0x105ec2['query']['$gte']){var _0x2270b0=_0x105ec2[_0xbe66('0x26')][_0xbe66('0x47')][_0xbe66('0x48')](',');var _0x184b3c={};_0x184b3c[_0x2270b0[0x0]]={'$gte':moment(_0x2270b0[0x1])[_0xbe66('0x49')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2e57d9[_0xbe66('0x42')]=_[_0xbe66('0x33')](_0x2e57d9['where'],_0x184b3c);}_0x2e57d9=_[_0xbe66('0x33')]({},_0x2e57d9,_0x105ec2[_0xbe66('0x4a')]);return db[_0xbe66('0x3a')]['count']({'where':_0x2e57d9[_0xbe66('0x42')]})[_0xbe66('0x19')](function(_0x693dda){_0x403db3[_0xbe66('0x16')]=_0x693dda;if(_0x105ec2[_0xbe66('0x26')][_0xbe66('0x31')]){_0x2e57d9[_0xbe66('0x32')]=[{'all':!![]}];}return db[_0xbe66('0x3a')][_0xbe66('0x24')](_0x2e57d9);})[_0xbe66('0x19')](function(_0x31106c){_0x403db3[_0xbe66('0x4b')]=_0x31106c;return _0x403db3;});}})[_0xbe66('0x19')](respondWithFilteredResult(_0x5497cf,_0x2e57d9))[_0xbe66('0x28')](handleError(_0x5497cf,null));};exports[_0xbe66('0x4c')]=function(_0x40abcd,_0x3ab420){return db[_0xbe66('0x20')]['find']({'where':{'id':_0x40abcd[_0xbe66('0x2a')]['id']}})[_0xbe66('0x19')](handleEntityNotFound(_0x3ab420,null))[_0xbe66('0x19')](function(_0x1ae6c3){if(_0x1ae6c3){return _0x1ae6c3[_0xbe66('0x4d')](_0x40abcd['body'][_0xbe66('0x3b')],_['omit'](_0x40abcd[_0xbe66('0x36')],[_0xbe66('0x3b'),'id'])||{})[_0xbe66('0x4e')](function(){return db['Tag'][_0xbe66('0x24')]({'attributes':['id','name',_0xbe66('0x4f')],'where':{'id':_0x40abcd['body'][_0xbe66('0x3b')]}});})[_0xbe66('0x19')](function(_0x326599){socket[_0xbe66('0x50')](_0xbe66('0x51'),{'id':Number(_0x40abcd['params']['id']),'tags':_0x326599||[]});return{'id':Number(_0x40abcd[_0xbe66('0x2a')]['id']),'tags':_0x326599||[]};});}})[_0xbe66('0x19')](respondWithResult(_0x3ab420,null))[_0xbe66('0x28')](handleError(_0x3ab420,null));};exports[_0xbe66('0x52')]=function(_0x268269,_0x2eb4c8){return db[_0xbe66('0x20')][_0xbe66('0x34')]({'where':{'id':_0x268269[_0xbe66('0x2a')]['id']}})[_0xbe66('0x19')](handleEntityNotFound(_0x2eb4c8,null))[_0xbe66('0x19')](function(_0x5c6306){if(_0x5c6306){return _0x5c6306['removeTags'](_0x268269[_0xbe66('0x26')]['ids']);}})[_0xbe66('0x19')](respondWithStatusCode(_0x2eb4c8,null))['catch'](handleError(_0x2eb4c8,null));};exports[_0xbe66('0x53')]=function(_0x24e1c3,_0x125529){var _0x1e59be=moment()[_0xbe66('0x54')]()[_0xbe66('0x55')]();var _0x5a19f5=path[_0xbe66('0x56')](config[_0xbe66('0x57')],_0xbe66('0x58'),_0xbe66('0x59'),_0xbe66('0x5a'));var _0x3a2f4f=path['join'](config[_0xbe66('0x57')],'server','files',_0xbe66('0x5b'));var _0x20acd3=path[_0xbe66('0x56')](_0x5a19f5,_0x1e59be);var _0x543f93=util[_0xbe66('0x49')](_0xbe66('0x5c'),_0x24e1c3['params']['id'],_0x1e59be);var _0x2cd4ef=path['join'](_0x5a19f5,_0x543f93);var _0x2cd8d8=[];_0x2cd8d8['push']({'model':db[_0xbe66('0x5d')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x2cd8d8[_0xbe66('0x5e')]({'model':db[_0xbe66('0x5f')],'as':_0xbe66('0x60'),'attributes':['id',_0xbe66('0x61'),_0xbe66('0x62')],'raw':!![]});if(_0x24e1c3['query'][_0xbe66('0x5b')]){_0x2cd8d8['push']({'model':db[_0xbe66('0x63')],'as':_0xbe66('0x63'),'raw':!![]});}var _0x2407e7=[{'model':db['WhatsappMessage'],'as':'Messages','attributes':['id','body',_0xbe66('0x64'),'direction',_0xbe66('0x65'),'read'],'include':_0x2cd8d8}];_0x2407e7[_0xbe66('0x5e')]({'model':db[_0xbe66('0x66')],'as':_0xbe66('0x67'),'attributes':['id',_0xbe66('0x1d')]});_0x2407e7[_0xbe66('0x5e')]({'model':db['User'],'as':_0xbe66('0x68'),'attributes':['id',_0xbe66('0x69')]});return db[_0xbe66('0x20')]['find']({'where':{'id':_0x24e1c3['params']['id']},'include':_0x2407e7})[_0xbe66('0x19')](handleEntityNotFound(_0x125529,null))[_0xbe66('0x19')](function(_0x25e9a2){if(_0x25e9a2){var _0x33ba2f=_0x25e9a2[_0xbe66('0x6a')]({'plain':!![]});fs[_0xbe66('0x6b')](_0x20acd3);var _0x3796d0={'channel':_0xbe66('0x6c'),'account':_0x33ba2f[_0xbe66('0x67')][_0xbe66('0x1d')],'agent':_0x33ba2f[_0xbe66('0x68')]?_0x33ba2f[_0xbe66('0x68')][_0xbe66('0x69')]:'N.A.','createdAt':moment(_0x33ba2f[_0xbe66('0x64')])[_0xbe66('0x49')](_0xbe66('0x6d'))[_0xbe66('0x55')](),'closedAt':_0x33ba2f[_0xbe66('0x6e')]?moment(_0x33ba2f[_0xbe66('0x6f')])[_0xbe66('0x49')](_0xbe66('0x6d'))[_0xbe66('0x55')]():'','disposition':_0x33ba2f['disposition'],'messages':_(_0x33ba2f['Messages'])[_0xbe66('0x46')]({'secret':![]})['map'](function(_0x4d01a7){if(_0x4d01a7['Attachment']){var _0xffb064=path['join'](_0x3a2f4f,_0x4d01a7['Attachment'][_0xbe66('0x70')]);if(fs['existsSync'](_0xffb064)){fs['createReadStream'](_0xffb064)[_0xbe66('0x71')](fs[_0xbe66('0x72')](path[_0xbe66('0x56')](_0x20acd3,_0x4d01a7[_0xbe66('0x63')][_0xbe66('0x70')])));}}return{'date':moment(_0x4d01a7[_0xbe66('0x64')])[_0xbe66('0x49')](_0xbe66('0x6d'))[_0xbe66('0x55')](),'sender':_0x4d01a7[_0xbe66('0x73')]===_0xbe66('0x74')?_0x4d01a7[_0xbe66('0x5d')]?_0x4d01a7[_0xbe66('0x5d')]['fullname']:_0xbe66('0x75'):_0x4d01a7['Contact'][_0xbe66('0x61')]+(_0x4d01a7[_0xbe66('0x60')]['lastName']?'\x20'+_0x4d01a7[_0xbe66('0x60')][_0xbe66('0x62')]:''),'body':_0x4d01a7[_0xbe66('0x63')]?_0x4d01a7[_0xbe66('0x63')][_0xbe66('0x70')]:_0x4d01a7[_0xbe66('0x36')],'direction':_0x4d01a7[_0xbe66('0x73')]===_0xbe66('0x74')?'A':'C','secret':_0x4d01a7['secret'],'read':_0x4d01a7[_0xbe66('0x76')],'attachment':_0x4d01a7[_0xbe66('0x63')]};})['value']()};return ejs[_0xbe66('0x77')](path[_0xbe66('0x56')](config[_0xbe66('0x57')],_0xbe66('0x58'),_0xbe66('0x78'),'downloadInteraction.ejs'),{'interaction':_0x3796d0})[_0xbe66('0x19')](function(_0x5b8698){var _0x5aa3df=path[_0xbe66('0x56')](_0x20acd3,_0xbe66('0x79')+_0x33ba2f['id']+'-'+_0x1e59be+_0xbe66('0x7a'));var _0x45957c={'path':_0x5aa3df,'channel':_0xbe66('0x6c'),'interactionId':_0x33ba2f['id']};return pdf['createPdfFromHTML'](_0x5b8698,_0x45957c);})[_0xbe66('0x19')](function(){return new BPromise(function(_0x51a6ec,_0x170558){zipdir(_0x20acd3,{'saveTo':_0x2cd4ef},function(_0x5e96bb,_0x485cc9){if(_0x5e96bb)return _0x170558(_0x5e96bb);return _0x51a6ec(_0x485cc9);});})[_0xbe66('0x19')](function(){return new BPromise(function(_0x70e34e,_0x2600ce){rimraf(_0x20acd3,function(_0x11d93e){if(_0x11d93e)_0x2600ce(_0x11d93e);return _0x70e34e();});});})['then'](function(){return _0x125529[_0xbe66('0x53')](_0x2cd4ef,_0x543f93,function(_0x523aad){if(_0x523aad){console[_0xbe66('0x7b')](_0xbe66('0x7c'),_0x523aad);}else{fs[_0xbe66('0x7d')](_0x2cd4ef);}});});});}else{return _0x125529[_0xbe66('0x7e')](0xc8);}})[_0xbe66('0x28')](handleError(_0x125529,null));};