Built motion from commit 0d14f64c.|2.6.34
[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 _0xa673=['ejs','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','name','send','index','map','fieldName','type','key','getOptions','findAll','user','show','params','keys','WhatsappInteraction','rawAttributes','query','filters','intersection','attributes','fields','model','include','merge','options','find','catch','create','body','describe','addMessage','omit','ids','getMessages','findOne','length','hasOwnProperty','nolimit','order','sort','where','pick','WhatsappInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','WhatsappMessage','addTags','setTags','Tag','color','emit','whatsappInteractionTags:save','removeTags','unix','toString','root','server','files','tmp','join','attachments','transcript-%d-%s.zip','User','push','CmContact','firstName','lastName','secret','read','WhatsappAccount','Account','fullname','get','mkdirSync','Owner','createdAt','closedAt','disposition','Messages','Attachment','basename','existsSync','pipe','createWriteStream','direction','System','Contact','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','rimraf','zip-dir','moment','bluebird','util'];(function(_0x3eb03f,_0x3a2f91){var _0x56140c=function(_0x5bef45){while(--_0x5bef45){_0x3eb03f['push'](_0x3eb03f['shift']());}};_0x56140c(++_0x3a2f91);}(_0xa673,0x17b));var _0x3a67=function(_0x371761,_0x42a66f){_0x371761=_0x371761-0x0;var _0x279921=_0xa673[_0x371761];return _0x279921;};'use strict';var rimraf=require(_0x3a67('0x0'));var zipdir=require(_0x3a67('0x1'));var moment=require(_0x3a67('0x2'));var BPromise=require(_0x3a67('0x3'));var util=require(_0x3a67('0x4'));var path=require('path');var ejs=require(_0x3a67('0x5'));var fs=require('fs');var _=require(_0x3a67('0x6'));var Redis=require(_0x3a67('0x7'));var interaction=require('../../components/interaction/service');var qs=require(_0x3a67('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0x3a67('0x9'))(_0x3a67('0xa'));var config=require('../../config/environment');var db=require(_0x3a67('0xb'))['db'];config[_0x3a67('0xc')]=_['defaults'](config[_0x3a67('0xc')],{'host':_0x3a67('0xd'),'port':0x18eb});var socket=require(_0x3a67('0xe'))(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0x3a67('0xf')](socket);function respondWithStatusCode(_0x27f828,_0x1884e2){_0x1884e2=_0x1884e2||0xcc;return function(_0x1774f4){if(_0x1774f4){return _0x27f828[_0x3a67('0x10')](_0x1884e2);}return _0x27f828[_0x3a67('0x11')](_0x1884e2)['end']();};}function respondWithResult(_0x5c7d72,_0x3b1caa){_0x3b1caa=_0x3b1caa||0xc8;return function(_0x54ea28){if(_0x54ea28){return _0x5c7d72['status'](_0x3b1caa)[_0x3a67('0x12')](_0x54ea28);}};}function respondWithFilteredResult(_0x56b816,_0x510f9a){return function(_0x32a77e){if(_0x32a77e){var _0x482768=typeof _0x510f9a[_0x3a67('0x13')]===_0x3a67('0x14')&&typeof _0x510f9a[_0x3a67('0x15')]==='undefined';var _0x3389e2=_0x32a77e[_0x3a67('0x16')];var _0x3d9244=_0x482768?0x0:_0x510f9a[_0x3a67('0x13')];var _0x58c7e5=_0x482768?_0x32a77e['count']:_0x510f9a[_0x3a67('0x13')]+_0x510f9a[_0x3a67('0x15')];var _0x29b88d;if(_0x58c7e5>=_0x3389e2){_0x58c7e5=_0x3389e2;_0x29b88d=0xc8;}else{_0x29b88d=0xce;}_0x56b816[_0x3a67('0x11')](_0x29b88d);return _0x56b816[_0x3a67('0x17')](_0x3a67('0x18'),_0x3d9244+'-'+_0x58c7e5+'/'+_0x3389e2)[_0x3a67('0x12')](_0x32a77e);}return null;};}function saveUpdates(_0x11ff72){return function(_0x1b7403){if(_0x1b7403){return _0x1b7403[_0x3a67('0x19')](_0x11ff72)[_0x3a67('0x1a')](function(_0x3ef811){return _0x3ef811;});}return null;};}function removeEntity(_0x3b4641){return function(_0x2b9813){if(_0x2b9813){return _0x2b9813[_0x3a67('0x1b')]()[_0x3a67('0x1a')](function(){_0x3b4641[_0x3a67('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7663cd){return function(_0x347f37){if(!_0x347f37){_0x7663cd[_0x3a67('0x10')](0x194);}return _0x347f37;};}function handleError(_0x1670d4,_0x98167f){_0x98167f=_0x98167f||0x1f4;return function(_0x5a48c9){logger[_0x3a67('0x1c')](_0x5a48c9['stack']);if(_0x5a48c9[_0x3a67('0x1d')]){delete _0x5a48c9[_0x3a67('0x1d')];}_0x1670d4[_0x3a67('0x11')](_0x98167f)[_0x3a67('0x1e')](_0x5a48c9);};}exports[_0x3a67('0x1f')]=function(_0x225481,_0x106f6d){var _0x4d9e7c={};var _0x306b0b=_[_0x3a67('0x20')](db['WhatsappInteraction']['rawAttributes'],function(_0x52b400){return{'name':_0x52b400[_0x3a67('0x21')],'type':_0x52b400[_0x3a67('0x22')][_0x3a67('0x23')]};});_0x4d9e7c=qs[_0x3a67('0x24')](_0x306b0b,_0x225481);return interaction[_0x3a67('0x25')]('whatsapp',_0x225481['query'],_0x225481[_0x3a67('0x26')],_0x4d9e7c,_0x306b0b)['then'](respondWithFilteredResult(_0x106f6d,_0x4d9e7c))['catch'](handleError(_0x106f6d,null));};exports[_0x3a67('0x27')]=function(_0x57c96c,_0x52a16f){var _0x2b72ad={'raw':![],'where':{'id':_0x57c96c[_0x3a67('0x28')]['id']}},_0x5074da={};_0x5074da['model']=_[_0x3a67('0x29')](db[_0x3a67('0x2a')][_0x3a67('0x2b')]);_0x5074da[_0x3a67('0x2c')]=_[_0x3a67('0x29')](_0x57c96c['query']);_0x5074da[_0x3a67('0x2d')]=_[_0x3a67('0x2e')](_0x5074da['model'],_0x5074da['query']);_0x2b72ad[_0x3a67('0x2f')]=_[_0x3a67('0x2e')](_0x5074da['model'],qs[_0x3a67('0x30')](_0x57c96c[_0x3a67('0x2c')]['fields']));_0x2b72ad[_0x3a67('0x2f')]=_0x2b72ad[_0x3a67('0x2f')]['length']?_0x2b72ad[_0x3a67('0x2f')]:_0x5074da[_0x3a67('0x31')];if(_0x57c96c[_0x3a67('0x2c')]['includeAll']){_0x2b72ad[_0x3a67('0x32')]=[{'all':!![]}];}_0x2b72ad=_[_0x3a67('0x33')]({},_0x2b72ad,_0x57c96c[_0x3a67('0x34')]);return db[_0x3a67('0x2a')][_0x3a67('0x35')](_0x2b72ad)[_0x3a67('0x1a')](handleEntityNotFound(_0x52a16f,null))['then'](respondWithResult(_0x52a16f,null))[_0x3a67('0x36')](handleError(_0x52a16f,null));};exports[_0x3a67('0x37')]=function(_0x53f921,_0x5a9d8a){return db[_0x3a67('0x2a')][_0x3a67('0x37')](_0x53f921[_0x3a67('0x38')],{})[_0x3a67('0x1a')](respondWithResult(_0x5a9d8a,0xc9))[_0x3a67('0x36')](handleError(_0x5a9d8a,null));};exports[_0x3a67('0x19')]=function(_0x150250,_0x291a8f){if(_0x150250[_0x3a67('0x38')]['id']){delete _0x150250['body']['id'];}return db[_0x3a67('0x2a')][_0x3a67('0x35')]({'where':{'id':_0x150250['params']['id']}})[_0x3a67('0x1a')](handleEntityNotFound(_0x291a8f,null))['then'](saveUpdates(_0x150250[_0x3a67('0x38')],null))[_0x3a67('0x1a')](respondWithResult(_0x291a8f,null))[_0x3a67('0x36')](handleError(_0x291a8f,null));};exports[_0x3a67('0x1b')]=function(_0x13d997,_0x1d7cb7){return db['WhatsappInteraction']['find']({'where':{'id':_0x13d997[_0x3a67('0x28')]['id']}})[_0x3a67('0x1a')](handleEntityNotFound(_0x1d7cb7,null))[_0x3a67('0x1a')](removeEntity(_0x1d7cb7,null))['catch'](handleError(_0x1d7cb7,null));};exports[_0x3a67('0x39')]=function(_0x2410c4,_0x589aa5){return db['WhatsappInteraction'][_0x3a67('0x39')]()[_0x3a67('0x1a')](respondWithResult(_0x589aa5,null))[_0x3a67('0x36')](handleError(_0x589aa5,null));};exports[_0x3a67('0x3a')]=function(_0x1e0eb8,_0x31a7fe){return db['WhatsappMessage'][_0x3a67('0x35')]({'where':{'id':_0x1e0eb8['params']['id']}})[_0x3a67('0x1a')](handleEntityNotFound(_0x31a7fe,null))[_0x3a67('0x1a')](function(_0x3a63f4){if(_0x3a63f4){return _0x3a63f4[_0x3a67('0x3a')](_0x1e0eb8[_0x3a67('0x38')]['ids'],_[_0x3a67('0x3b')](_0x1e0eb8[_0x3a67('0x38')],[_0x3a67('0x3c'),'id'])||{});}})[_0x3a67('0x1a')](respondWithResult(_0x31a7fe,null))['catch'](handleError(_0x31a7fe,null));};exports[_0x3a67('0x3d')]=function(_0x55bd20,_0x22fe62){var _0xa7f41d={'raw':![],'where':{}};var _0x3a97b2={};var _0x24f703={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x3a67('0x3e')]({'where':{'id':_0x55bd20[_0x3a67('0x28')]['id']}})[_0x3a67('0x1a')](handleEntityNotFound(_0x22fe62,null))['then'](function(_0x408c87){if(_0x408c87){_0x3a97b2[_0x3a67('0x31')]=_['keys'](db['WhatsappMessage']['rawAttributes']);_0x3a97b2[_0x3a67('0x2c')]=_[_0x3a67('0x29')](_0x55bd20[_0x3a67('0x2c')]);_0x3a97b2[_0x3a67('0x2d')]=_[_0x3a67('0x2e')](_0x3a97b2[_0x3a67('0x31')],_0x3a97b2['query']);_0xa7f41d[_0x3a67('0x2f')]=_[_0x3a67('0x2e')](_0x3a97b2[_0x3a67('0x31')],qs[_0x3a67('0x30')](_0x55bd20[_0x3a67('0x2c')]['fields']));_0xa7f41d[_0x3a67('0x2f')]=_0xa7f41d[_0x3a67('0x2f')][_0x3a67('0x3f')]?_0xa7f41d[_0x3a67('0x2f')]:_0x3a97b2['model'];if(!_0x55bd20[_0x3a67('0x2c')][_0x3a67('0x40')](_0x3a67('0x41'))){_0xa7f41d[_0x3a67('0x15')]=qs['limit'](_0x55bd20[_0x3a67('0x2c')][_0x3a67('0x15')]);_0xa7f41d[_0x3a67('0x13')]=qs[_0x3a67('0x13')](_0x55bd20[_0x3a67('0x2c')][_0x3a67('0x13')]);}_0xa7f41d[_0x3a67('0x42')]=qs[_0x3a67('0x43')](_0x55bd20['query'][_0x3a67('0x43')]);_0xa7f41d[_0x3a67('0x44')]=qs[_0x3a67('0x2d')](_[_0x3a67('0x45')](_0x55bd20[_0x3a67('0x2c')],_0x3a97b2[_0x3a67('0x2d')]));_0xa7f41d['where'][_0x3a67('0x46')]=_0x408c87['id'];if(_0x55bd20['query'][_0x3a67('0x47')]){_0xa7f41d[_0x3a67('0x44')]=_[_0x3a67('0x33')](_0xa7f41d[_0x3a67('0x44')],{'$or':_[_0x3a67('0x20')](_0xa7f41d[_0x3a67('0x2f')],function(_0x3e1f77){var _0x20e6e4={};_0x20e6e4[_0x3e1f77]={'$like':'%'+_0x55bd20[_0x3a67('0x2c')][_0x3a67('0x47')]+'%'};return _0x20e6e4;})});}if(_0x55bd20[_0x3a67('0x2c')][_0x3a67('0x48')]){var _0xeabbff=_0x55bd20[_0x3a67('0x2c')]['$gte'][_0x3a67('0x49')](',');var _0x417f77={};_0x417f77[_0xeabbff[0x0]]={'$gte':moment(_0xeabbff[0x1])[_0x3a67('0x4a')](_0x3a67('0x4b'))};_0xa7f41d['where']=_[_0x3a67('0x33')](_0xa7f41d[_0x3a67('0x44')],_0x417f77);}_0xa7f41d=_[_0x3a67('0x33')]({},_0xa7f41d,_0x55bd20[_0x3a67('0x34')]);return db[_0x3a67('0x4c')]['count']({'where':_0xa7f41d['where']})[_0x3a67('0x1a')](function(_0x443033){_0x24f703['count']=_0x443033;if(_0x55bd20[_0x3a67('0x2c')]['includeAll']){_0xa7f41d[_0x3a67('0x32')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x3a67('0x25')](_0xa7f41d);})[_0x3a67('0x1a')](function(_0x3d3e4a){_0x24f703['rows']=_0x3d3e4a;return _0x24f703;});}})['then'](respondWithFilteredResult(_0x22fe62,_0xa7f41d))[_0x3a67('0x36')](handleError(_0x22fe62,null));};exports[_0x3a67('0x4d')]=function(_0xd69879,_0x451b43){return db[_0x3a67('0x2a')][_0x3a67('0x35')]({'where':{'id':_0xd69879[_0x3a67('0x28')]['id']}})[_0x3a67('0x1a')](handleEntityNotFound(_0x451b43,null))[_0x3a67('0x1a')](function(_0x51915f){if(_0x51915f){return _0x51915f[_0x3a67('0x4e')](_0xd69879[_0x3a67('0x38')][_0x3a67('0x3c')],_[_0x3a67('0x3b')](_0xd69879[_0x3a67('0x38')],[_0x3a67('0x3c'),'id'])||{})['spread'](function(){return db[_0x3a67('0x4f')][_0x3a67('0x25')]({'attributes':['id',_0x3a67('0x1d'),_0x3a67('0x50')],'where':{'id':_0xd69879['body'][_0x3a67('0x3c')]}});})[_0x3a67('0x1a')](function(_0x1b22a3){socket[_0x3a67('0x51')](_0x3a67('0x52'),{'id':Number(_0xd69879[_0x3a67('0x28')]['id']),'tags':_0x1b22a3||[]});return{'id':Number(_0xd69879[_0x3a67('0x28')]['id']),'tags':_0x1b22a3||[]};});}})['then'](respondWithResult(_0x451b43,null))[_0x3a67('0x36')](handleError(_0x451b43,null));};exports['removeTags']=function(_0x463ad2,_0x1a83ec){return db['WhatsappInteraction'][_0x3a67('0x35')]({'where':{'id':_0x463ad2['params']['id']}})['then'](handleEntityNotFound(_0x1a83ec,null))[_0x3a67('0x1a')](function(_0x323de1){if(_0x323de1){return _0x323de1[_0x3a67('0x53')](_0x463ad2[_0x3a67('0x2c')][_0x3a67('0x3c')]);}})[_0x3a67('0x1a')](respondWithStatusCode(_0x1a83ec,null))[_0x3a67('0x36')](handleError(_0x1a83ec,null));};exports['download']=function(_0x40d725,_0x3e99b3){var _0x467aff=moment()[_0x3a67('0x54')]()[_0x3a67('0x55')]();var _0x30b560=path['join'](config[_0x3a67('0x56')],_0x3a67('0x57'),_0x3a67('0x58'),_0x3a67('0x59'));var _0x52a0cc=path[_0x3a67('0x5a')](config[_0x3a67('0x56')],_0x3a67('0x57'),_0x3a67('0x58'),_0x3a67('0x5b'));var _0x3f393a=path[_0x3a67('0x5a')](_0x30b560,_0x467aff);var _0x36c527=util['format'](_0x3a67('0x5c'),_0x40d725[_0x3a67('0x28')]['id'],_0x467aff);var _0x34c1e8=path['join'](_0x30b560,_0x36c527);var _0x528eca=[];_0x528eca['push']({'model':db[_0x3a67('0x5d')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x528eca[_0x3a67('0x5e')]({'model':db[_0x3a67('0x5f')],'as':'Contact','attributes':['id',_0x3a67('0x60'),_0x3a67('0x61')],'raw':!![]});if(_0x40d725['query'][_0x3a67('0x5b')]){_0x528eca['push']({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x293ab1=[{'model':db[_0x3a67('0x4c')],'as':'Messages','attributes':['id',_0x3a67('0x38'),'createdAt','direction',_0x3a67('0x62'),_0x3a67('0x63')],'include':_0x528eca}];_0x293ab1[_0x3a67('0x5e')]({'model':db[_0x3a67('0x64')],'as':_0x3a67('0x65'),'attributes':['id',_0x3a67('0x1d')]});_0x293ab1[_0x3a67('0x5e')]({'model':db[_0x3a67('0x5d')],'as':'Owner','attributes':['id',_0x3a67('0x66')]});return db['WhatsappInteraction']['find']({'where':{'id':_0x40d725[_0x3a67('0x28')]['id']},'include':_0x293ab1})['then'](handleEntityNotFound(_0x3e99b3,null))[_0x3a67('0x1a')](function(_0x5e4ab5){if(_0x5e4ab5){var _0x583dc2=_0x5e4ab5[_0x3a67('0x67')]({'plain':!![]});fs[_0x3a67('0x68')](_0x3f393a);var _0x252e15={'channel':'Whatsapp','account':_0x583dc2[_0x3a67('0x65')][_0x3a67('0x1d')],'agent':_0x583dc2[_0x3a67('0x69')]?_0x583dc2[_0x3a67('0x69')][_0x3a67('0x66')]:'N.A.','createdAt':moment(_0x583dc2[_0x3a67('0x6a')])[_0x3a67('0x4a')](_0x3a67('0x4b'))[_0x3a67('0x55')](),'closedAt':_0x583dc2['closed']?moment(_0x583dc2[_0x3a67('0x6b')])[_0x3a67('0x4a')](_0x3a67('0x4b'))['toString']():'','disposition':_0x583dc2[_0x3a67('0x6c')],'messages':_(_0x583dc2[_0x3a67('0x6d')])[_0x3a67('0x47')]({'secret':![]})[_0x3a67('0x20')](function(_0x1c0496){if(_0x1c0496[_0x3a67('0x6e')]){var _0x3dabcb=path[_0x3a67('0x5a')](_0x52a0cc,_0x1c0496['Attachment'][_0x3a67('0x6f')]);if(fs[_0x3a67('0x70')](_0x3dabcb)){fs['createReadStream'](_0x3dabcb)[_0x3a67('0x71')](fs[_0x3a67('0x72')](path['join'](_0x3f393a,_0x1c0496[_0x3a67('0x6e')]['basename'])));}}return{'date':moment(_0x1c0496['createdAt'])[_0x3a67('0x4a')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x1c0496[_0x3a67('0x73')]==='out'?_0x1c0496[_0x3a67('0x5d')]?_0x1c0496['User']['fullname']:_0x3a67('0x74'):_0x1c0496[_0x3a67('0x75')][_0x3a67('0x60')]+(_0x1c0496[_0x3a67('0x75')]['lastName']?'\x20'+_0x1c0496[_0x3a67('0x75')][_0x3a67('0x61')]:''),'body':_0x1c0496['Attachment']?_0x1c0496[_0x3a67('0x6e')]['basename']:_0x1c0496[_0x3a67('0x38')],'direction':_0x1c0496[_0x3a67('0x73')]==='out'?'A':'C','secret':_0x1c0496['secret'],'read':_0x1c0496[_0x3a67('0x63')],'attachment':_0x1c0496[_0x3a67('0x6e')]};})[_0x3a67('0x76')]()};return ejs[_0x3a67('0x77')](path[_0x3a67('0x5a')](config[_0x3a67('0x56')],_0x3a67('0x57'),_0x3a67('0x78'),_0x3a67('0x79')),{'interaction':_0x252e15})[_0x3a67('0x1a')](function(_0x4878ba){var _0xf2b72e=path[_0x3a67('0x5a')](_0x3f393a,_0x3a67('0x7a')+_0x583dc2['id']+'-'+_0x467aff+_0x3a67('0x7b'));var _0x1c598e={'path':_0xf2b72e,'channel':'Whatsapp','interactionId':_0x583dc2['id']};return pdf[_0x3a67('0x7c')](_0x4878ba,_0x1c598e);})[_0x3a67('0x1a')](function(){return new BPromise(function(_0x3f3637,_0x11932a){zipdir(_0x3f393a,{'saveTo':_0x34c1e8},function(_0x2907c9,_0x2f08ce){if(_0x2907c9)return _0x11932a(_0x2907c9);return _0x3f3637(_0x2f08ce);});})[_0x3a67('0x1a')](function(){return new BPromise(function(_0x3c3277,_0x35df39){rimraf(_0x3f393a,function(_0x11c880){if(_0x11c880)_0x35df39(_0x11c880);return _0x3c3277();});});})[_0x3a67('0x1a')](function(){return _0x3e99b3[_0x3a67('0x7d')](_0x34c1e8,_0x36c527,function(_0xefc882){if(_0xefc882){console[_0x3a67('0x7e')](_0x3a67('0x7f'),_0xefc882);}else{fs['unlinkSync'](_0x34c1e8);}});});});}else{return _0x3e99b3['sendStatus'](0xc8);}})['catch'](handleError(_0x3e99b3,null));};