Built motion from commit e02f907f.|2.6.14
[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 _0x0a27=['sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','then','stack','name','send','index','map','rawAttributes','fieldName','key','getOptions','findAll','whatsapp','query','catch','params','keys','WhatsappInteraction','filters','intersection','model','attributes','fields','length','include','merge','options','create','update','body','destroy','find','describe','addMessage','omit','getMessages','findOne','WhatsappMessage','hasOwnProperty','order','sort','where','pick','WhatsappInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','setTags','ids','spread','whatsappInteractionTags:save','removeTags','download','toString','join','server','files','root','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','Attachment','direction','secret','read','WhatsappAccount','Account','Owner','mkdirSync','Whatsapp','N.A.','createdAt','closed','closedAt','disposition','Messages','basename','existsSync','createReadStream','out','lastName','value','renderFile','transcript-','.pdf','createPdfFromHTML','err','rimraf','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/export/pdf','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket'];(function(_0x2650f5,_0x156f93){var _0xbd3ed7=function(_0x13bb52){while(--_0x13bb52){_0x2650f5['push'](_0x2650f5['shift']());}};_0xbd3ed7(++_0x156f93);}(_0x0a27,0x69));var _0x70a2=function(_0x1d615b,_0x45d453){_0x1d615b=_0x1d615b-0x0;var _0x50cde7=_0x0a27[_0x1d615b];return _0x50cde7;};'use strict';var rimraf=require(_0x70a2('0x0'));var zipdir=require('zip-dir');var moment=require(_0x70a2('0x1'));var BPromise=require(_0x70a2('0x2'));var util=require(_0x70a2('0x3'));var path=require(_0x70a2('0x4'));var ejs=require(_0x70a2('0x5'));var fs=require('fs');var _=require(_0x70a2('0x6'));var Redis=require(_0x70a2('0x7'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0x70a2('0x8'));var logger=require('../../config/logger')(_0x70a2('0x9'));var config=require(_0x70a2('0xa'));var db=require(_0x70a2('0xb'))['db'];config[_0x70a2('0xc')]=_[_0x70a2('0xd')](config['redis'],{'host':_0x70a2('0xe'),'port':0x18eb});var socket=require(_0x70a2('0xf'))(new Redis(config[_0x70a2('0xc')]));require(_0x70a2('0x10'))['register'](socket);function respondWithStatusCode(_0x16b8bd,_0x4d54e7){_0x4d54e7=_0x4d54e7||0xcc;return function(_0x40411f){if(_0x40411f){return _0x16b8bd[_0x70a2('0x11')](_0x4d54e7);}return _0x16b8bd[_0x70a2('0x12')](_0x4d54e7)[_0x70a2('0x13')]();};}function respondWithResult(_0x42665e,_0x58dd98){_0x58dd98=_0x58dd98||0xc8;return function(_0x6f199f){if(_0x6f199f){return _0x42665e[_0x70a2('0x12')](_0x58dd98)[_0x70a2('0x14')](_0x6f199f);}};}function respondWithFilteredResult(_0x4c5ae4,_0x1f45ca){return function(_0x421f31){if(_0x421f31){var _0x454580=typeof _0x1f45ca[_0x70a2('0x15')]===_0x70a2('0x16')&&typeof _0x1f45ca[_0x70a2('0x17')]===_0x70a2('0x16');var _0x2c9d6d=_0x421f31[_0x70a2('0x18')];var _0x32a3a8=_0x454580?0x0:_0x1f45ca[_0x70a2('0x15')];var _0x2d766d=_0x454580?_0x421f31[_0x70a2('0x18')]:_0x1f45ca[_0x70a2('0x15')]+_0x1f45ca[_0x70a2('0x17')];var _0x2e92a9;if(_0x2d766d>=_0x2c9d6d){_0x2d766d=_0x2c9d6d;_0x2e92a9=0xc8;}else{_0x2e92a9=0xce;}_0x4c5ae4[_0x70a2('0x12')](_0x2e92a9);return _0x4c5ae4['set'](_0x70a2('0x19'),_0x32a3a8+'-'+_0x2d766d+'/'+_0x2c9d6d)[_0x70a2('0x14')](_0x421f31);}return null;};}function saveUpdates(_0x2bcfa7){return function(_0x44426b){if(_0x44426b){return _0x44426b['update'](_0x2bcfa7)[_0x70a2('0x1a')](function(_0x3ed7b3){return _0x3ed7b3;});}return null;};}function removeEntity(_0x1953bf){return function(_0x9d59f4){if(_0x9d59f4){return _0x9d59f4['destroy']()[_0x70a2('0x1a')](function(){_0x1953bf['status'](0xcc)[_0x70a2('0x13')]();});}};}function handleEntityNotFound(_0x4b630c){return function(_0x23bd81){if(!_0x23bd81){_0x4b630c[_0x70a2('0x11')](0x194);}return _0x23bd81;};}function handleError(_0x334c19,_0x50931f){_0x50931f=_0x50931f||0x1f4;return function(_0x283031){logger['error'](_0x283031[_0x70a2('0x1b')]);if(_0x283031[_0x70a2('0x1c')]){delete _0x283031[_0x70a2('0x1c')];}_0x334c19[_0x70a2('0x12')](_0x50931f)[_0x70a2('0x1d')](_0x283031);};}exports[_0x70a2('0x1e')]=function(_0x10cf3d,_0xdd26c1){var _0x22c296={};var _0x27d29a=_[_0x70a2('0x1f')](db['WhatsappInteraction'][_0x70a2('0x20')],function(_0x42fc9b){return{'name':_0x42fc9b[_0x70a2('0x21')],'type':_0x42fc9b['type'][_0x70a2('0x22')]};});_0x22c296=qs[_0x70a2('0x23')](_0x27d29a,_0x10cf3d);return interaction[_0x70a2('0x24')](_0x70a2('0x25'),_0x10cf3d[_0x70a2('0x26')],_0x10cf3d['user'],_0x22c296,_0x27d29a)[_0x70a2('0x1a')](respondWithFilteredResult(_0xdd26c1,_0x22c296))[_0x70a2('0x27')](handleError(_0xdd26c1,null));};exports['show']=function(_0x4b0f2e,_0x5f1132){var _0x2a8d2b={'raw':![],'where':{'id':_0x4b0f2e[_0x70a2('0x28')]['id']}},_0x263ed9={};_0x263ed9['model']=_[_0x70a2('0x29')](db[_0x70a2('0x2a')][_0x70a2('0x20')]);_0x263ed9['query']=_[_0x70a2('0x29')](_0x4b0f2e['query']);_0x263ed9[_0x70a2('0x2b')]=_[_0x70a2('0x2c')](_0x263ed9[_0x70a2('0x2d')],_0x263ed9[_0x70a2('0x26')]);_0x2a8d2b[_0x70a2('0x2e')]=_['intersection'](_0x263ed9[_0x70a2('0x2d')],qs[_0x70a2('0x2f')](_0x4b0f2e[_0x70a2('0x26')][_0x70a2('0x2f')]));_0x2a8d2b['attributes']=_0x2a8d2b[_0x70a2('0x2e')][_0x70a2('0x30')]?_0x2a8d2b['attributes']:_0x263ed9['model'];if(_0x4b0f2e[_0x70a2('0x26')]['includeAll']){_0x2a8d2b[_0x70a2('0x31')]=[{'all':!![]}];}_0x2a8d2b=_[_0x70a2('0x32')]({},_0x2a8d2b,_0x4b0f2e[_0x70a2('0x33')]);return db['WhatsappInteraction']['find'](_0x2a8d2b)[_0x70a2('0x1a')](handleEntityNotFound(_0x5f1132,null))['then'](respondWithResult(_0x5f1132,null))[_0x70a2('0x27')](handleError(_0x5f1132,null));};exports[_0x70a2('0x34')]=function(_0x4a34cb,_0x12a7bb){return db[_0x70a2('0x2a')][_0x70a2('0x34')](_0x4a34cb['body'],{})[_0x70a2('0x1a')](respondWithResult(_0x12a7bb,0xc9))[_0x70a2('0x27')](handleError(_0x12a7bb,null));};exports[_0x70a2('0x35')]=function(_0x31785d,_0x322bb9){if(_0x31785d[_0x70a2('0x36')]['id']){delete _0x31785d[_0x70a2('0x36')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x31785d[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x322bb9,null))[_0x70a2('0x1a')](saveUpdates(_0x31785d[_0x70a2('0x36')],null))['then'](respondWithResult(_0x322bb9,null))[_0x70a2('0x27')](handleError(_0x322bb9,null));};exports[_0x70a2('0x37')]=function(_0x4b4e95,_0x5cb3e1){return db['WhatsappInteraction'][_0x70a2('0x38')]({'where':{'id':_0x4b4e95[_0x70a2('0x28')]['id']}})['then'](handleEntityNotFound(_0x5cb3e1,null))[_0x70a2('0x1a')](removeEntity(_0x5cb3e1,null))[_0x70a2('0x27')](handleError(_0x5cb3e1,null));};exports[_0x70a2('0x39')]=function(_0x353c79,_0x4d9730){return db[_0x70a2('0x2a')][_0x70a2('0x39')]()[_0x70a2('0x1a')](respondWithResult(_0x4d9730,null))[_0x70a2('0x27')](handleError(_0x4d9730,null));};exports[_0x70a2('0x3a')]=function(_0xb61854,_0x818ccb){return db['WhatsappMessage'][_0x70a2('0x38')]({'where':{'id':_0xb61854[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x818ccb,null))[_0x70a2('0x1a')](function(_0x4b7c9b){if(_0x4b7c9b){return _0x4b7c9b['addMessage'](_0xb61854['body']['ids'],_[_0x70a2('0x3b')](_0xb61854['body'],['ids','id'])||{});}})[_0x70a2('0x1a')](respondWithResult(_0x818ccb,null))[_0x70a2('0x27')](handleError(_0x818ccb,null));};exports[_0x70a2('0x3c')]=function(_0x1bd2b8,_0x5c5cb8){var _0x23ef6a={'raw':![],'where':{}};var _0x105dec={};var _0x7cb748={'count':0x0,'rows':[]};return db[_0x70a2('0x2a')][_0x70a2('0x3d')]({'where':{'id':_0x1bd2b8[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x5c5cb8,null))[_0x70a2('0x1a')](function(_0x1dbc1a){if(_0x1dbc1a){_0x105dec[_0x70a2('0x2d')]=_[_0x70a2('0x29')](db[_0x70a2('0x3e')][_0x70a2('0x20')]);_0x105dec[_0x70a2('0x26')]=_[_0x70a2('0x29')](_0x1bd2b8[_0x70a2('0x26')]);_0x105dec['filters']=_[_0x70a2('0x2c')](_0x105dec['model'],_0x105dec[_0x70a2('0x26')]);_0x23ef6a[_0x70a2('0x2e')]=_['intersection'](_0x105dec[_0x70a2('0x2d')],qs[_0x70a2('0x2f')](_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x2f')]));_0x23ef6a[_0x70a2('0x2e')]=_0x23ef6a[_0x70a2('0x2e')]['length']?_0x23ef6a[_0x70a2('0x2e')]:_0x105dec[_0x70a2('0x2d')];if(!_0x1bd2b8['query'][_0x70a2('0x3f')]('nolimit')){_0x23ef6a[_0x70a2('0x17')]=qs[_0x70a2('0x17')](_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x17')]);_0x23ef6a[_0x70a2('0x15')]=qs['offset'](_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x15')]);}_0x23ef6a[_0x70a2('0x40')]=qs[_0x70a2('0x41')](_0x1bd2b8['query'][_0x70a2('0x41')]);_0x23ef6a[_0x70a2('0x42')]=qs[_0x70a2('0x2b')](_[_0x70a2('0x43')](_0x1bd2b8['query'],_0x105dec[_0x70a2('0x2b')]));_0x23ef6a[_0x70a2('0x42')][_0x70a2('0x44')]=_0x1dbc1a['id'];if(_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x45')]){_0x23ef6a[_0x70a2('0x42')]=_[_0x70a2('0x32')](_0x23ef6a['where'],{'$or':_[_0x70a2('0x1f')](_0x23ef6a[_0x70a2('0x2e')],function(_0x388806){var _0x2b0803={};_0x2b0803[_0x388806]={'$like':'%'+_0x1bd2b8[_0x70a2('0x26')]['filter']+'%'};return _0x2b0803;})});}if(_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x46')]){var _0x1722c4=_0x1bd2b8[_0x70a2('0x26')][_0x70a2('0x46')][_0x70a2('0x47')](',');var _0x1d133e={};_0x1d133e[_0x1722c4[0x0]]={'$gte':moment(_0x1722c4[0x1])[_0x70a2('0x48')](_0x70a2('0x49'))};_0x23ef6a[_0x70a2('0x42')]=_['merge'](_0x23ef6a[_0x70a2('0x42')],_0x1d133e);}_0x23ef6a=_[_0x70a2('0x32')]({},_0x23ef6a,_0x1bd2b8[_0x70a2('0x33')]);return db[_0x70a2('0x3e')][_0x70a2('0x18')]({'where':_0x23ef6a['where']})['then'](function(_0x1a90ac){_0x7cb748[_0x70a2('0x18')]=_0x1a90ac;if(_0x1bd2b8['query'][_0x70a2('0x4a')]){_0x23ef6a[_0x70a2('0x31')]=[{'all':!![]}];}return db[_0x70a2('0x3e')][_0x70a2('0x24')](_0x23ef6a);})[_0x70a2('0x1a')](function(_0xa1752d){_0x7cb748[_0x70a2('0x4b')]=_0xa1752d;return _0x7cb748;});}})[_0x70a2('0x1a')](respondWithFilteredResult(_0x5c5cb8,_0x23ef6a))[_0x70a2('0x27')](handleError(_0x5c5cb8,null));};exports[_0x70a2('0x4c')]=function(_0xa66de3,_0x199eea){return db['WhatsappInteraction']['find']({'where':{'id':_0xa66de3[_0x70a2('0x28')]['id']}})['then'](handleEntityNotFound(_0x199eea,null))['then'](function(_0x351fb2){if(_0x351fb2){return _0x351fb2[_0x70a2('0x4d')](_0xa66de3['body'][_0x70a2('0x4e')],_[_0x70a2('0x3b')](_0xa66de3[_0x70a2('0x36')],[_0x70a2('0x4e'),'id'])||{})[_0x70a2('0x4f')](function(){return db['Tag'][_0x70a2('0x24')]({'attributes':['id',_0x70a2('0x1c'),'color'],'where':{'id':_0xa66de3[_0x70a2('0x36')][_0x70a2('0x4e')]}});})[_0x70a2('0x1a')](function(_0x6baf61){socket['emit'](_0x70a2('0x50'),{'id':Number(_0xa66de3['params']['id']),'tags':_0x6baf61||[]});return{'id':Number(_0xa66de3['params']['id']),'tags':_0x6baf61||[]};});}})['then'](respondWithResult(_0x199eea,null))[_0x70a2('0x27')](handleError(_0x199eea,null));};exports[_0x70a2('0x51')]=function(_0xc1da7b,_0x5471dd){return db['WhatsappInteraction'][_0x70a2('0x38')]({'where':{'id':_0xc1da7b[_0x70a2('0x28')]['id']}})[_0x70a2('0x1a')](handleEntityNotFound(_0x5471dd,null))[_0x70a2('0x1a')](function(_0x5d0995){if(_0x5d0995){return _0x5d0995[_0x70a2('0x51')](_0xc1da7b['query']['ids']);}})[_0x70a2('0x1a')](respondWithStatusCode(_0x5471dd,null))[_0x70a2('0x27')](handleError(_0x5471dd,null));};exports[_0x70a2('0x52')]=function(_0x36cc38,_0x528ad8){var _0x36689b=moment()['unix']()[_0x70a2('0x53')]();var _0x391527=path[_0x70a2('0x54')](config['root'],_0x70a2('0x55'),_0x70a2('0x56'),'tmp');var _0x370bfa=path['join'](config[_0x70a2('0x57')],_0x70a2('0x55'),_0x70a2('0x56'),_0x70a2('0x58'));var _0x3bf8d1=path[_0x70a2('0x54')](_0x391527,_0x36689b);var _0x1213c5=util[_0x70a2('0x48')](_0x70a2('0x59'),_0x36cc38[_0x70a2('0x28')]['id'],_0x36689b);var _0x348999=path[_0x70a2('0x54')](_0x391527,_0x1213c5);var _0x3e53cd=[];_0x3e53cd[_0x70a2('0x5a')]({'model':db[_0x70a2('0x5b')],'as':_0x70a2('0x5b'),'attributes':['id',_0x70a2('0x5c')],'raw':!![]});_0x3e53cd[_0x70a2('0x5a')]({'model':db[_0x70a2('0x5d')],'as':_0x70a2('0x5e'),'attributes':['id',_0x70a2('0x5f'),'lastName'],'raw':!![]});if(_0x36cc38[_0x70a2('0x26')][_0x70a2('0x58')]){_0x3e53cd[_0x70a2('0x5a')]({'model':db[_0x70a2('0x60')],'as':_0x70a2('0x60'),'raw':!![]});}var _0x56dce9=[{'model':db['WhatsappMessage'],'as':'Messages','attributes':['id',_0x70a2('0x36'),'createdAt',_0x70a2('0x61'),_0x70a2('0x62'),_0x70a2('0x63')],'include':_0x3e53cd}];_0x56dce9['push']({'model':db[_0x70a2('0x64')],'as':_0x70a2('0x65'),'attributes':['id',_0x70a2('0x1c')]});_0x56dce9[_0x70a2('0x5a')]({'model':db['User'],'as':_0x70a2('0x66'),'attributes':['id','fullname']});return db[_0x70a2('0x2a')][_0x70a2('0x38')]({'where':{'id':_0x36cc38[_0x70a2('0x28')]['id']},'include':_0x56dce9})[_0x70a2('0x1a')](handleEntityNotFound(_0x528ad8,null))['then'](function(_0x1a8799){if(_0x1a8799){var _0x20cd26=_0x1a8799['get']({'plain':!![]});fs[_0x70a2('0x67')](_0x3bf8d1);var _0x1af87a={'channel':_0x70a2('0x68'),'account':_0x20cd26[_0x70a2('0x65')][_0x70a2('0x1c')],'agent':_0x20cd26[_0x70a2('0x66')]?_0x20cd26['Owner'][_0x70a2('0x5c')]:_0x70a2('0x69'),'createdAt':moment(_0x20cd26[_0x70a2('0x6a')])[_0x70a2('0x48')](_0x70a2('0x49'))[_0x70a2('0x53')](),'closedAt':_0x20cd26[_0x70a2('0x6b')]?moment(_0x20cd26[_0x70a2('0x6c')])[_0x70a2('0x48')](_0x70a2('0x49'))[_0x70a2('0x53')]():'','disposition':_0x20cd26[_0x70a2('0x6d')],'messages':_(_0x20cd26[_0x70a2('0x6e')])['filter']({'secret':![]})[_0x70a2('0x1f')](function(_0x10231e){if(_0x10231e[_0x70a2('0x60')]){var _0xf2dbe3=path[_0x70a2('0x54')](_0x370bfa,_0x10231e[_0x70a2('0x60')][_0x70a2('0x6f')]);if(fs[_0x70a2('0x70')](_0xf2dbe3)){fs[_0x70a2('0x71')](_0xf2dbe3)['pipe'](fs['createWriteStream'](path[_0x70a2('0x54')](_0x3bf8d1,_0x10231e['Attachment']['basename'])));}}return{'date':moment(_0x10231e[_0x70a2('0x6a')])[_0x70a2('0x48')](_0x70a2('0x49'))['toString'](),'sender':_0x10231e['direction']===_0x70a2('0x72')?_0x10231e[_0x70a2('0x5b')]?_0x10231e[_0x70a2('0x5b')][_0x70a2('0x5c')]:'System':_0x10231e[_0x70a2('0x5e')]['firstName']+(_0x10231e['Contact'][_0x70a2('0x73')]?'\x20'+_0x10231e['Contact'][_0x70a2('0x73')]:''),'body':_0x10231e['Attachment']?_0x10231e[_0x70a2('0x60')][_0x70a2('0x6f')]:_0x10231e[_0x70a2('0x36')],'direction':_0x10231e[_0x70a2('0x61')]===_0x70a2('0x72')?'A':'C','secret':_0x10231e[_0x70a2('0x62')],'read':_0x10231e[_0x70a2('0x63')],'attachment':_0x10231e[_0x70a2('0x60')]};})[_0x70a2('0x74')]()};return ejs[_0x70a2('0x75')](path[_0x70a2('0x54')](config[_0x70a2('0x57')],_0x70a2('0x55'),'views','downloadInteraction.ejs'),{'interaction':_0x1af87a})['then'](function(_0x1afe12){var _0x8eda28=path[_0x70a2('0x54')](_0x3bf8d1,_0x70a2('0x76')+_0x20cd26['id']+'-'+_0x36689b+_0x70a2('0x77'));var _0x3530e0={'path':_0x8eda28,'channel':_0x70a2('0x68'),'interactionId':_0x20cd26['id']};return pdf[_0x70a2('0x78')](_0x1afe12,_0x3530e0);})[_0x70a2('0x1a')](function(){return new BPromise(function(_0x12e4af,_0x222e12){zipdir(_0x3bf8d1,{'saveTo':_0x348999},function(_0x2ac94b,_0xe80575){if(_0x2ac94b)return _0x222e12(_0x2ac94b);return _0x12e4af(_0xe80575);});})[_0x70a2('0x1a')](function(){return new BPromise(function(_0x3f7551,_0x154572){rimraf(_0x3bf8d1,function(_0x4a3215){if(_0x4a3215)_0x154572(_0x4a3215);return _0x3f7551();});});})[_0x70a2('0x1a')](function(){return _0x528ad8[_0x70a2('0x52')](_0x348999,_0x1213c5,function(_0x5bb982){if(_0x5bb982){console['log'](_0x70a2('0x79'),_0x5bb982);}else{fs['unlinkSync'](_0x348999);}});});});}else{return _0x528ad8[_0x70a2('0x11')](0xc8);}})[_0x70a2('0x27')](handleError(_0x528ad8,null));};