1466a990b1a824181ace450a25ff13f5a2f784ae
[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 _0xcaab=['merge','WhatsappInteraction','find','create','body','destroy','describe','WhatsappMessage','ids','omit','findOne','order','sort','where','WhatsappInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','setTags','spread','color','emit','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','format','push','User','fullname','Contact','firstName','Attachment','Messages','secret','read','Account','Owner','get','Whatsapp','N.A.','createdAt','closed','closedAt','disposition','basename','createReadStream','pipe','createWriteStream','direction','out','System','lastName','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','rimraf','zip-dir','moment','bluebird','ejs','lodash','ioredis','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','defaults','./whatsappInteraction.socket','register','end','json','offset','undefined','limit','count','status','set','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','type','key','findAll','user','catch','show','params','keys','query','filters','attributes','intersection','model','fields','length','include'];(function(_0xf5eaa0,_0x5bfa29){var _0x47039e=function(_0x4b47a6){while(--_0x4b47a6){_0xf5eaa0['push'](_0xf5eaa0['shift']());}};_0x47039e(++_0x5bfa29);}(_0xcaab,0x1a7));var _0xbcaa=function(_0x435f69,_0x3c6f0a){_0x435f69=_0x435f69-0x0;var _0x23e3b8=_0xcaab[_0x435f69];return _0x23e3b8;};'use strict';var rimraf=require(_0xbcaa('0x0'));var zipdir=require(_0xbcaa('0x1'));var moment=require(_0xbcaa('0x2'));var BPromise=require(_0xbcaa('0x3'));var util=require('util');var path=require('path');var ejs=require(_0xbcaa('0x4'));var fs=require('fs');var _=require(_0xbcaa('0x5'));var Redis=require(_0xbcaa('0x6'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0xbcaa('0x7'));var logger=require(_0xbcaa('0x8'))(_0xbcaa('0x9'));var config=require('../../config/environment');var db=require(_0xbcaa('0xa'))['db'];config[_0xbcaa('0xb')]=_[_0xbcaa('0xc')](config[_0xbcaa('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbcaa('0xb')]));require(_0xbcaa('0xd'))[_0xbcaa('0xe')](socket);function respondWithStatusCode(_0x22d161,_0xac74a3){_0xac74a3=_0xac74a3||0xcc;return function(_0x636c08){if(_0x636c08){return _0x22d161['sendStatus'](_0xac74a3);}return _0x22d161['status'](_0xac74a3)[_0xbcaa('0xf')]();};}function respondWithResult(_0x205f9,_0x1cbf4f){_0x1cbf4f=_0x1cbf4f||0xc8;return function(_0x1bbf17){if(_0x1bbf17){return _0x205f9['status'](_0x1cbf4f)[_0xbcaa('0x10')](_0x1bbf17);}};}function respondWithFilteredResult(_0x9813fc,_0xe96b7){return function(_0x5b9b0a){if(_0x5b9b0a){var _0xdb25af=typeof _0xe96b7[_0xbcaa('0x11')]===_0xbcaa('0x12')&&typeof _0xe96b7[_0xbcaa('0x13')]===_0xbcaa('0x12');var _0x2d29c7=_0x5b9b0a[_0xbcaa('0x14')];var _0x108f7f=_0xdb25af?0x0:_0xe96b7['offset'];var _0x7ded0e=_0xdb25af?_0x5b9b0a['count']:_0xe96b7[_0xbcaa('0x11')]+_0xe96b7[_0xbcaa('0x13')];var _0x5f40c1;if(_0x7ded0e>=_0x2d29c7){_0x7ded0e=_0x2d29c7;_0x5f40c1=0xc8;}else{_0x5f40c1=0xce;}_0x9813fc[_0xbcaa('0x15')](_0x5f40c1);return _0x9813fc[_0xbcaa('0x16')]('Content-Range',_0x108f7f+'-'+_0x7ded0e+'/'+_0x2d29c7)['json'](_0x5b9b0a);}return null;};}function saveUpdates(_0x580102){return function(_0x3619ea){if(_0x3619ea){return _0x3619ea[_0xbcaa('0x17')](_0x580102)[_0xbcaa('0x18')](function(_0xd86169){return _0xd86169;});}return null;};}function removeEntity(_0x10449a){return function(_0xa2c005){if(_0xa2c005){return _0xa2c005['destroy']()[_0xbcaa('0x18')](function(){_0x10449a[_0xbcaa('0x15')](0xcc)[_0xbcaa('0xf')]();});}};}function handleEntityNotFound(_0x249160){return function(_0x14a1a0){if(!_0x14a1a0){_0x249160[_0xbcaa('0x19')](0x194);}return _0x14a1a0;};}function handleError(_0x430c39,_0x3e987a){_0x3e987a=_0x3e987a||0x1f4;return function(_0x52c051){logger[_0xbcaa('0x1a')](_0x52c051[_0xbcaa('0x1b')]);if(_0x52c051['name']){delete _0x52c051[_0xbcaa('0x1c')];}_0x430c39[_0xbcaa('0x15')](_0x3e987a)[_0xbcaa('0x1d')](_0x52c051);};}exports[_0xbcaa('0x1e')]=function(_0x2b77d2,_0x296a7b){var _0x2b22e9={};var _0x28784f=_[_0xbcaa('0x1f')](db['WhatsappInteraction'][_0xbcaa('0x20')],function(_0x13d6c9){return{'name':_0x13d6c9['fieldName'],'type':_0x13d6c9[_0xbcaa('0x21')][_0xbcaa('0x22')]};});_0x2b22e9=qs['getOptions'](_0x28784f,_0x2b77d2);return interaction[_0xbcaa('0x23')]('whatsapp',_0x2b77d2['query'],_0x2b77d2[_0xbcaa('0x24')],_0x2b22e9,_0x28784f)[_0xbcaa('0x18')](respondWithFilteredResult(_0x296a7b,_0x2b22e9))[_0xbcaa('0x25')](handleError(_0x296a7b,null));};exports[_0xbcaa('0x26')]=function(_0x3e26ac,_0x1f5830){var _0x2ac7f9={'raw':![],'where':{'id':_0x3e26ac[_0xbcaa('0x27')]['id']}},_0x1ec4d4={};_0x1ec4d4['model']=_[_0xbcaa('0x28')](db['WhatsappInteraction'][_0xbcaa('0x20')]);_0x1ec4d4[_0xbcaa('0x29')]=_[_0xbcaa('0x28')](_0x3e26ac[_0xbcaa('0x29')]);_0x1ec4d4[_0xbcaa('0x2a')]=_['intersection'](_0x1ec4d4['model'],_0x1ec4d4[_0xbcaa('0x29')]);_0x2ac7f9[_0xbcaa('0x2b')]=_[_0xbcaa('0x2c')](_0x1ec4d4[_0xbcaa('0x2d')],qs[_0xbcaa('0x2e')](_0x3e26ac[_0xbcaa('0x29')][_0xbcaa('0x2e')]));_0x2ac7f9['attributes']=_0x2ac7f9[_0xbcaa('0x2b')][_0xbcaa('0x2f')]?_0x2ac7f9[_0xbcaa('0x2b')]:_0x1ec4d4[_0xbcaa('0x2d')];if(_0x3e26ac[_0xbcaa('0x29')]['includeAll']){_0x2ac7f9[_0xbcaa('0x30')]=[{'all':!![]}];}_0x2ac7f9=_[_0xbcaa('0x31')]({},_0x2ac7f9,_0x3e26ac['options']);return db[_0xbcaa('0x32')][_0xbcaa('0x33')](_0x2ac7f9)[_0xbcaa('0x18')](handleEntityNotFound(_0x1f5830,null))[_0xbcaa('0x18')](respondWithResult(_0x1f5830,null))[_0xbcaa('0x25')](handleError(_0x1f5830,null));};exports[_0xbcaa('0x34')]=function(_0x4330a1,_0xf4b412){return db[_0xbcaa('0x32')][_0xbcaa('0x34')](_0x4330a1['body'],{})[_0xbcaa('0x18')](respondWithResult(_0xf4b412,0xc9))[_0xbcaa('0x25')](handleError(_0xf4b412,null));};exports['update']=function(_0x1eecd7,_0x44af6d){if(_0x1eecd7[_0xbcaa('0x35')]['id']){delete _0x1eecd7[_0xbcaa('0x35')]['id'];}return db['WhatsappInteraction'][_0xbcaa('0x33')]({'where':{'id':_0x1eecd7[_0xbcaa('0x27')]['id']}})[_0xbcaa('0x18')](handleEntityNotFound(_0x44af6d,null))[_0xbcaa('0x18')](saveUpdates(_0x1eecd7[_0xbcaa('0x35')],null))['then'](respondWithResult(_0x44af6d,null))[_0xbcaa('0x25')](handleError(_0x44af6d,null));};exports[_0xbcaa('0x36')]=function(_0x10133c,_0x3b3d7b){return db[_0xbcaa('0x32')][_0xbcaa('0x33')]({'where':{'id':_0x10133c[_0xbcaa('0x27')]['id']}})[_0xbcaa('0x18')](handleEntityNotFound(_0x3b3d7b,null))[_0xbcaa('0x18')](removeEntity(_0x3b3d7b,null))['catch'](handleError(_0x3b3d7b,null));};exports[_0xbcaa('0x37')]=function(_0x19e983,_0x47129e){return db[_0xbcaa('0x32')]['describe']()[_0xbcaa('0x18')](respondWithResult(_0x47129e,null))[_0xbcaa('0x25')](handleError(_0x47129e,null));};exports['addMessage']=function(_0x1a5ae9,_0x4ae3ae){return db[_0xbcaa('0x38')]['find']({'where':{'id':_0x1a5ae9[_0xbcaa('0x27')]['id']}})[_0xbcaa('0x18')](handleEntityNotFound(_0x4ae3ae,null))['then'](function(_0x535d02){if(_0x535d02){return _0x535d02['addMessage'](_0x1a5ae9['body'][_0xbcaa('0x39')],_[_0xbcaa('0x3a')](_0x1a5ae9[_0xbcaa('0x35')],[_0xbcaa('0x39'),'id'])||{});}})[_0xbcaa('0x18')](respondWithResult(_0x4ae3ae,null))[_0xbcaa('0x25')](handleError(_0x4ae3ae,null));};exports['getMessages']=function(_0x256376,_0x56f3b0){var _0x3be171={'raw':![],'where':{}};var _0x598d6b={};var _0x3a2021={'count':0x0,'rows':[]};return db[_0xbcaa('0x32')][_0xbcaa('0x3b')]({'where':{'id':_0x256376[_0xbcaa('0x27')]['id']}})[_0xbcaa('0x18')](handleEntityNotFound(_0x56f3b0,null))[_0xbcaa('0x18')](function(_0x11acde){if(_0x11acde){_0x598d6b[_0xbcaa('0x2d')]=_[_0xbcaa('0x28')](db['WhatsappMessage'][_0xbcaa('0x20')]);_0x598d6b[_0xbcaa('0x29')]=_[_0xbcaa('0x28')](_0x256376[_0xbcaa('0x29')]);_0x598d6b[_0xbcaa('0x2a')]=_[_0xbcaa('0x2c')](_0x598d6b[_0xbcaa('0x2d')],_0x598d6b[_0xbcaa('0x29')]);_0x3be171[_0xbcaa('0x2b')]=_[_0xbcaa('0x2c')](_0x598d6b[_0xbcaa('0x2d')],qs[_0xbcaa('0x2e')](_0x256376[_0xbcaa('0x29')]['fields']));_0x3be171[_0xbcaa('0x2b')]=_0x3be171[_0xbcaa('0x2b')][_0xbcaa('0x2f')]?_0x3be171[_0xbcaa('0x2b')]:_0x598d6b[_0xbcaa('0x2d')];if(!_0x256376[_0xbcaa('0x29')]['hasOwnProperty']('nolimit')){_0x3be171['limit']=qs[_0xbcaa('0x13')](_0x256376[_0xbcaa('0x29')][_0xbcaa('0x13')]);_0x3be171[_0xbcaa('0x11')]=qs['offset'](_0x256376[_0xbcaa('0x29')]['offset']);}_0x3be171[_0xbcaa('0x3c')]=qs[_0xbcaa('0x3d')](_0x256376[_0xbcaa('0x29')][_0xbcaa('0x3d')]);_0x3be171[_0xbcaa('0x3e')]=qs[_0xbcaa('0x2a')](_['pick'](_0x256376['query'],_0x598d6b['filters']));_0x3be171[_0xbcaa('0x3e')][_0xbcaa('0x3f')]=_0x11acde['id'];if(_0x256376[_0xbcaa('0x29')]['filter']){_0x3be171[_0xbcaa('0x3e')]=_[_0xbcaa('0x31')](_0x3be171[_0xbcaa('0x3e')],{'$or':_[_0xbcaa('0x1f')](_0x3be171[_0xbcaa('0x2b')],function(_0x12aad9){var _0x43b2a0={};_0x43b2a0[_0x12aad9]={'$like':'%'+_0x256376[_0xbcaa('0x29')][_0xbcaa('0x40')]+'%'};return _0x43b2a0;})});}if(_0x256376[_0xbcaa('0x29')][_0xbcaa('0x41')]){var _0x2ae9b9=_0x256376['query']['$gte'][_0xbcaa('0x42')](',');var _0x3e30b5={};_0x3e30b5[_0x2ae9b9[0x0]]={'$gte':moment(_0x2ae9b9[0x1])['format'](_0xbcaa('0x43'))};_0x3be171[_0xbcaa('0x3e')]=_['merge'](_0x3be171[_0xbcaa('0x3e')],_0x3e30b5);}_0x3be171=_[_0xbcaa('0x31')]({},_0x3be171,_0x256376[_0xbcaa('0x44')]);return db[_0xbcaa('0x38')][_0xbcaa('0x14')]({'where':_0x3be171[_0xbcaa('0x3e')]})[_0xbcaa('0x18')](function(_0x434935){_0x3a2021[_0xbcaa('0x14')]=_0x434935;if(_0x256376['query'][_0xbcaa('0x45')]){_0x3be171[_0xbcaa('0x30')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xbcaa('0x23')](_0x3be171);})[_0xbcaa('0x18')](function(_0x194e8b){_0x3a2021['rows']=_0x194e8b;return _0x3a2021;});}})[_0xbcaa('0x18')](respondWithFilteredResult(_0x56f3b0,_0x3be171))[_0xbcaa('0x25')](handleError(_0x56f3b0,null));};exports['addTags']=function(_0x227f03,_0x6105e){return db[_0xbcaa('0x32')][_0xbcaa('0x33')]({'where':{'id':_0x227f03[_0xbcaa('0x27')]['id']}})[_0xbcaa('0x18')](handleEntityNotFound(_0x6105e,null))[_0xbcaa('0x18')](function(_0xfa8563){if(_0xfa8563){return _0xfa8563[_0xbcaa('0x46')](_0x227f03[_0xbcaa('0x35')][_0xbcaa('0x39')],_[_0xbcaa('0x3a')](_0x227f03[_0xbcaa('0x35')],[_0xbcaa('0x39'),'id'])||{})[_0xbcaa('0x47')](function(){return db['Tag'][_0xbcaa('0x23')]({'attributes':['id',_0xbcaa('0x1c'),_0xbcaa('0x48')],'where':{'id':_0x227f03[_0xbcaa('0x35')][_0xbcaa('0x39')]}});})[_0xbcaa('0x18')](function(_0x2e748f){socket[_0xbcaa('0x49')]('whatsappInteractionTags:save',{'id':Number(_0x227f03['params']['id']),'tags':_0x2e748f||[]});return{'id':Number(_0x227f03[_0xbcaa('0x27')]['id']),'tags':_0x2e748f||[]};});}})['then'](respondWithResult(_0x6105e,null))[_0xbcaa('0x25')](handleError(_0x6105e,null));};exports[_0xbcaa('0x4a')]=function(_0x520bd0,_0x20427f){return db[_0xbcaa('0x32')][_0xbcaa('0x33')]({'where':{'id':_0x520bd0[_0xbcaa('0x27')]['id']}})[_0xbcaa('0x18')](handleEntityNotFound(_0x20427f,null))['then'](function(_0x169790){if(_0x169790){return _0x169790[_0xbcaa('0x4a')](_0x520bd0['query'][_0xbcaa('0x39')]);}})['then'](respondWithStatusCode(_0x20427f,null))['catch'](handleError(_0x20427f,null));};exports[_0xbcaa('0x4b')]=function(_0x2b4d52,_0x13c01b){var _0xaea202=moment()[_0xbcaa('0x4c')]()[_0xbcaa('0x4d')]();var _0x970857=path[_0xbcaa('0x4e')](config[_0xbcaa('0x4f')],_0xbcaa('0x50'),_0xbcaa('0x51'),_0xbcaa('0x52'));var _0x591ab8=path['join'](config[_0xbcaa('0x4f')],_0xbcaa('0x50'),'files',_0xbcaa('0x53'));var _0x575e48=path[_0xbcaa('0x4e')](_0x970857,_0xaea202);var _0x45d0c7=util[_0xbcaa('0x54')]('transcript-%d-%s.zip',_0x2b4d52[_0xbcaa('0x27')]['id'],_0xaea202);var _0x1b1f78=path[_0xbcaa('0x4e')](_0x970857,_0x45d0c7);var _0x4242c8=[];_0x4242c8[_0xbcaa('0x55')]({'model':db['User'],'as':_0xbcaa('0x56'),'attributes':['id',_0xbcaa('0x57')],'raw':!![]});_0x4242c8['push']({'model':db['CmContact'],'as':_0xbcaa('0x58'),'attributes':['id',_0xbcaa('0x59'),'lastName'],'raw':!![]});if(_0x2b4d52['query'][_0xbcaa('0x53')]){_0x4242c8['push']({'model':db[_0xbcaa('0x5a')],'as':_0xbcaa('0x5a'),'raw':!![]});}var _0x2f2ea7=[{'model':db['WhatsappMessage'],'as':_0xbcaa('0x5b'),'attributes':['id',_0xbcaa('0x35'),'createdAt','direction',_0xbcaa('0x5c'),_0xbcaa('0x5d')],'include':_0x4242c8}];_0x2f2ea7[_0xbcaa('0x55')]({'model':db['WhatsappAccount'],'as':_0xbcaa('0x5e'),'attributes':['id',_0xbcaa('0x1c')]});_0x2f2ea7[_0xbcaa('0x55')]({'model':db['User'],'as':_0xbcaa('0x5f'),'attributes':['id',_0xbcaa('0x57')]});return db[_0xbcaa('0x32')][_0xbcaa('0x33')]({'where':{'id':_0x2b4d52['params']['id']},'include':_0x2f2ea7})[_0xbcaa('0x18')](handleEntityNotFound(_0x13c01b,null))[_0xbcaa('0x18')](function(_0x3a4f9f){if(_0x3a4f9f){var _0x5a470b=_0x3a4f9f[_0xbcaa('0x60')]({'plain':!![]});fs['mkdirSync'](_0x575e48);var _0x3ea5eb={'channel':_0xbcaa('0x61'),'account':_0x5a470b[_0xbcaa('0x5e')][_0xbcaa('0x1c')],'agent':_0x5a470b[_0xbcaa('0x5f')]?_0x5a470b[_0xbcaa('0x5f')][_0xbcaa('0x57')]:_0xbcaa('0x62'),'createdAt':moment(_0x5a470b[_0xbcaa('0x63')])[_0xbcaa('0x54')](_0xbcaa('0x43'))['toString'](),'closedAt':_0x5a470b[_0xbcaa('0x64')]?moment(_0x5a470b[_0xbcaa('0x65')])[_0xbcaa('0x54')](_0xbcaa('0x43'))['toString']():'','disposition':_0x5a470b[_0xbcaa('0x66')],'messages':_(_0x5a470b[_0xbcaa('0x5b')])[_0xbcaa('0x40')]({'secret':![]})['map'](function(_0x33561d){if(_0x33561d[_0xbcaa('0x5a')]){var _0x42a4ea=path[_0xbcaa('0x4e')](_0x591ab8,_0x33561d[_0xbcaa('0x5a')][_0xbcaa('0x67')]);if(fs['existsSync'](_0x42a4ea)){fs[_0xbcaa('0x68')](_0x42a4ea)[_0xbcaa('0x69')](fs[_0xbcaa('0x6a')](path[_0xbcaa('0x4e')](_0x575e48,_0x33561d[_0xbcaa('0x5a')][_0xbcaa('0x67')])));}}return{'date':moment(_0x33561d[_0xbcaa('0x63')])[_0xbcaa('0x54')](_0xbcaa('0x43'))[_0xbcaa('0x4d')](),'sender':_0x33561d[_0xbcaa('0x6b')]===_0xbcaa('0x6c')?_0x33561d[_0xbcaa('0x56')]?_0x33561d[_0xbcaa('0x56')][_0xbcaa('0x57')]:_0xbcaa('0x6d'):_0x33561d[_0xbcaa('0x58')][_0xbcaa('0x59')]+(_0x33561d['Contact'][_0xbcaa('0x6e')]?'\x20'+_0x33561d[_0xbcaa('0x58')]['lastName']:''),'body':_0x33561d['Attachment']?_0x33561d[_0xbcaa('0x5a')][_0xbcaa('0x67')]:_0x33561d[_0xbcaa('0x35')],'direction':_0x33561d[_0xbcaa('0x6b')]==='out'?'A':'C','secret':_0x33561d[_0xbcaa('0x5c')],'read':_0x33561d['read'],'attachment':_0x33561d[_0xbcaa('0x5a')]};})['value']()};return ejs[_0xbcaa('0x6f')](path[_0xbcaa('0x4e')](config['root'],'server',_0xbcaa('0x70'),_0xbcaa('0x71')),{'interaction':_0x3ea5eb})[_0xbcaa('0x18')](function(_0x2a170a){var _0x5bd126=path['join'](_0x575e48,_0xbcaa('0x72')+_0x5a470b['id']+'-'+_0xaea202+'.pdf');var _0x5eb95b={'path':_0x5bd126,'channel':_0xbcaa('0x61'),'interactionId':_0x5a470b['id']};return pdf[_0xbcaa('0x73')](_0x2a170a,_0x5eb95b);})['then'](function(){return new BPromise(function(_0x17a00e,_0x5d1698){zipdir(_0x575e48,{'saveTo':_0x1b1f78},function(_0x4c24c8,_0x5f2284){if(_0x4c24c8)return _0x5d1698(_0x4c24c8);return _0x17a00e(_0x5f2284);});})[_0xbcaa('0x18')](function(){return new BPromise(function(_0x3a94cd,_0x4682a1){rimraf(_0x575e48,function(_0x4d95f1){if(_0x4d95f1)_0x4682a1(_0x4d95f1);return _0x3a94cd();});});})[_0xbcaa('0x18')](function(){return _0x13c01b[_0xbcaa('0x4b')](_0x1b1f78,_0x45d0c7,function(_0x3c24a2){if(_0x3c24a2){console[_0xbcaa('0x74')](_0xbcaa('0x75'),_0x3c24a2);}else{fs['unlinkSync'](_0x1b1f78);}});});});}else{return _0x13c01b[_0xbcaa('0x19')](0xc8);}})[_0xbcaa('0x25')](handleError(_0x13c01b,null));};