Built motion from commit eddce310.|2.6.12
[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 _0x992c=['count','set','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','whatsapp','query','user','show','params','model','keys','WhatsappInteraction','filters','attributes','intersection','fields','includeAll','include','options','create','catch','update','body','find','destroy','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','nolimit','order','sort','where','pick','WhatsappInteractionId','filter','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','addTags','setTags','omit','spread','Tag','findAll','color','emit','whatsappInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','push','CmContact','firstName','lastName','Attachment','createdAt','secret','WhatsappAccount','Account','Owner','get','Whatsapp','N.A.','closed','closedAt','disposition','Messages','basename','existsSync','direction','out','fullname','System','Contact','value','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','rimraf','zip-dir','moment','bluebird','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined'];(function(_0x30494f,_0x3c4a5a){var _0x114fcf=function(_0x5822db){while(--_0x5822db){_0x30494f['push'](_0x30494f['shift']());}};_0x114fcf(++_0x3c4a5a);}(_0x992c,0x163));var _0xc992=function(_0x3f74b6,_0x6351ea){_0x3f74b6=_0x3f74b6-0x0;var _0xe5f66f=_0x992c[_0x3f74b6];return _0xe5f66f;};'use strict';var rimraf=require(_0xc992('0x0'));var zipdir=require(_0xc992('0x1'));var moment=require(_0xc992('0x2'));var BPromise=require(_0xc992('0x3'));var util=require('util');var path=require('path');var ejs=require(_0xc992('0x4'));var fs=require('fs');var _=require(_0xc992('0x5'));var Redis=require(_0xc992('0x6'));var interaction=require(_0xc992('0x7'));var qs=require('../../components/parsers/qs');var pdf=require(_0xc992('0x8'));var logger=require(_0xc992('0x9'))('api');var config=require(_0xc992('0xa'));var db=require(_0xc992('0xb'))['db'];config[_0xc992('0xc')]=_[_0xc992('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc992('0xc')]));require(_0xc992('0xe'))[_0xc992('0xf')](socket);function respondWithStatusCode(_0x4b67c1,_0xfe94ee){_0xfe94ee=_0xfe94ee||0xcc;return function(_0x3817ad){if(_0x3817ad){return _0x4b67c1[_0xc992('0x10')](_0xfe94ee);}return _0x4b67c1[_0xc992('0x11')](_0xfe94ee)[_0xc992('0x12')]();};}function respondWithResult(_0x3869c5,_0x460e92){_0x460e92=_0x460e92||0xc8;return function(_0x33390d){if(_0x33390d){return _0x3869c5[_0xc992('0x11')](_0x460e92)[_0xc992('0x13')](_0x33390d);}};}function respondWithFilteredResult(_0x5ee78a,_0x53fed6){return function(_0x6db3b0){if(_0x6db3b0){var _0x4ee320=typeof _0x53fed6[_0xc992('0x14')]==='undefined'&&typeof _0x53fed6[_0xc992('0x15')]===_0xc992('0x16');var _0x5f3ad9=_0x6db3b0[_0xc992('0x17')];var _0x1b6dfc=_0x4ee320?0x0:_0x53fed6[_0xc992('0x14')];var _0x79fec0=_0x4ee320?_0x6db3b0['count']:_0x53fed6[_0xc992('0x14')]+_0x53fed6['limit'];var _0x350bc4;if(_0x79fec0>=_0x5f3ad9){_0x79fec0=_0x5f3ad9;_0x350bc4=0xc8;}else{_0x350bc4=0xce;}_0x5ee78a['status'](_0x350bc4);return _0x5ee78a[_0xc992('0x18')]('Content-Range',_0x1b6dfc+'-'+_0x79fec0+'/'+_0x5f3ad9)['json'](_0x6db3b0);}return null;};}function saveUpdates(_0x412c9f){return function(_0x115387){if(_0x115387){return _0x115387['update'](_0x412c9f)[_0xc992('0x19')](function(_0x258738){return _0x258738;});}return null;};}function removeEntity(_0x2266ad){return function(_0xc6fafc){if(_0xc6fafc){return _0xc6fafc['destroy']()[_0xc992('0x19')](function(){_0x2266ad[_0xc992('0x11')](0xcc)[_0xc992('0x12')]();});}};}function handleEntityNotFound(_0x43bcef){return function(_0x3aca2e){if(!_0x3aca2e){_0x43bcef['sendStatus'](0x194);}return _0x3aca2e;};}function handleError(_0x4a7056,_0x303d58){_0x303d58=_0x303d58||0x1f4;return function(_0x3b7b20){logger[_0xc992('0x1a')](_0x3b7b20[_0xc992('0x1b')]);if(_0x3b7b20[_0xc992('0x1c')]){delete _0x3b7b20[_0xc992('0x1c')];}_0x4a7056['status'](_0x303d58)[_0xc992('0x1d')](_0x3b7b20);};}exports[_0xc992('0x1e')]=function(_0x5a72d2,_0x1060fc){var _0x431a1d={};var _0x5bbee6=_[_0xc992('0x1f')](db['WhatsappInteraction'][_0xc992('0x20')],function(_0x5c71e6){return{'name':_0x5c71e6[_0xc992('0x21')],'type':_0x5c71e6[_0xc992('0x22')][_0xc992('0x23')]};});_0x431a1d=qs[_0xc992('0x24')](_0x5bbee6,_0x5a72d2);return interaction['findAll'](_0xc992('0x25'),_0x5a72d2[_0xc992('0x26')],_0x5a72d2[_0xc992('0x27')],_0x431a1d,_0x5bbee6)[_0xc992('0x19')](respondWithFilteredResult(_0x1060fc,_0x431a1d))['catch'](handleError(_0x1060fc,null));};exports[_0xc992('0x28')]=function(_0x3891e4,_0x44578e){var _0x13d7a6={'raw':![],'where':{'id':_0x3891e4[_0xc992('0x29')]['id']}},_0x2c0f9d={};_0x2c0f9d[_0xc992('0x2a')]=_[_0xc992('0x2b')](db[_0xc992('0x2c')]['rawAttributes']);_0x2c0f9d['query']=_['keys'](_0x3891e4[_0xc992('0x26')]);_0x2c0f9d[_0xc992('0x2d')]=_['intersection'](_0x2c0f9d[_0xc992('0x2a')],_0x2c0f9d[_0xc992('0x26')]);_0x13d7a6[_0xc992('0x2e')]=_[_0xc992('0x2f')](_0x2c0f9d[_0xc992('0x2a')],qs[_0xc992('0x30')](_0x3891e4[_0xc992('0x26')]['fields']));_0x13d7a6[_0xc992('0x2e')]=_0x13d7a6[_0xc992('0x2e')]['length']?_0x13d7a6[_0xc992('0x2e')]:_0x2c0f9d[_0xc992('0x2a')];if(_0x3891e4[_0xc992('0x26')][_0xc992('0x31')]){_0x13d7a6[_0xc992('0x32')]=[{'all':!![]}];}_0x13d7a6=_['merge']({},_0x13d7a6,_0x3891e4[_0xc992('0x33')]);return db[_0xc992('0x2c')]['find'](_0x13d7a6)['then'](handleEntityNotFound(_0x44578e,null))[_0xc992('0x19')](respondWithResult(_0x44578e,null))['catch'](handleError(_0x44578e,null));};exports[_0xc992('0x34')]=function(_0x1031e2,_0x6ba67d){return db['WhatsappInteraction'][_0xc992('0x34')](_0x1031e2['body'],{})[_0xc992('0x19')](respondWithResult(_0x6ba67d,0xc9))[_0xc992('0x35')](handleError(_0x6ba67d,null));};exports[_0xc992('0x36')]=function(_0x466042,_0x404c29){if(_0x466042[_0xc992('0x37')]['id']){delete _0x466042[_0xc992('0x37')]['id'];}return db['WhatsappInteraction'][_0xc992('0x38')]({'where':{'id':_0x466042['params']['id']}})[_0xc992('0x19')](handleEntityNotFound(_0x404c29,null))[_0xc992('0x19')](saveUpdates(_0x466042[_0xc992('0x37')],null))['then'](respondWithResult(_0x404c29,null))[_0xc992('0x35')](handleError(_0x404c29,null));};exports[_0xc992('0x39')]=function(_0x5e9d40,_0x1b31f0){return db[_0xc992('0x2c')][_0xc992('0x38')]({'where':{'id':_0x5e9d40[_0xc992('0x29')]['id']}})['then'](handleEntityNotFound(_0x1b31f0,null))[_0xc992('0x19')](removeEntity(_0x1b31f0,null))[_0xc992('0x35')](handleError(_0x1b31f0,null));};exports[_0xc992('0x3a')]=function(_0x9ecd07,_0x4b1393){return db[_0xc992('0x2c')][_0xc992('0x3a')]()[_0xc992('0x19')](respondWithResult(_0x4b1393,null))[_0xc992('0x35')](handleError(_0x4b1393,null));};exports[_0xc992('0x3b')]=function(_0x3667cf,_0x1ecf12){return db[_0xc992('0x3c')][_0xc992('0x38')]({'where':{'id':_0x3667cf['params']['id']}})[_0xc992('0x19')](handleEntityNotFound(_0x1ecf12,null))[_0xc992('0x19')](function(_0x566a06){if(_0x566a06){return _0x566a06[_0xc992('0x3b')](_0x3667cf[_0xc992('0x37')][_0xc992('0x3d')],_['omit'](_0x3667cf['body'],['ids','id'])||{});}})[_0xc992('0x19')](respondWithResult(_0x1ecf12,null))[_0xc992('0x35')](handleError(_0x1ecf12,null));};exports[_0xc992('0x3e')]=function(_0x2bcc98,_0x3d5a2b){var _0x35a0c8={'raw':![],'where':{}};var _0xed15e7={};var _0x29d960={'count':0x0,'rows':[]};return db[_0xc992('0x2c')][_0xc992('0x3f')]({'where':{'id':_0x2bcc98[_0xc992('0x29')]['id']}})[_0xc992('0x19')](handleEntityNotFound(_0x3d5a2b,null))[_0xc992('0x19')](function(_0x46c0ce){if(_0x46c0ce){_0xed15e7[_0xc992('0x2a')]=_[_0xc992('0x2b')](db[_0xc992('0x3c')][_0xc992('0x20')]);_0xed15e7['query']=_[_0xc992('0x2b')](_0x2bcc98[_0xc992('0x26')]);_0xed15e7[_0xc992('0x2d')]=_[_0xc992('0x2f')](_0xed15e7[_0xc992('0x2a')],_0xed15e7['query']);_0x35a0c8['attributes']=_[_0xc992('0x2f')](_0xed15e7[_0xc992('0x2a')],qs[_0xc992('0x30')](_0x2bcc98[_0xc992('0x26')][_0xc992('0x30')]));_0x35a0c8[_0xc992('0x2e')]=_0x35a0c8[_0xc992('0x2e')]['length']?_0x35a0c8[_0xc992('0x2e')]:_0xed15e7['model'];if(!_0x2bcc98['query']['hasOwnProperty'](_0xc992('0x40'))){_0x35a0c8[_0xc992('0x15')]=qs[_0xc992('0x15')](_0x2bcc98[_0xc992('0x26')][_0xc992('0x15')]);_0x35a0c8['offset']=qs['offset'](_0x2bcc98['query'][_0xc992('0x14')]);}_0x35a0c8[_0xc992('0x41')]=qs[_0xc992('0x42')](_0x2bcc98[_0xc992('0x26')][_0xc992('0x42')]);_0x35a0c8[_0xc992('0x43')]=qs[_0xc992('0x2d')](_[_0xc992('0x44')](_0x2bcc98[_0xc992('0x26')],_0xed15e7[_0xc992('0x2d')]));_0x35a0c8[_0xc992('0x43')][_0xc992('0x45')]=_0x46c0ce['id'];if(_0x2bcc98[_0xc992('0x26')][_0xc992('0x46')]){_0x35a0c8[_0xc992('0x43')]=_['merge'](_0x35a0c8['where'],{'$or':_['map'](_0x35a0c8[_0xc992('0x2e')],function(_0x440f16){var _0x2883b8={};_0x2883b8[_0x440f16]={'$like':'%'+_0x2bcc98[_0xc992('0x26')]['filter']+'%'};return _0x2883b8;})});}if(_0x2bcc98[_0xc992('0x26')]['$gte']){var _0x554acb=_0x2bcc98[_0xc992('0x26')]['$gte'][_0xc992('0x47')](',');var _0x32b7c3={};_0x32b7c3[_0x554acb[0x0]]={'$gte':moment(_0x554acb[0x1])[_0xc992('0x48')](_0xc992('0x49'))};_0x35a0c8[_0xc992('0x43')]=_['merge'](_0x35a0c8[_0xc992('0x43')],_0x32b7c3);}_0x35a0c8=_[_0xc992('0x4a')]({},_0x35a0c8,_0x2bcc98['options']);return db[_0xc992('0x3c')][_0xc992('0x17')]({'where':_0x35a0c8[_0xc992('0x43')]})[_0xc992('0x19')](function(_0x36d298){_0x29d960[_0xc992('0x17')]=_0x36d298;if(_0x2bcc98[_0xc992('0x26')][_0xc992('0x31')]){_0x35a0c8[_0xc992('0x32')]=[{'all':!![]}];}return db[_0xc992('0x3c')]['findAll'](_0x35a0c8);})['then'](function(_0x93904b){_0x29d960['rows']=_0x93904b;return _0x29d960;});}})[_0xc992('0x19')](respondWithFilteredResult(_0x3d5a2b,_0x35a0c8))['catch'](handleError(_0x3d5a2b,null));};exports[_0xc992('0x4b')]=function(_0x7bcd4b,_0x414b01){return db[_0xc992('0x2c')]['find']({'where':{'id':_0x7bcd4b[_0xc992('0x29')]['id']}})[_0xc992('0x19')](handleEntityNotFound(_0x414b01,null))[_0xc992('0x19')](function(_0x319437){if(_0x319437){return _0x319437[_0xc992('0x4c')](_0x7bcd4b[_0xc992('0x37')][_0xc992('0x3d')],_[_0xc992('0x4d')](_0x7bcd4b[_0xc992('0x37')],[_0xc992('0x3d'),'id'])||{})[_0xc992('0x4e')](function(){return db[_0xc992('0x4f')][_0xc992('0x50')]({'attributes':['id',_0xc992('0x1c'),_0xc992('0x51')],'where':{'id':_0x7bcd4b[_0xc992('0x37')][_0xc992('0x3d')]}});})[_0xc992('0x19')](function(_0x48e03f){socket[_0xc992('0x52')](_0xc992('0x53'),{'id':Number(_0x7bcd4b['params']['id']),'tags':_0x48e03f||[]});return{'id':Number(_0x7bcd4b[_0xc992('0x29')]['id']),'tags':_0x48e03f||[]};});}})['then'](respondWithResult(_0x414b01,null))[_0xc992('0x35')](handleError(_0x414b01,null));};exports[_0xc992('0x54')]=function(_0xefe5b,_0x383af5){return db[_0xc992('0x2c')][_0xc992('0x38')]({'where':{'id':_0xefe5b[_0xc992('0x29')]['id']}})[_0xc992('0x19')](handleEntityNotFound(_0x383af5,null))['then'](function(_0x8dd157){if(_0x8dd157){return _0x8dd157['removeTags'](_0xefe5b['query']['ids']);}})['then'](respondWithStatusCode(_0x383af5,null))[_0xc992('0x35')](handleError(_0x383af5,null));};exports[_0xc992('0x55')]=function(_0x62cd33,_0x3cb35f){var _0x21d4d7=moment()['unix']()[_0xc992('0x56')]();var _0x248b49=path[_0xc992('0x57')](config[_0xc992('0x58')],_0xc992('0x59'),_0xc992('0x5a'),_0xc992('0x5b'));var _0x1fa60a=path[_0xc992('0x57')](config[_0xc992('0x58')],_0xc992('0x59'),'files',_0xc992('0x5c'));var _0x2694be=path[_0xc992('0x57')](_0x248b49,_0x21d4d7);var _0x4c7a4b=util[_0xc992('0x48')](_0xc992('0x5d'),_0x62cd33['params']['id'],_0x21d4d7);var _0xa602ae=path[_0xc992('0x57')](_0x248b49,_0x4c7a4b);var _0x57b955=[];_0x57b955['push']({'model':db['User'],'as':_0xc992('0x5e'),'attributes':['id','fullname'],'raw':!![]});_0x57b955[_0xc992('0x5f')]({'model':db[_0xc992('0x60')],'as':'Contact','attributes':['id',_0xc992('0x61'),_0xc992('0x62')],'raw':!![]});if(_0x62cd33[_0xc992('0x26')][_0xc992('0x5c')]){_0x57b955[_0xc992('0x5f')]({'model':db[_0xc992('0x63')],'as':_0xc992('0x63'),'raw':!![]});}var _0x34feb7=[{'model':db[_0xc992('0x3c')],'as':'Messages','attributes':['id','body',_0xc992('0x64'),'direction',_0xc992('0x65'),'read'],'include':_0x57b955}];_0x34feb7[_0xc992('0x5f')]({'model':db[_0xc992('0x66')],'as':_0xc992('0x67'),'attributes':['id','name']});_0x34feb7[_0xc992('0x5f')]({'model':db[_0xc992('0x5e')],'as':_0xc992('0x68'),'attributes':['id','fullname']});return db[_0xc992('0x2c')]['find']({'where':{'id':_0x62cd33['params']['id']},'include':_0x34feb7})[_0xc992('0x19')](handleEntityNotFound(_0x3cb35f,null))['then'](function(_0x52eca3){if(_0x52eca3){var _0x5503c3=_0x52eca3[_0xc992('0x69')]({'plain':!![]});fs['mkdirSync'](_0x2694be);var _0x1d6bbc={'channel':_0xc992('0x6a'),'account':_0x5503c3[_0xc992('0x67')][_0xc992('0x1c')],'agent':_0x5503c3[_0xc992('0x68')]?_0x5503c3['Owner']['fullname']:_0xc992('0x6b'),'createdAt':moment(_0x5503c3[_0xc992('0x64')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xc992('0x56')](),'closedAt':_0x5503c3[_0xc992('0x6c')]?moment(_0x5503c3[_0xc992('0x6d')])[_0xc992('0x48')](_0xc992('0x49'))[_0xc992('0x56')]():'','disposition':_0x5503c3[_0xc992('0x6e')],'messages':_(_0x5503c3[_0xc992('0x6f')])[_0xc992('0x46')]({'secret':![]})[_0xc992('0x1f')](function(_0x543dc3){if(_0x543dc3[_0xc992('0x63')]){var _0x271c01=path['join'](_0x1fa60a,_0x543dc3[_0xc992('0x63')][_0xc992('0x70')]);if(fs[_0xc992('0x71')](_0x271c01)){fs['createReadStream'](_0x271c01)['pipe'](fs['createWriteStream'](path[_0xc992('0x57')](_0x2694be,_0x543dc3['Attachment'][_0xc992('0x70')])));}}return{'date':moment(_0x543dc3['createdAt'])[_0xc992('0x48')]('YYYY-MM-DD\x20HH:mm:ss')[_0xc992('0x56')](),'sender':_0x543dc3[_0xc992('0x72')]===_0xc992('0x73')?_0x543dc3[_0xc992('0x5e')]?_0x543dc3[_0xc992('0x5e')][_0xc992('0x74')]:_0xc992('0x75'):_0x543dc3[_0xc992('0x76')]['firstName']+(_0x543dc3[_0xc992('0x76')][_0xc992('0x62')]?'\x20'+_0x543dc3[_0xc992('0x76')][_0xc992('0x62')]:''),'body':_0x543dc3[_0xc992('0x63')]?_0x543dc3[_0xc992('0x63')][_0xc992('0x70')]:_0x543dc3['body'],'direction':_0x543dc3['direction']===_0xc992('0x73')?'A':'C','secret':_0x543dc3[_0xc992('0x65')],'read':_0x543dc3['read'],'attachment':_0x543dc3[_0xc992('0x63')]};})[_0xc992('0x77')]()};return ejs[_0xc992('0x78')](path[_0xc992('0x57')](config[_0xc992('0x58')],_0xc992('0x59'),_0xc992('0x79'),_0xc992('0x7a')),{'interaction':_0x1d6bbc})[_0xc992('0x19')](function(_0x256173){var _0x40e3b7=path[_0xc992('0x57')](_0x2694be,'transcript-'+_0x5503c3['id']+'-'+_0x21d4d7+_0xc992('0x7b'));var _0x5e9449={'path':_0x40e3b7,'channel':_0xc992('0x6a'),'interactionId':_0x5503c3['id']};return pdf[_0xc992('0x7c')](_0x256173,_0x5e9449);})['then'](function(){return new BPromise(function(_0x192f2f,_0x34efe3){zipdir(_0x2694be,{'saveTo':_0xa602ae},function(_0xe157da,_0x5de5f6){if(_0xe157da)return _0x34efe3(_0xe157da);return _0x192f2f(_0x5de5f6);});})['then'](function(){return new BPromise(function(_0x1b2bec,_0x395032){rimraf(_0x2694be,function(_0x320891){if(_0x320891)_0x395032(_0x320891);return _0x1b2bec();});});})['then'](function(){return _0x3cb35f[_0xc992('0x55')](_0xa602ae,_0x4c7a4b,function(_0x213197){if(_0x213197){console[_0xc992('0x7d')]('err',_0x213197);}else{fs['unlinkSync'](_0xa602ae);}});});});}else{return _0x3cb35f[_0xc992('0x10')](0xc8);}})[_0xc992('0x35')](handleError(_0x3cb35f,null));};