Built motion from commit da617fac.|2.6.6
[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 _0xf7f5=['../../components/export/pdf','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','destroy','then','end','error','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','catch','params','model','keys','WhatsappInteraction','filters','intersection','attributes','fields','length','merge','options','create','body','update','find','describe','addMessage','WhatsappMessage','omit','ids','getMessages','findOne','hasOwnProperty','nolimit','sort','where','pick','WhatsappInteractionId','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','rows','setTags','spread','Tag','emit','whatsappInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','push','User','fullname','CmContact','Contact','firstName','attachments','Attachment','Messages','createdAt','direction','secret','Account','get','Whatsapp','Owner','format','closed','closedAt','disposition','existsSync','createWriteStream','basename','out','System','lastName','value','renderFile','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs'];(function(_0x4b3637,_0x3657ea){var _0x2fcb89=function(_0x4ed7c3){while(--_0x4ed7c3){_0x4b3637['push'](_0x4b3637['shift']());}};_0x2fcb89(++_0x3657ea);}(_0xf7f5,0xf2));var _0x5f7f=function(_0x3362b8,_0x590609){_0x3362b8=_0x3362b8-0x0;var _0x5e5e03=_0xf7f5[_0x3362b8];return _0x5e5e03;};'use strict';var rimraf=require(_0x5f7f('0x0'));var zipdir=require(_0x5f7f('0x1'));var moment=require(_0x5f7f('0x2'));var BPromise=require(_0x5f7f('0x3'));var util=require(_0x5f7f('0x4'));var path=require(_0x5f7f('0x5'));var ejs=require(_0x5f7f('0x6'));var fs=require('fs');var _=require(_0x5f7f('0x7'));var Redis=require('ioredis');var interaction=require(_0x5f7f('0x8'));var qs=require(_0x5f7f('0x9'));var pdf=require(_0x5f7f('0xa'));var logger=require('../../config/logger')(_0x5f7f('0xb'));var config=require(_0x5f7f('0xc'));var db=require(_0x5f7f('0xd'))['db'];config['redis']=_[_0x5f7f('0xe')](config[_0x5f7f('0xf')],{'host':_0x5f7f('0x10'),'port':0x18eb});var socket=require(_0x5f7f('0x11'))(new Redis(config[_0x5f7f('0xf')]));require(_0x5f7f('0x12'))[_0x5f7f('0x13')](socket);function respondWithStatusCode(_0xc48511,_0x20a85b){_0x20a85b=_0x20a85b||0xcc;return function(_0x424331){if(_0x424331){return _0xc48511[_0x5f7f('0x14')](_0x20a85b);}return _0xc48511[_0x5f7f('0x15')](_0x20a85b)['end']();};}function respondWithResult(_0xf8882f,_0x1ec5ec){_0x1ec5ec=_0x1ec5ec||0xc8;return function(_0x361f29){if(_0x361f29){return _0xf8882f[_0x5f7f('0x15')](_0x1ec5ec)[_0x5f7f('0x16')](_0x361f29);}};}function respondWithFilteredResult(_0xfa5de1,_0x437f1d){return function(_0x493bf3){if(_0x493bf3){var _0x392526=typeof _0x437f1d[_0x5f7f('0x17')]===_0x5f7f('0x18')&&typeof _0x437f1d[_0x5f7f('0x19')]==='undefined';var _0x2aa30e=_0x493bf3[_0x5f7f('0x1a')];var _0x3e83f1=_0x392526?0x0:_0x437f1d[_0x5f7f('0x17')];var _0xea9304=_0x392526?_0x493bf3[_0x5f7f('0x1a')]:_0x437f1d[_0x5f7f('0x17')]+_0x437f1d[_0x5f7f('0x19')];var _0x4c49df;if(_0xea9304>=_0x2aa30e){_0xea9304=_0x2aa30e;_0x4c49df=0xc8;}else{_0x4c49df=0xce;}_0xfa5de1[_0x5f7f('0x15')](_0x4c49df);return _0xfa5de1['set'](_0x5f7f('0x1b'),_0x3e83f1+'-'+_0xea9304+'/'+_0x2aa30e)['json'](_0x493bf3);}return null;};}function saveUpdates(_0x142d4a){return function(_0x43f001){if(_0x43f001){return _0x43f001['update'](_0x142d4a)['then'](function(_0x5c04fa){return _0x5c04fa;});}return null;};}function removeEntity(_0x2418b6){return function(_0x283cb8){if(_0x283cb8){return _0x283cb8[_0x5f7f('0x1c')]()[_0x5f7f('0x1d')](function(){_0x2418b6[_0x5f7f('0x15')](0xcc)[_0x5f7f('0x1e')]();});}};}function handleEntityNotFound(_0x1ff47f){return function(_0x47593f){if(!_0x47593f){_0x1ff47f['sendStatus'](0x194);}return _0x47593f;};}function handleError(_0x544faa,_0x512381){_0x512381=_0x512381||0x1f4;return function(_0x406987){logger[_0x5f7f('0x1f')](_0x406987['stack']);if(_0x406987[_0x5f7f('0x20')]){delete _0x406987['name'];}_0x544faa[_0x5f7f('0x15')](_0x512381)[_0x5f7f('0x21')](_0x406987);};}exports[_0x5f7f('0x22')]=function(_0x150934,_0x4e5c07){var _0x43b4d3={};var _0x5cad68=_[_0x5f7f('0x23')](db['WhatsappInteraction'][_0x5f7f('0x24')],function(_0x499b76){return{'name':_0x499b76[_0x5f7f('0x25')],'type':_0x499b76[_0x5f7f('0x26')][_0x5f7f('0x27')]};});_0x43b4d3=qs[_0x5f7f('0x28')](_0x5cad68,_0x150934);return interaction[_0x5f7f('0x29')](_0x5f7f('0x2a'),_0x150934[_0x5f7f('0x2b')],_0x150934['user'],_0x43b4d3,_0x5cad68)[_0x5f7f('0x1d')](respondWithFilteredResult(_0x4e5c07,_0x43b4d3))[_0x5f7f('0x2c')](handleError(_0x4e5c07,null));};exports['show']=function(_0x31ba90,_0x500a3f){var _0x49161b={'raw':![],'where':{'id':_0x31ba90[_0x5f7f('0x2d')]['id']}},_0x58e4e3={};_0x58e4e3[_0x5f7f('0x2e')]=_[_0x5f7f('0x2f')](db[_0x5f7f('0x30')][_0x5f7f('0x24')]);_0x58e4e3['query']=_[_0x5f7f('0x2f')](_0x31ba90[_0x5f7f('0x2b')]);_0x58e4e3[_0x5f7f('0x31')]=_[_0x5f7f('0x32')](_0x58e4e3['model'],_0x58e4e3[_0x5f7f('0x2b')]);_0x49161b[_0x5f7f('0x33')]=_[_0x5f7f('0x32')](_0x58e4e3['model'],qs[_0x5f7f('0x34')](_0x31ba90['query'][_0x5f7f('0x34')]));_0x49161b[_0x5f7f('0x33')]=_0x49161b[_0x5f7f('0x33')][_0x5f7f('0x35')]?_0x49161b[_0x5f7f('0x33')]:_0x58e4e3['model'];if(_0x31ba90[_0x5f7f('0x2b')]['includeAll']){_0x49161b['include']=[{'all':!![]}];}_0x49161b=_[_0x5f7f('0x36')]({},_0x49161b,_0x31ba90[_0x5f7f('0x37')]);return db[_0x5f7f('0x30')]['find'](_0x49161b)[_0x5f7f('0x1d')](handleEntityNotFound(_0x500a3f,null))[_0x5f7f('0x1d')](respondWithResult(_0x500a3f,null))[_0x5f7f('0x2c')](handleError(_0x500a3f,null));};exports[_0x5f7f('0x38')]=function(_0x36ad27,_0x55598b){return db['WhatsappInteraction'][_0x5f7f('0x38')](_0x36ad27[_0x5f7f('0x39')],{})[_0x5f7f('0x1d')](respondWithResult(_0x55598b,0xc9))['catch'](handleError(_0x55598b,null));};exports[_0x5f7f('0x3a')]=function(_0x4106d5,_0x5b8a0a){if(_0x4106d5[_0x5f7f('0x39')]['id']){delete _0x4106d5[_0x5f7f('0x39')]['id'];}return db[_0x5f7f('0x30')][_0x5f7f('0x3b')]({'where':{'id':_0x4106d5[_0x5f7f('0x2d')]['id']}})[_0x5f7f('0x1d')](handleEntityNotFound(_0x5b8a0a,null))['then'](saveUpdates(_0x4106d5[_0x5f7f('0x39')],null))[_0x5f7f('0x1d')](respondWithResult(_0x5b8a0a,null))['catch'](handleError(_0x5b8a0a,null));};exports[_0x5f7f('0x1c')]=function(_0x20c776,_0x561ca2){return db[_0x5f7f('0x30')][_0x5f7f('0x3b')]({'where':{'id':_0x20c776[_0x5f7f('0x2d')]['id']}})[_0x5f7f('0x1d')](handleEntityNotFound(_0x561ca2,null))[_0x5f7f('0x1d')](removeEntity(_0x561ca2,null))['catch'](handleError(_0x561ca2,null));};exports['describe']=function(_0x1c5685,_0x1b2c40){return db[_0x5f7f('0x30')][_0x5f7f('0x3c')]()[_0x5f7f('0x1d')](respondWithResult(_0x1b2c40,null))['catch'](handleError(_0x1b2c40,null));};exports[_0x5f7f('0x3d')]=function(_0xd281f6,_0x3a70c6){return db[_0x5f7f('0x3e')][_0x5f7f('0x3b')]({'where':{'id':_0xd281f6[_0x5f7f('0x2d')]['id']}})[_0x5f7f('0x1d')](handleEntityNotFound(_0x3a70c6,null))[_0x5f7f('0x1d')](function(_0x30cbbe){if(_0x30cbbe){return _0x30cbbe[_0x5f7f('0x3d')](_0xd281f6[_0x5f7f('0x39')]['ids'],_[_0x5f7f('0x3f')](_0xd281f6[_0x5f7f('0x39')],[_0x5f7f('0x40'),'id'])||{});}})[_0x5f7f('0x1d')](respondWithResult(_0x3a70c6,null))[_0x5f7f('0x2c')](handleError(_0x3a70c6,null));};exports[_0x5f7f('0x41')]=function(_0x23b42c,_0x3e22f6){var _0x37c5e4={'raw':![],'where':{}};var _0xf9161c={};var _0x594f56={'count':0x0,'rows':[]};return db[_0x5f7f('0x30')][_0x5f7f('0x42')]({'where':{'id':_0x23b42c['params']['id']}})['then'](handleEntityNotFound(_0x3e22f6,null))[_0x5f7f('0x1d')](function(_0x4fdd6c){if(_0x4fdd6c){_0xf9161c['model']=_[_0x5f7f('0x2f')](db[_0x5f7f('0x3e')][_0x5f7f('0x24')]);_0xf9161c[_0x5f7f('0x2b')]=_['keys'](_0x23b42c[_0x5f7f('0x2b')]);_0xf9161c[_0x5f7f('0x31')]=_['intersection'](_0xf9161c['model'],_0xf9161c[_0x5f7f('0x2b')]);_0x37c5e4[_0x5f7f('0x33')]=_[_0x5f7f('0x32')](_0xf9161c['model'],qs['fields'](_0x23b42c[_0x5f7f('0x2b')][_0x5f7f('0x34')]));_0x37c5e4['attributes']=_0x37c5e4['attributes']['length']?_0x37c5e4[_0x5f7f('0x33')]:_0xf9161c[_0x5f7f('0x2e')];if(!_0x23b42c['query'][_0x5f7f('0x43')](_0x5f7f('0x44'))){_0x37c5e4[_0x5f7f('0x19')]=qs[_0x5f7f('0x19')](_0x23b42c[_0x5f7f('0x2b')][_0x5f7f('0x19')]);_0x37c5e4[_0x5f7f('0x17')]=qs[_0x5f7f('0x17')](_0x23b42c[_0x5f7f('0x2b')][_0x5f7f('0x17')]);}_0x37c5e4['order']=qs[_0x5f7f('0x45')](_0x23b42c[_0x5f7f('0x2b')][_0x5f7f('0x45')]);_0x37c5e4[_0x5f7f('0x46')]=qs[_0x5f7f('0x31')](_[_0x5f7f('0x47')](_0x23b42c['query'],_0xf9161c['filters']));_0x37c5e4[_0x5f7f('0x46')][_0x5f7f('0x48')]=_0x4fdd6c['id'];if(_0x23b42c[_0x5f7f('0x2b')]['filter']){_0x37c5e4[_0x5f7f('0x46')]=_[_0x5f7f('0x36')](_0x37c5e4[_0x5f7f('0x46')],{'$or':_[_0x5f7f('0x23')](_0x37c5e4[_0x5f7f('0x33')],function(_0x1efabb){var _0x1a57f9={};_0x1a57f9[_0x1efabb]={'$like':'%'+_0x23b42c['query'][_0x5f7f('0x49')]+'%'};return _0x1a57f9;})});}if(_0x23b42c[_0x5f7f('0x2b')]['$gte']){var _0x1e3124=_0x23b42c['query'][_0x5f7f('0x4a')]['split'](',');var _0x222629={};_0x222629[_0x1e3124[0x0]]={'$gte':moment(_0x1e3124[0x1])['format'](_0x5f7f('0x4b'))};_0x37c5e4[_0x5f7f('0x46')]=_[_0x5f7f('0x36')](_0x37c5e4[_0x5f7f('0x46')],_0x222629);}_0x37c5e4=_[_0x5f7f('0x36')]({},_0x37c5e4,_0x23b42c['options']);return db[_0x5f7f('0x3e')][_0x5f7f('0x1a')]({'where':_0x37c5e4[_0x5f7f('0x46')]})[_0x5f7f('0x1d')](function(_0x9a61f9){_0x594f56['count']=_0x9a61f9;if(_0x23b42c[_0x5f7f('0x2b')][_0x5f7f('0x4c')]){_0x37c5e4[_0x5f7f('0x4d')]=[{'all':!![]}];}return db[_0x5f7f('0x3e')][_0x5f7f('0x29')](_0x37c5e4);})[_0x5f7f('0x1d')](function(_0x3a686b){_0x594f56[_0x5f7f('0x4e')]=_0x3a686b;return _0x594f56;});}})[_0x5f7f('0x1d')](respondWithFilteredResult(_0x3e22f6,_0x37c5e4))[_0x5f7f('0x2c')](handleError(_0x3e22f6,null));};exports['addTags']=function(_0x3f7b9c,_0x32ab1c){return db[_0x5f7f('0x30')]['find']({'where':{'id':_0x3f7b9c[_0x5f7f('0x2d')]['id']}})[_0x5f7f('0x1d')](handleEntityNotFound(_0x32ab1c,null))[_0x5f7f('0x1d')](function(_0x1c1568){if(_0x1c1568){return _0x1c1568[_0x5f7f('0x4f')](_0x3f7b9c[_0x5f7f('0x39')]['ids'],_[_0x5f7f('0x3f')](_0x3f7b9c['body'],[_0x5f7f('0x40'),'id'])||{})[_0x5f7f('0x50')](function(){return db[_0x5f7f('0x51')][_0x5f7f('0x29')]({'attributes':['id',_0x5f7f('0x20'),'color'],'where':{'id':_0x3f7b9c[_0x5f7f('0x39')][_0x5f7f('0x40')]}});})[_0x5f7f('0x1d')](function(_0x402a1b){socket[_0x5f7f('0x52')](_0x5f7f('0x53'),{'id':Number(_0x3f7b9c['params']['id']),'tags':_0x402a1b||[]});return{'id':Number(_0x3f7b9c[_0x5f7f('0x2d')]['id']),'tags':_0x402a1b||[]};});}})[_0x5f7f('0x1d')](respondWithResult(_0x32ab1c,null))[_0x5f7f('0x2c')](handleError(_0x32ab1c,null));};exports[_0x5f7f('0x54')]=function(_0x336295,_0x2be8a6){return db[_0x5f7f('0x30')][_0x5f7f('0x3b')]({'where':{'id':_0x336295[_0x5f7f('0x2d')]['id']}})[_0x5f7f('0x1d')](handleEntityNotFound(_0x2be8a6,null))['then'](function(_0xb82cd0){if(_0xb82cd0){return _0xb82cd0[_0x5f7f('0x54')](_0x336295[_0x5f7f('0x2b')][_0x5f7f('0x40')]);}})[_0x5f7f('0x1d')](respondWithStatusCode(_0x2be8a6,null))[_0x5f7f('0x2c')](handleError(_0x2be8a6,null));};exports[_0x5f7f('0x55')]=function(_0x195b74,_0x4f0434){var _0x39c64f=moment()['unix']()[_0x5f7f('0x56')]();var _0x79f023=path[_0x5f7f('0x57')](config[_0x5f7f('0x58')],_0x5f7f('0x59'),_0x5f7f('0x5a'),_0x5f7f('0x5b'));var _0x5db61b=path[_0x5f7f('0x57')](config['root'],_0x5f7f('0x59'),'files','attachments');var _0x2e090d=path['join'](_0x79f023,_0x39c64f);var _0x5b96fa=util['format']('transcript-%d-%s.zip',_0x195b74[_0x5f7f('0x2d')]['id'],_0x39c64f);var _0x43625d=path[_0x5f7f('0x57')](_0x79f023,_0x5b96fa);var _0x1b4c5f=[];_0x1b4c5f[_0x5f7f('0x5c')]({'model':db[_0x5f7f('0x5d')],'as':_0x5f7f('0x5d'),'attributes':['id',_0x5f7f('0x5e')],'raw':!![]});_0x1b4c5f['push']({'model':db[_0x5f7f('0x5f')],'as':_0x5f7f('0x60'),'attributes':['id',_0x5f7f('0x61'),'lastName'],'raw':!![]});if(_0x195b74['query'][_0x5f7f('0x62')]){_0x1b4c5f['push']({'model':db[_0x5f7f('0x63')],'as':'Attachment','raw':!![]});}var _0x2d319b=[{'model':db[_0x5f7f('0x3e')],'as':_0x5f7f('0x64'),'attributes':['id',_0x5f7f('0x39'),_0x5f7f('0x65'),_0x5f7f('0x66'),_0x5f7f('0x67'),'read'],'include':_0x1b4c5f}];_0x2d319b[_0x5f7f('0x5c')]({'model':db['WhatsappAccount'],'as':_0x5f7f('0x68'),'attributes':['id',_0x5f7f('0x20')]});_0x2d319b[_0x5f7f('0x5c')]({'model':db[_0x5f7f('0x5d')],'as':'Owner','attributes':['id',_0x5f7f('0x5e')]});return db[_0x5f7f('0x30')][_0x5f7f('0x3b')]({'where':{'id':_0x195b74[_0x5f7f('0x2d')]['id']},'include':_0x2d319b})[_0x5f7f('0x1d')](handleEntityNotFound(_0x4f0434,null))[_0x5f7f('0x1d')](function(_0xfbd0b){if(_0xfbd0b){var _0x430e49=_0xfbd0b[_0x5f7f('0x69')]({'plain':!![]});fs['mkdirSync'](_0x2e090d);var _0x28116e={'channel':_0x5f7f('0x6a'),'account':_0x430e49[_0x5f7f('0x68')][_0x5f7f('0x20')],'agent':_0x430e49[_0x5f7f('0x6b')]?_0x430e49['Owner']['fullname']:'N.A.','createdAt':moment(_0x430e49[_0x5f7f('0x65')])[_0x5f7f('0x6c')](_0x5f7f('0x4b'))[_0x5f7f('0x56')](),'closedAt':_0x430e49[_0x5f7f('0x6d')]?moment(_0x430e49[_0x5f7f('0x6e')])[_0x5f7f('0x6c')](_0x5f7f('0x4b'))[_0x5f7f('0x56')]():'','disposition':_0x430e49[_0x5f7f('0x6f')],'messages':_(_0x430e49[_0x5f7f('0x64')])[_0x5f7f('0x49')]({'secret':![]})[_0x5f7f('0x23')](function(_0x1ff770){if(_0x1ff770['Attachment']){var _0x355561=path['join'](_0x5db61b,_0x1ff770[_0x5f7f('0x63')]['basename']);if(fs[_0x5f7f('0x70')](_0x355561)){fs['createReadStream'](_0x355561)['pipe'](fs[_0x5f7f('0x71')](path['join'](_0x2e090d,_0x1ff770[_0x5f7f('0x63')][_0x5f7f('0x72')])));}}return{'date':moment(_0x1ff770[_0x5f7f('0x65')])[_0x5f7f('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')[_0x5f7f('0x56')](),'sender':_0x1ff770[_0x5f7f('0x66')]===_0x5f7f('0x73')?_0x1ff770[_0x5f7f('0x5d')]?_0x1ff770[_0x5f7f('0x5d')][_0x5f7f('0x5e')]:_0x5f7f('0x74'):_0x1ff770[_0x5f7f('0x60')][_0x5f7f('0x61')]+(_0x1ff770[_0x5f7f('0x60')][_0x5f7f('0x75')]?'\x20'+_0x1ff770['Contact'][_0x5f7f('0x75')]:''),'body':_0x1ff770[_0x5f7f('0x63')]?_0x1ff770['Attachment'][_0x5f7f('0x72')]:_0x1ff770[_0x5f7f('0x39')],'direction':_0x1ff770[_0x5f7f('0x66')]==='out'?'A':'C','secret':_0x1ff770[_0x5f7f('0x67')],'read':_0x1ff770['read'],'attachment':_0x1ff770['Attachment']};})[_0x5f7f('0x76')]()};return ejs[_0x5f7f('0x77')](path[_0x5f7f('0x57')](config['root'],_0x5f7f('0x59'),'views',_0x5f7f('0x78')),{'interaction':_0x28116e})[_0x5f7f('0x1d')](function(_0x1445d8){var _0x59deb1=path[_0x5f7f('0x57')](_0x2e090d,_0x5f7f('0x79')+_0x430e49['id']+'-'+_0x39c64f+'.pdf');var _0x4a705a={'path':_0x59deb1,'channel':_0x5f7f('0x6a'),'interactionId':_0x430e49['id']};return pdf[_0x5f7f('0x7a')](_0x1445d8,_0x4a705a);})[_0x5f7f('0x1d')](function(){return new BPromise(function(_0x5e6555,_0x1f40e2){zipdir(_0x2e090d,{'saveTo':_0x43625d},function(_0x5f5c4a,_0x1ff649){if(_0x5f5c4a)return _0x1f40e2(_0x5f5c4a);return _0x5e6555(_0x1ff649);});})['then'](function(){return new BPromise(function(_0x39558e,_0x30c941){rimraf(_0x2e090d,function(_0x4be301){if(_0x4be301)_0x30c941(_0x4be301);return _0x39558e();});});})[_0x5f7f('0x1d')](function(){return _0x4f0434['download'](_0x43625d,_0x5b96fa,function(_0x14d699){if(_0x14d699){console[_0x5f7f('0x7b')](_0x5f7f('0x7c'),_0x14d699);}else{fs[_0x5f7f('0x7d')](_0x43625d);}});});});}else{return _0x4f0434[_0x5f7f('0x14')](0xc8);}})[_0x5f7f('0x2c')](handleError(_0x4f0434,null));};