441f95bb3ba8e405bc04136dd96ea99f5381a3c3
[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 _0x91ab=['push','fullname','CmContact','Contact','lastName','Messages','createdAt','secret','WhatsappAccount','User','Owner','get','mkdirSync','Whatsapp','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','Attachment','basename','createReadStream','pipe','direction','System','firstName','out','read','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','rimraf','moment','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','count','set','Content-Range','update','then','destroy','end','error','stack','name','send','index','map','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','whatsapp','query','user','catch','params','model','filters','intersection','attributes','length','includeAll','include','options','find','create','body','describe','addMessage','WhatsappMessage','omit','getMessages','keys','fields','hasOwnProperty','nolimit','limit','order','sort','where','WhatsappInteractionId','filter','merge','$gte','findAll','rows','addTags','ids','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','root','server','files','tmp','join','attachments','format'];(function(_0x3421f8,_0x3e5d70){var _0x2d4e8a=function(_0x404bd5){while(--_0x404bd5){_0x3421f8['push'](_0x3421f8['shift']());}};_0x2d4e8a(++_0x3e5d70);}(_0x91ab,0x194));var _0xb91a=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x91ab[_0xe66cf2];return _0x2d84e7;};'use strict';var rimraf=require(_0xb91a('0x0'));var zipdir=require('zip-dir');var moment=require(_0xb91a('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require(_0xb91a('0x2'));var ejs=require(_0xb91a('0x3'));var fs=require('fs');var _=require(_0xb91a('0x4'));var Redis=require(_0xb91a('0x5'));var interaction=require(_0xb91a('0x6'));var qs=require(_0xb91a('0x7'));var pdf=require('../../components/export/pdf');var logger=require(_0xb91a('0x8'))('api');var config=require(_0xb91a('0x9'));var db=require(_0xb91a('0xa'))['db'];config['redis']=_[_0xb91a('0xb')](config['redis'],{'host':_0xb91a('0xc'),'port':0x18eb});var socket=require(_0xb91a('0xd'))(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0xb91a('0xe')](socket);function respondWithStatusCode(_0x5350fa,_0x36152f){_0x36152f=_0x36152f||0xcc;return function(_0x2e1121){if(_0x2e1121){return _0x5350fa[_0xb91a('0xf')](_0x36152f);}return _0x5350fa[_0xb91a('0x10')](_0x36152f)['end']();};}function respondWithResult(_0x4407b7,_0x137cb2){_0x137cb2=_0x137cb2||0xc8;return function(_0x26214c){if(_0x26214c){return _0x4407b7[_0xb91a('0x10')](_0x137cb2)[_0xb91a('0x11')](_0x26214c);}};}function respondWithFilteredResult(_0x3d2cda,_0x1eb3ea){return function(_0x56e409){if(_0x56e409){var _0x38f46e=typeof _0x1eb3ea[_0xb91a('0x12')]===_0xb91a('0x13')&&typeof _0x1eb3ea['limit']===_0xb91a('0x13');var _0xdcb89c=_0x56e409[_0xb91a('0x14')];var _0x8ac259=_0x38f46e?0x0:_0x1eb3ea[_0xb91a('0x12')];var _0x4aea37=_0x38f46e?_0x56e409[_0xb91a('0x14')]:_0x1eb3ea[_0xb91a('0x12')]+_0x1eb3ea['limit'];var _0x16f943;if(_0x4aea37>=_0xdcb89c){_0x4aea37=_0xdcb89c;_0x16f943=0xc8;}else{_0x16f943=0xce;}_0x3d2cda[_0xb91a('0x10')](_0x16f943);return _0x3d2cda[_0xb91a('0x15')](_0xb91a('0x16'),_0x8ac259+'-'+_0x4aea37+'/'+_0xdcb89c)[_0xb91a('0x11')](_0x56e409);}return null;};}function saveUpdates(_0x447df9){return function(_0x19caaf){if(_0x19caaf){return _0x19caaf[_0xb91a('0x17')](_0x447df9)[_0xb91a('0x18')](function(_0x52c4cb){return _0x52c4cb;});}return null;};}function removeEntity(_0x32c20f){return function(_0x216d73){if(_0x216d73){return _0x216d73[_0xb91a('0x19')]()[_0xb91a('0x18')](function(){_0x32c20f[_0xb91a('0x10')](0xcc)[_0xb91a('0x1a')]();});}};}function handleEntityNotFound(_0x5051f9){return function(_0x3d5d27){if(!_0x3d5d27){_0x5051f9[_0xb91a('0xf')](0x194);}return _0x3d5d27;};}function handleError(_0x418b69,_0x14433a){_0x14433a=_0x14433a||0x1f4;return function(_0x50b920){logger[_0xb91a('0x1b')](_0x50b920[_0xb91a('0x1c')]);if(_0x50b920[_0xb91a('0x1d')]){delete _0x50b920['name'];}_0x418b69[_0xb91a('0x10')](_0x14433a)[_0xb91a('0x1e')](_0x50b920);};}exports[_0xb91a('0x1f')]=function(_0x3f2299,_0x18343e){var _0x5f5059={};var _0x4a53a3=_[_0xb91a('0x20')](db[_0xb91a('0x21')][_0xb91a('0x22')],function(_0x182c75){return{'name':_0x182c75[_0xb91a('0x23')],'type':_0x182c75[_0xb91a('0x24')][_0xb91a('0x25')]};});_0x5f5059=qs[_0xb91a('0x26')](_0x4a53a3,_0x3f2299);return interaction['findAll'](_0xb91a('0x27'),_0x3f2299[_0xb91a('0x28')],_0x3f2299[_0xb91a('0x29')],_0x5f5059,_0x4a53a3)[_0xb91a('0x18')](respondWithFilteredResult(_0x18343e,_0x5f5059))[_0xb91a('0x2a')](handleError(_0x18343e,null));};exports['show']=function(_0x2a453b,_0x39afdf){var _0xa99686={'raw':![],'where':{'id':_0x2a453b[_0xb91a('0x2b')]['id']}},_0x205353={};_0x205353[_0xb91a('0x2c')]=_['keys'](db[_0xb91a('0x21')][_0xb91a('0x22')]);_0x205353[_0xb91a('0x28')]=_['keys'](_0x2a453b['query']);_0x205353[_0xb91a('0x2d')]=_[_0xb91a('0x2e')](_0x205353[_0xb91a('0x2c')],_0x205353[_0xb91a('0x28')]);_0xa99686['attributes']=_['intersection'](_0x205353['model'],qs['fields'](_0x2a453b['query']['fields']));_0xa99686[_0xb91a('0x2f')]=_0xa99686[_0xb91a('0x2f')][_0xb91a('0x30')]?_0xa99686['attributes']:_0x205353[_0xb91a('0x2c')];if(_0x2a453b[_0xb91a('0x28')][_0xb91a('0x31')]){_0xa99686[_0xb91a('0x32')]=[{'all':!![]}];}_0xa99686=_['merge']({},_0xa99686,_0x2a453b[_0xb91a('0x33')]);return db[_0xb91a('0x21')][_0xb91a('0x34')](_0xa99686)[_0xb91a('0x18')](handleEntityNotFound(_0x39afdf,null))['then'](respondWithResult(_0x39afdf,null))['catch'](handleError(_0x39afdf,null));};exports[_0xb91a('0x35')]=function(_0x3faa81,_0x16ae20){return db[_0xb91a('0x21')]['create'](_0x3faa81[_0xb91a('0x36')],{})[_0xb91a('0x18')](respondWithResult(_0x16ae20,0xc9))[_0xb91a('0x2a')](handleError(_0x16ae20,null));};exports[_0xb91a('0x17')]=function(_0x592463,_0x19fa0e){if(_0x592463[_0xb91a('0x36')]['id']){delete _0x592463[_0xb91a('0x36')]['id'];}return db['WhatsappInteraction'][_0xb91a('0x34')]({'where':{'id':_0x592463[_0xb91a('0x2b')]['id']}})[_0xb91a('0x18')](handleEntityNotFound(_0x19fa0e,null))[_0xb91a('0x18')](saveUpdates(_0x592463[_0xb91a('0x36')],null))[_0xb91a('0x18')](respondWithResult(_0x19fa0e,null))[_0xb91a('0x2a')](handleError(_0x19fa0e,null));};exports[_0xb91a('0x19')]=function(_0x1c4736,_0x2b716e){return db['WhatsappInteraction']['find']({'where':{'id':_0x1c4736['params']['id']}})[_0xb91a('0x18')](handleEntityNotFound(_0x2b716e,null))['then'](removeEntity(_0x2b716e,null))[_0xb91a('0x2a')](handleError(_0x2b716e,null));};exports['describe']=function(_0x2e674c,_0x2a3c2f){return db[_0xb91a('0x21')][_0xb91a('0x37')]()[_0xb91a('0x18')](respondWithResult(_0x2a3c2f,null))[_0xb91a('0x2a')](handleError(_0x2a3c2f,null));};exports[_0xb91a('0x38')]=function(_0x53401d,_0x10e075){return db[_0xb91a('0x39')][_0xb91a('0x34')]({'where':{'id':_0x53401d[_0xb91a('0x2b')]['id']}})['then'](handleEntityNotFound(_0x10e075,null))[_0xb91a('0x18')](function(_0x6c241){if(_0x6c241){return _0x6c241['addMessage'](_0x53401d[_0xb91a('0x36')]['ids'],_[_0xb91a('0x3a')](_0x53401d[_0xb91a('0x36')],['ids','id'])||{});}})[_0xb91a('0x18')](respondWithResult(_0x10e075,null))[_0xb91a('0x2a')](handleError(_0x10e075,null));};exports[_0xb91a('0x3b')]=function(_0x488919,_0x50d1e7){var _0x2d0f7f={'raw':![],'where':{}};var _0x57192c={};var _0x2a213b={'count':0x0,'rows':[]};return db['WhatsappInteraction']['findOne']({'where':{'id':_0x488919['params']['id']}})[_0xb91a('0x18')](handleEntityNotFound(_0x50d1e7,null))[_0xb91a('0x18')](function(_0x35c380){if(_0x35c380){_0x57192c[_0xb91a('0x2c')]=_[_0xb91a('0x3c')](db['WhatsappMessage'][_0xb91a('0x22')]);_0x57192c[_0xb91a('0x28')]=_['keys'](_0x488919[_0xb91a('0x28')]);_0x57192c[_0xb91a('0x2d')]=_[_0xb91a('0x2e')](_0x57192c[_0xb91a('0x2c')],_0x57192c[_0xb91a('0x28')]);_0x2d0f7f[_0xb91a('0x2f')]=_['intersection'](_0x57192c[_0xb91a('0x2c')],qs['fields'](_0x488919[_0xb91a('0x28')][_0xb91a('0x3d')]));_0x2d0f7f[_0xb91a('0x2f')]=_0x2d0f7f[_0xb91a('0x2f')][_0xb91a('0x30')]?_0x2d0f7f[_0xb91a('0x2f')]:_0x57192c[_0xb91a('0x2c')];if(!_0x488919[_0xb91a('0x28')][_0xb91a('0x3e')](_0xb91a('0x3f'))){_0x2d0f7f[_0xb91a('0x40')]=qs['limit'](_0x488919[_0xb91a('0x28')]['limit']);_0x2d0f7f[_0xb91a('0x12')]=qs['offset'](_0x488919[_0xb91a('0x28')][_0xb91a('0x12')]);}_0x2d0f7f[_0xb91a('0x41')]=qs[_0xb91a('0x42')](_0x488919[_0xb91a('0x28')][_0xb91a('0x42')]);_0x2d0f7f['where']=qs[_0xb91a('0x2d')](_['pick'](_0x488919[_0xb91a('0x28')],_0x57192c[_0xb91a('0x2d')]));_0x2d0f7f[_0xb91a('0x43')][_0xb91a('0x44')]=_0x35c380['id'];if(_0x488919['query'][_0xb91a('0x45')]){_0x2d0f7f[_0xb91a('0x43')]=_[_0xb91a('0x46')](_0x2d0f7f['where'],{'$or':_[_0xb91a('0x20')](_0x2d0f7f['attributes'],function(_0x3040b0){var _0x511b08={};_0x511b08[_0x3040b0]={'$like':'%'+_0x488919[_0xb91a('0x28')][_0xb91a('0x45')]+'%'};return _0x511b08;})});}if(_0x488919['query']['$gte']){var _0x544c2d=_0x488919[_0xb91a('0x28')][_0xb91a('0x47')]['split'](',');var _0x4c3192={};_0x4c3192[_0x544c2d[0x0]]={'$gte':moment(_0x544c2d[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x2d0f7f['where']=_['merge'](_0x2d0f7f['where'],_0x4c3192);}_0x2d0f7f=_[_0xb91a('0x46')]({},_0x2d0f7f,_0x488919[_0xb91a('0x33')]);return db[_0xb91a('0x39')][_0xb91a('0x14')]({'where':_0x2d0f7f[_0xb91a('0x43')]})[_0xb91a('0x18')](function(_0x1e6edb){_0x2a213b[_0xb91a('0x14')]=_0x1e6edb;if(_0x488919[_0xb91a('0x28')]['includeAll']){_0x2d0f7f['include']=[{'all':!![]}];}return db[_0xb91a('0x39')][_0xb91a('0x48')](_0x2d0f7f);})[_0xb91a('0x18')](function(_0x32f5b1){_0x2a213b[_0xb91a('0x49')]=_0x32f5b1;return _0x2a213b;});}})[_0xb91a('0x18')](respondWithFilteredResult(_0x50d1e7,_0x2d0f7f))[_0xb91a('0x2a')](handleError(_0x50d1e7,null));};exports[_0xb91a('0x4a')]=function(_0x19e3a7,_0x58aedf){return db[_0xb91a('0x21')][_0xb91a('0x34')]({'where':{'id':_0x19e3a7[_0xb91a('0x2b')]['id']}})[_0xb91a('0x18')](handleEntityNotFound(_0x58aedf,null))[_0xb91a('0x18')](function(_0x1dd928){if(_0x1dd928){return _0x1dd928['setTags'](_0x19e3a7[_0xb91a('0x36')][_0xb91a('0x4b')],_[_0xb91a('0x3a')](_0x19e3a7['body'],[_0xb91a('0x4b'),'id'])||{})[_0xb91a('0x4c')](function(){return db[_0xb91a('0x4d')]['findAll']({'attributes':['id',_0xb91a('0x1d'),_0xb91a('0x4e')],'where':{'id':_0x19e3a7[_0xb91a('0x36')]['ids']}});})[_0xb91a('0x18')](function(_0x21eee1){socket[_0xb91a('0x4f')](_0xb91a('0x50'),{'id':Number(_0x19e3a7[_0xb91a('0x2b')]['id']),'tags':_0x21eee1||[]});return{'id':Number(_0x19e3a7[_0xb91a('0x2b')]['id']),'tags':_0x21eee1||[]};});}})['then'](respondWithResult(_0x58aedf,null))['catch'](handleError(_0x58aedf,null));};exports[_0xb91a('0x51')]=function(_0x343c36,_0x538af4){return db[_0xb91a('0x21')]['find']({'where':{'id':_0x343c36[_0xb91a('0x2b')]['id']}})[_0xb91a('0x18')](handleEntityNotFound(_0x538af4,null))[_0xb91a('0x18')](function(_0x598ae6){if(_0x598ae6){return _0x598ae6[_0xb91a('0x51')](_0x343c36[_0xb91a('0x28')]['ids']);}})[_0xb91a('0x18')](respondWithStatusCode(_0x538af4,null))[_0xb91a('0x2a')](handleError(_0x538af4,null));};exports[_0xb91a('0x52')]=function(_0x16537e,_0x150d0c){var _0x1251ec=moment()[_0xb91a('0x53')]()[_0xb91a('0x54')]();var _0x3b12ae=path['join'](config[_0xb91a('0x55')],_0xb91a('0x56'),_0xb91a('0x57'),_0xb91a('0x58'));var _0x119622=path[_0xb91a('0x59')](config[_0xb91a('0x55')],_0xb91a('0x56'),_0xb91a('0x57'),_0xb91a('0x5a'));var _0x36ed91=path[_0xb91a('0x59')](_0x3b12ae,_0x1251ec);var _0x2c2af1=util[_0xb91a('0x5b')]('transcript-%d-%s.zip',_0x16537e['params']['id'],_0x1251ec);var _0x157deb=path[_0xb91a('0x59')](_0x3b12ae,_0x2c2af1);var _0x5b148c=[];_0x5b148c[_0xb91a('0x5c')]({'model':db['User'],'as':'User','attributes':['id',_0xb91a('0x5d')],'raw':!![]});_0x5b148c['push']({'model':db[_0xb91a('0x5e')],'as':_0xb91a('0x5f'),'attributes':['id','firstName',_0xb91a('0x60')],'raw':!![]});if(_0x16537e['query'][_0xb91a('0x5a')]){_0x5b148c[_0xb91a('0x5c')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x525dfd=[{'model':db[_0xb91a('0x39')],'as':_0xb91a('0x61'),'attributes':['id',_0xb91a('0x36'),_0xb91a('0x62'),'direction',_0xb91a('0x63'),'read'],'include':_0x5b148c}];_0x525dfd['push']({'model':db[_0xb91a('0x64')],'as':'Account','attributes':['id',_0xb91a('0x1d')]});_0x525dfd[_0xb91a('0x5c')]({'model':db[_0xb91a('0x65')],'as':_0xb91a('0x66'),'attributes':['id',_0xb91a('0x5d')]});return db[_0xb91a('0x21')][_0xb91a('0x34')]({'where':{'id':_0x16537e[_0xb91a('0x2b')]['id']},'include':_0x525dfd})[_0xb91a('0x18')](handleEntityNotFound(_0x150d0c,null))['then'](function(_0x170159){if(_0x170159){var _0x484939=_0x170159[_0xb91a('0x67')]({'plain':!![]});fs[_0xb91a('0x68')](_0x36ed91);var _0x5ccc3d={'channel':_0xb91a('0x69'),'account':_0x484939['Account'][_0xb91a('0x1d')],'agent':_0x484939['Owner']?_0x484939['Owner'][_0xb91a('0x5d')]:'N.A.','createdAt':moment(_0x484939['createdAt'])[_0xb91a('0x5b')](_0xb91a('0x6a'))['toString'](),'closedAt':_0x484939[_0xb91a('0x6b')]?moment(_0x484939[_0xb91a('0x6c')])[_0xb91a('0x5b')](_0xb91a('0x6a'))['toString']():'','disposition':_0x484939['disposition'],'messages':_(_0x484939[_0xb91a('0x61')])['filter']({'secret':![]})[_0xb91a('0x20')](function(_0x9ac739){if(_0x9ac739[_0xb91a('0x6d')]){var _0x2e2fab=path[_0xb91a('0x59')](_0x119622,_0x9ac739['Attachment'][_0xb91a('0x6e')]);if(fs['existsSync'](_0x2e2fab)){fs[_0xb91a('0x6f')](_0x2e2fab)[_0xb91a('0x70')](fs['createWriteStream'](path[_0xb91a('0x59')](_0x36ed91,_0x9ac739[_0xb91a('0x6d')][_0xb91a('0x6e')])));}}return{'date':moment(_0x9ac739[_0xb91a('0x62')])[_0xb91a('0x5b')](_0xb91a('0x6a'))[_0xb91a('0x54')](),'sender':_0x9ac739[_0xb91a('0x71')]==='out'?_0x9ac739[_0xb91a('0x65')]?_0x9ac739[_0xb91a('0x65')][_0xb91a('0x5d')]:_0xb91a('0x72'):_0x9ac739[_0xb91a('0x5f')][_0xb91a('0x73')]+(_0x9ac739[_0xb91a('0x5f')][_0xb91a('0x60')]?'\x20'+_0x9ac739[_0xb91a('0x5f')][_0xb91a('0x60')]:''),'body':_0x9ac739[_0xb91a('0x6d')]?_0x9ac739[_0xb91a('0x6d')][_0xb91a('0x6e')]:_0x9ac739[_0xb91a('0x36')],'direction':_0x9ac739[_0xb91a('0x71')]===_0xb91a('0x74')?'A':'C','secret':_0x9ac739[_0xb91a('0x63')],'read':_0x9ac739[_0xb91a('0x75')],'attachment':_0x9ac739[_0xb91a('0x6d')]};})['value']()};return ejs[_0xb91a('0x76')](path[_0xb91a('0x59')](config['root'],_0xb91a('0x56'),'views',_0xb91a('0x77')),{'interaction':_0x5ccc3d})[_0xb91a('0x18')](function(_0x1914fd){var _0x46df07=path['join'](_0x36ed91,_0xb91a('0x78')+_0x484939['id']+'-'+_0x1251ec+_0xb91a('0x79'));var _0x4d06a0={'path':_0x46df07,'channel':_0xb91a('0x69'),'interactionId':_0x484939['id']};return pdf[_0xb91a('0x7a')](_0x1914fd,_0x4d06a0);})[_0xb91a('0x18')](function(){return new BPromise(function(_0x1267c4,_0x4650ed){zipdir(_0x36ed91,{'saveTo':_0x157deb},function(_0x4a027c,_0x3f238a){if(_0x4a027c)return _0x4650ed(_0x4a027c);return _0x1267c4(_0x3f238a);});})[_0xb91a('0x18')](function(){return new BPromise(function(_0x23eaca,_0x16e431){rimraf(_0x36ed91,function(_0x153975){if(_0x153975)_0x16e431(_0x153975);return _0x23eaca();});});})[_0xb91a('0x18')](function(){return _0x150d0c[_0xb91a('0x52')](_0x157deb,_0x2c2af1,function(_0x42754f){if(_0x42754f){console[_0xb91a('0x7b')]('err',_0x42754f);}else{fs['unlinkSync'](_0x157deb);}});});});}else{return _0x150d0c[_0xb91a('0xf')](0xc8);}})[_0xb91a('0x2a')](handleError(_0x150d0c,null));};