bbf64e1cb96570346eb8bca3bcc390eb5ddffe15
[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 _0x977f=['limit','undefined','count','offset','set','Content-Range','error','name','send','rawAttributes','type','key','getOptions','findAll','query','user','then','catch','show','params','model','keys','WhatsappInteraction','filters','intersection','attributes','fields','length','includeAll','merge','options','create','body','find','destroy','describe','addMessage','WhatsappMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','WhatsappInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','addTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','root','server','tmp','files','join','transcript-%d-%s.zip','push','User','fullname','Contact','firstName','lastName','attachments','Attachment','Messages','createdAt','secret','read','WhatsappAccount','Account','mkdirSync','Whatsapp','Owner','closed','closedAt','basename','existsSync','pipe','createWriteStream','direction','System','out','value','views','downloadInteraction.ejs','transcript-','err','unlinkSync','rimraf','zip-dir','moment','util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json'];(function(_0x10d8bb,_0x1b9a0a){var _0x1fb518=function(_0x594478){while(--_0x594478){_0x10d8bb['push'](_0x10d8bb['shift']());}};_0x1fb518(++_0x1b9a0a);}(_0x977f,0x1d7));var _0xf977=function(_0x59fc22,_0x4256a9){_0x59fc22=_0x59fc22-0x0;var _0x442363=_0x977f[_0x59fc22];return _0x442363;};'use strict';var rimraf=require(_0xf977('0x0'));var zipdir=require(_0xf977('0x1'));var moment=require(_0xf977('0x2'));var BPromise=require('bluebird');var util=require(_0xf977('0x3'));var path=require(_0xf977('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xf977('0x5'));var Redis=require(_0xf977('0x6'));var interaction=require('../../components/interaction/service');var qs=require(_0xf977('0x7'));var pdf=require('../../components/export/pdf');var logger=require(_0xf977('0x8'))(_0xf977('0x9'));var config=require(_0xf977('0xa'));var db=require(_0xf977('0xb'))['db'];config[_0xf977('0xc')]=_[_0xf977('0xd')](config[_0xf977('0xc')],{'host':_0xf977('0xe'),'port':0x18eb});var socket=require(_0xf977('0xf'))(new Redis(config[_0xf977('0xc')]));require('./whatsappInteraction.socket')[_0xf977('0x10')](socket);function respondWithStatusCode(_0x2bbeb1,_0x3060f2){_0x3060f2=_0x3060f2||0xcc;return function(_0x1f78af){if(_0x1f78af){return _0x2bbeb1[_0xf977('0x11')](_0x3060f2);}return _0x2bbeb1[_0xf977('0x12')](_0x3060f2)[_0xf977('0x13')]();};}function respondWithResult(_0xb733b0,_0x173f39){_0x173f39=_0x173f39||0xc8;return function(_0x5394e9){if(_0x5394e9){return _0xb733b0['status'](_0x173f39)[_0xf977('0x14')](_0x5394e9);}};}function respondWithFilteredResult(_0x44e8dd,_0x4bdc7c){return function(_0x1ee804){if(_0x1ee804){var _0x5bea6f=typeof _0x4bdc7c['offset']==='undefined'&&typeof _0x4bdc7c[_0xf977('0x15')]===_0xf977('0x16');var _0x348afb=_0x1ee804[_0xf977('0x17')];var _0x5ae6df=_0x5bea6f?0x0:_0x4bdc7c[_0xf977('0x18')];var _0x3b34f6=_0x5bea6f?_0x1ee804[_0xf977('0x17')]:_0x4bdc7c[_0xf977('0x18')]+_0x4bdc7c[_0xf977('0x15')];var _0x2d9f14;if(_0x3b34f6>=_0x348afb){_0x3b34f6=_0x348afb;_0x2d9f14=0xc8;}else{_0x2d9f14=0xce;}_0x44e8dd['status'](_0x2d9f14);return _0x44e8dd[_0xf977('0x19')](_0xf977('0x1a'),_0x5ae6df+'-'+_0x3b34f6+'/'+_0x348afb)['json'](_0x1ee804);}return null;};}function saveUpdates(_0x5b1568){return function(_0x2ce345){if(_0x2ce345){return _0x2ce345['update'](_0x5b1568)['then'](function(_0x202e2a){return _0x202e2a;});}return null;};}function removeEntity(_0x5eb2f1){return function(_0x1e64d0){if(_0x1e64d0){return _0x1e64d0['destroy']()['then'](function(){_0x5eb2f1[_0xf977('0x12')](0xcc)[_0xf977('0x13')]();});}};}function handleEntityNotFound(_0x5d9b12){return function(_0x45ac11){if(!_0x45ac11){_0x5d9b12['sendStatus'](0x194);}return _0x45ac11;};}function handleError(_0x453aa0,_0x46f2e7){_0x46f2e7=_0x46f2e7||0x1f4;return function(_0x17ad84){logger[_0xf977('0x1b')](_0x17ad84['stack']);if(_0x17ad84[_0xf977('0x1c')]){delete _0x17ad84[_0xf977('0x1c')];}_0x453aa0[_0xf977('0x12')](_0x46f2e7)[_0xf977('0x1d')](_0x17ad84);};}exports['index']=function(_0x397274,_0x56eab7){var _0x46172c={};var _0x36fc32=_['map'](db['WhatsappInteraction'][_0xf977('0x1e')],function(_0xb28d79){return{'name':_0xb28d79['fieldName'],'type':_0xb28d79[_0xf977('0x1f')][_0xf977('0x20')]};});_0x46172c=qs[_0xf977('0x21')](_0x36fc32,_0x397274);return interaction[_0xf977('0x22')]('whatsapp',_0x397274[_0xf977('0x23')],_0x397274[_0xf977('0x24')],_0x46172c,_0x36fc32)[_0xf977('0x25')](respondWithFilteredResult(_0x56eab7,_0x46172c))[_0xf977('0x26')](handleError(_0x56eab7,null));};exports[_0xf977('0x27')]=function(_0x14c492,_0x5e74dc){var _0x35f786={'raw':![],'where':{'id':_0x14c492[_0xf977('0x28')]['id']}},_0x3de8e9={};_0x3de8e9[_0xf977('0x29')]=_[_0xf977('0x2a')](db[_0xf977('0x2b')][_0xf977('0x1e')]);_0x3de8e9[_0xf977('0x23')]=_['keys'](_0x14c492[_0xf977('0x23')]);_0x3de8e9[_0xf977('0x2c')]=_[_0xf977('0x2d')](_0x3de8e9[_0xf977('0x29')],_0x3de8e9['query']);_0x35f786[_0xf977('0x2e')]=_[_0xf977('0x2d')](_0x3de8e9['model'],qs[_0xf977('0x2f')](_0x14c492['query'][_0xf977('0x2f')]));_0x35f786[_0xf977('0x2e')]=_0x35f786[_0xf977('0x2e')][_0xf977('0x30')]?_0x35f786[_0xf977('0x2e')]:_0x3de8e9['model'];if(_0x14c492['query'][_0xf977('0x31')]){_0x35f786['include']=[{'all':!![]}];}_0x35f786=_[_0xf977('0x32')]({},_0x35f786,_0x14c492[_0xf977('0x33')]);return db['WhatsappInteraction']['find'](_0x35f786)[_0xf977('0x25')](handleEntityNotFound(_0x5e74dc,null))[_0xf977('0x25')](respondWithResult(_0x5e74dc,null))['catch'](handleError(_0x5e74dc,null));};exports['create']=function(_0x32659d,_0xdb00bb){return db['WhatsappInteraction'][_0xf977('0x34')](_0x32659d[_0xf977('0x35')],{})['then'](respondWithResult(_0xdb00bb,0xc9))[_0xf977('0x26')](handleError(_0xdb00bb,null));};exports['update']=function(_0x2dc8bb,_0x52d5da){if(_0x2dc8bb[_0xf977('0x35')]['id']){delete _0x2dc8bb[_0xf977('0x35')]['id'];}return db[_0xf977('0x2b')][_0xf977('0x36')]({'where':{'id':_0x2dc8bb['params']['id']}})[_0xf977('0x25')](handleEntityNotFound(_0x52d5da,null))[_0xf977('0x25')](saveUpdates(_0x2dc8bb[_0xf977('0x35')],null))['then'](respondWithResult(_0x52d5da,null))[_0xf977('0x26')](handleError(_0x52d5da,null));};exports[_0xf977('0x37')]=function(_0x2425ce,_0x5bb4c3){return db['WhatsappInteraction'][_0xf977('0x36')]({'where':{'id':_0x2425ce['params']['id']}})[_0xf977('0x25')](handleEntityNotFound(_0x5bb4c3,null))[_0xf977('0x25')](removeEntity(_0x5bb4c3,null))[_0xf977('0x26')](handleError(_0x5bb4c3,null));};exports[_0xf977('0x38')]=function(_0x2472b1,_0x30d32a){return db[_0xf977('0x2b')][_0xf977('0x38')]()['then'](respondWithResult(_0x30d32a,null))[_0xf977('0x26')](handleError(_0x30d32a,null));};exports[_0xf977('0x39')]=function(_0x48c03a,_0x4216d0){return db[_0xf977('0x3a')][_0xf977('0x36')]({'where':{'id':_0x48c03a[_0xf977('0x28')]['id']}})[_0xf977('0x25')](handleEntityNotFound(_0x4216d0,null))[_0xf977('0x25')](function(_0x4921e5){if(_0x4921e5){return _0x4921e5[_0xf977('0x39')](_0x48c03a[_0xf977('0x35')][_0xf977('0x3b')],_[_0xf977('0x3c')](_0x48c03a['body'],[_0xf977('0x3b'),'id'])||{});}})['then'](respondWithResult(_0x4216d0,null))[_0xf977('0x26')](handleError(_0x4216d0,null));};exports[_0xf977('0x3d')]=function(_0x1a11a3,_0x569f44){var _0x2faa4d={'raw':![],'where':{}};var _0x4e5b90={};var _0x443a95={'count':0x0,'rows':[]};return db['WhatsappInteraction']['findOne']({'where':{'id':_0x1a11a3['params']['id']}})[_0xf977('0x25')](handleEntityNotFound(_0x569f44,null))['then'](function(_0x333517){if(_0x333517){_0x4e5b90['model']=_[_0xf977('0x2a')](db[_0xf977('0x3a')][_0xf977('0x1e')]);_0x4e5b90[_0xf977('0x23')]=_[_0xf977('0x2a')](_0x1a11a3[_0xf977('0x23')]);_0x4e5b90['filters']=_[_0xf977('0x2d')](_0x4e5b90[_0xf977('0x29')],_0x4e5b90['query']);_0x2faa4d[_0xf977('0x2e')]=_[_0xf977('0x2d')](_0x4e5b90[_0xf977('0x29')],qs[_0xf977('0x2f')](_0x1a11a3[_0xf977('0x23')]['fields']));_0x2faa4d[_0xf977('0x2e')]=_0x2faa4d[_0xf977('0x2e')][_0xf977('0x30')]?_0x2faa4d['attributes']:_0x4e5b90[_0xf977('0x29')];if(!_0x1a11a3[_0xf977('0x23')][_0xf977('0x3e')](_0xf977('0x3f'))){_0x2faa4d[_0xf977('0x15')]=qs[_0xf977('0x15')](_0x1a11a3[_0xf977('0x23')][_0xf977('0x15')]);_0x2faa4d['offset']=qs[_0xf977('0x18')](_0x1a11a3[_0xf977('0x23')][_0xf977('0x18')]);}_0x2faa4d[_0xf977('0x40')]=qs['sort'](_0x1a11a3[_0xf977('0x23')][_0xf977('0x41')]);_0x2faa4d[_0xf977('0x42')]=qs[_0xf977('0x2c')](_[_0xf977('0x43')](_0x1a11a3[_0xf977('0x23')],_0x4e5b90['filters']));_0x2faa4d[_0xf977('0x42')][_0xf977('0x44')]=_0x333517['id'];if(_0x1a11a3[_0xf977('0x23')][_0xf977('0x45')]){_0x2faa4d['where']=_[_0xf977('0x32')](_0x2faa4d['where'],{'$or':_['map'](_0x2faa4d[_0xf977('0x2e')],function(_0x8e2b6c){var _0x31b092={};_0x31b092[_0x8e2b6c]={'$like':'%'+_0x1a11a3[_0xf977('0x23')][_0xf977('0x45')]+'%'};return _0x31b092;})});}if(_0x1a11a3[_0xf977('0x23')][_0xf977('0x46')]){var _0x2ddba6=_0x1a11a3['query']['$gte'][_0xf977('0x47')](',');var _0x21661b={};_0x21661b[_0x2ddba6[0x0]]={'$gte':moment(_0x2ddba6[0x1])[_0xf977('0x48')](_0xf977('0x49'))};_0x2faa4d['where']=_[_0xf977('0x32')](_0x2faa4d[_0xf977('0x42')],_0x21661b);}_0x2faa4d=_[_0xf977('0x32')]({},_0x2faa4d,_0x1a11a3['options']);return db[_0xf977('0x3a')][_0xf977('0x17')]({'where':_0x2faa4d[_0xf977('0x42')]})[_0xf977('0x25')](function(_0x1d81b3){_0x443a95['count']=_0x1d81b3;if(_0x1a11a3[_0xf977('0x23')][_0xf977('0x31')]){_0x2faa4d[_0xf977('0x4a')]=[{'all':!![]}];}return db[_0xf977('0x3a')][_0xf977('0x22')](_0x2faa4d);})['then'](function(_0x23806a){_0x443a95['rows']=_0x23806a;return _0x443a95;});}})['then'](respondWithFilteredResult(_0x569f44,_0x2faa4d))[_0xf977('0x26')](handleError(_0x569f44,null));};exports[_0xf977('0x4b')]=function(_0x5cf69d,_0x754386){return db['WhatsappInteraction'][_0xf977('0x36')]({'where':{'id':_0x5cf69d[_0xf977('0x28')]['id']}})[_0xf977('0x25')](handleEntityNotFound(_0x754386,null))[_0xf977('0x25')](function(_0x56a2c1){if(_0x56a2c1){return _0x56a2c1['setTags'](_0x5cf69d[_0xf977('0x35')][_0xf977('0x3b')],_['omit'](_0x5cf69d[_0xf977('0x35')],['ids','id'])||{})[_0xf977('0x4c')](function(){return db[_0xf977('0x4d')][_0xf977('0x22')]({'attributes':['id','name',_0xf977('0x4e')],'where':{'id':_0x5cf69d[_0xf977('0x35')][_0xf977('0x3b')]}});})[_0xf977('0x25')](function(_0x575f7f){socket[_0xf977('0x4f')](_0xf977('0x50'),{'id':Number(_0x5cf69d['params']['id']),'tags':_0x575f7f||[]});return{'id':Number(_0x5cf69d[_0xf977('0x28')]['id']),'tags':_0x575f7f||[]};});}})[_0xf977('0x25')](respondWithResult(_0x754386,null))[_0xf977('0x26')](handleError(_0x754386,null));};exports[_0xf977('0x51')]=function(_0x2893d6,_0x21277c){return db[_0xf977('0x2b')][_0xf977('0x36')]({'where':{'id':_0x2893d6[_0xf977('0x28')]['id']}})[_0xf977('0x25')](handleEntityNotFound(_0x21277c,null))[_0xf977('0x25')](function(_0x3bb17a){if(_0x3bb17a){return _0x3bb17a[_0xf977('0x51')](_0x2893d6[_0xf977('0x23')][_0xf977('0x3b')]);}})[_0xf977('0x25')](respondWithStatusCode(_0x21277c,null))['catch'](handleError(_0x21277c,null));};exports[_0xf977('0x52')]=function(_0x440125,_0x37501d){var _0x1a4123=moment()[_0xf977('0x53')]()[_0xf977('0x54')]();var _0x4d5e3e=path['join'](config[_0xf977('0x55')],_0xf977('0x56'),'files',_0xf977('0x57'));var _0x546d1f=path['join'](config['root'],_0xf977('0x56'),_0xf977('0x58'),'attachments');var _0x54cbae=path[_0xf977('0x59')](_0x4d5e3e,_0x1a4123);var _0x1ecd88=util['format'](_0xf977('0x5a'),_0x440125[_0xf977('0x28')]['id'],_0x1a4123);var _0x47456f=path[_0xf977('0x59')](_0x4d5e3e,_0x1ecd88);var _0x563244=[];_0x563244[_0xf977('0x5b')]({'model':db[_0xf977('0x5c')],'as':_0xf977('0x5c'),'attributes':['id',_0xf977('0x5d')],'raw':!![]});_0x563244[_0xf977('0x5b')]({'model':db['CmContact'],'as':_0xf977('0x5e'),'attributes':['id',_0xf977('0x5f'),_0xf977('0x60')],'raw':!![]});if(_0x440125[_0xf977('0x23')][_0xf977('0x61')]){_0x563244['push']({'model':db[_0xf977('0x62')],'as':_0xf977('0x62'),'raw':!![]});}var _0x5d339e=[{'model':db[_0xf977('0x3a')],'as':_0xf977('0x63'),'attributes':['id',_0xf977('0x35'),_0xf977('0x64'),'direction',_0xf977('0x65'),_0xf977('0x66')],'include':_0x563244}];_0x5d339e[_0xf977('0x5b')]({'model':db[_0xf977('0x67')],'as':_0xf977('0x68'),'attributes':['id',_0xf977('0x1c')]});_0x5d339e[_0xf977('0x5b')]({'model':db[_0xf977('0x5c')],'as':'Owner','attributes':['id',_0xf977('0x5d')]});return db['WhatsappInteraction']['find']({'where':{'id':_0x440125[_0xf977('0x28')]['id']},'include':_0x5d339e})[_0xf977('0x25')](handleEntityNotFound(_0x37501d,null))[_0xf977('0x25')](function(_0x4c3f06){if(_0x4c3f06){var _0x3ba8bd=_0x4c3f06['get']({'plain':!![]});fs[_0xf977('0x69')](_0x54cbae);var _0x3384d5={'channel':_0xf977('0x6a'),'account':_0x3ba8bd[_0xf977('0x68')]['name'],'agent':_0x3ba8bd['Owner']?_0x3ba8bd[_0xf977('0x6b')][_0xf977('0x5d')]:'N.A.','createdAt':moment(_0x3ba8bd['createdAt'])[_0xf977('0x48')](_0xf977('0x49'))['toString'](),'closedAt':_0x3ba8bd[_0xf977('0x6c')]?moment(_0x3ba8bd[_0xf977('0x6d')])[_0xf977('0x48')](_0xf977('0x49'))[_0xf977('0x54')]():'','disposition':_0x3ba8bd['disposition'],'messages':_(_0x3ba8bd[_0xf977('0x63')])[_0xf977('0x45')]({'secret':![]})['map'](function(_0x4ebae0){if(_0x4ebae0[_0xf977('0x62')]){var _0x25aa16=path[_0xf977('0x59')](_0x546d1f,_0x4ebae0['Attachment'][_0xf977('0x6e')]);if(fs[_0xf977('0x6f')](_0x25aa16)){fs['createReadStream'](_0x25aa16)[_0xf977('0x70')](fs[_0xf977('0x71')](path['join'](_0x54cbae,_0x4ebae0[_0xf977('0x62')][_0xf977('0x6e')])));}}return{'date':moment(_0x4ebae0[_0xf977('0x64')])[_0xf977('0x48')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf977('0x54')](),'sender':_0x4ebae0[_0xf977('0x72')]==='out'?_0x4ebae0[_0xf977('0x5c')]?_0x4ebae0[_0xf977('0x5c')][_0xf977('0x5d')]:_0xf977('0x73'):_0x4ebae0['Contact'][_0xf977('0x5f')]+(_0x4ebae0[_0xf977('0x5e')][_0xf977('0x60')]?'\x20'+_0x4ebae0['Contact'][_0xf977('0x60')]:''),'body':_0x4ebae0['Attachment']?_0x4ebae0[_0xf977('0x62')][_0xf977('0x6e')]:_0x4ebae0[_0xf977('0x35')],'direction':_0x4ebae0[_0xf977('0x72')]===_0xf977('0x74')?'A':'C','secret':_0x4ebae0[_0xf977('0x65')],'read':_0x4ebae0[_0xf977('0x66')],'attachment':_0x4ebae0[_0xf977('0x62')]};})[_0xf977('0x75')]()};return ejs['renderFile'](path[_0xf977('0x59')](config['root'],_0xf977('0x56'),_0xf977('0x76'),_0xf977('0x77')),{'interaction':_0x3384d5})['then'](function(_0x1f68dc){var _0x432b7d=path['join'](_0x54cbae,_0xf977('0x78')+_0x3ba8bd['id']+'-'+_0x1a4123+'.pdf');var _0x5959b4={'path':_0x432b7d,'channel':_0xf977('0x6a'),'interactionId':_0x3ba8bd['id']};return pdf['createPdfFromHTML'](_0x1f68dc,_0x5959b4);})[_0xf977('0x25')](function(){return new BPromise(function(_0x6607a9,_0x23a503){zipdir(_0x54cbae,{'saveTo':_0x47456f},function(_0x40c1c0,_0x2d6b66){if(_0x40c1c0)return _0x23a503(_0x40c1c0);return _0x6607a9(_0x2d6b66);});})[_0xf977('0x25')](function(){return new BPromise(function(_0xd4f620,_0x308d82){rimraf(_0x54cbae,function(_0x502a43){if(_0x502a43)_0x308d82(_0x502a43);return _0xd4f620();});});})['then'](function(){return _0x37501d[_0xf977('0x52')](_0x47456f,_0x1ecd88,function(_0x776cea){if(_0x776cea){console['log'](_0xf977('0x79'),_0x776cea);}else{fs[_0xf977('0x7a')](_0x47456f);}});});});}else{return _0x37501d[_0xf977('0x11')](0xc8);}})[_0xf977('0x26')](handleError(_0x37501d,null));};