Built motion from commit 9d0783e6.|2.6.13
[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 _0x358c=['Contact','lastName','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','rimraf','zip-dir','moment','bluebird','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','json','then','destroy','name','index','map','WhatsappInteraction','rawAttributes','type','key','getOptions','findAll','whatsapp','query','user','catch','show','params','keys','model','attributes','intersection','fields','includeAll','merge','options','find','create','update','body','addMessage','WhatsappMessage','ids','omit','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','unix','toString','root','server','files','join','attachments','push','User','fullname','CmContact','firstName','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Owner','get','Whatsapp','Account','N.A.','closed','basename','existsSync','createReadStream','pipe','createWriteStream'];(function(_0x5cd743,_0x15cc73){var _0x4611e4=function(_0x4d50a5){while(--_0x4d50a5){_0x5cd743['push'](_0x5cd743['shift']());}};_0x4611e4(++_0x15cc73);}(_0x358c,0x87));var _0xc358=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x358c[_0x3dd15e];return _0x231fd0;};'use strict';var rimraf=require(_0xc358('0x0'));var zipdir=require(_0xc358('0x1'));var moment=require(_0xc358('0x2'));var BPromise=require(_0xc358('0x3'));var util=require('util');var path=require(_0xc358('0x4'));var ejs=require(_0xc358('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xc358('0x6'));var interaction=require(_0xc358('0x7'));var qs=require(_0xc358('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0xc358('0x9'))(_0xc358('0xa'));var config=require(_0xc358('0xb'));var db=require('../../mysqldb')['db'];config[_0xc358('0xc')]=_[_0xc358('0xd')](config[_0xc358('0xc')],{'host':_0xc358('0xe'),'port':0x18eb});var socket=require(_0xc358('0xf'))(new Redis(config[_0xc358('0xc')]));require(_0xc358('0x10'))[_0xc358('0x11')](socket);function respondWithStatusCode(_0x177e66,_0x426e5b){_0x426e5b=_0x426e5b||0xcc;return function(_0x4743a1){if(_0x4743a1){return _0x177e66[_0xc358('0x12')](_0x426e5b);}return _0x177e66[_0xc358('0x13')](_0x426e5b)[_0xc358('0x14')]();};}function respondWithResult(_0x4eeca2,_0x5e017f){_0x5e017f=_0x5e017f||0xc8;return function(_0x529546){if(_0x529546){return _0x4eeca2[_0xc358('0x13')](_0x5e017f)['json'](_0x529546);}};}function respondWithFilteredResult(_0x5600b6,_0x23010e){return function(_0x3cd9ac){if(_0x3cd9ac){var _0x23f0f8=typeof _0x23010e['offset']===_0xc358('0x15')&&typeof _0x23010e[_0xc358('0x16')]===_0xc358('0x15');var _0x1a3d3c=_0x3cd9ac[_0xc358('0x17')];var _0x3a52bd=_0x23f0f8?0x0:_0x23010e[_0xc358('0x18')];var _0x15f839=_0x23f0f8?_0x3cd9ac[_0xc358('0x17')]:_0x23010e[_0xc358('0x18')]+_0x23010e[_0xc358('0x16')];var _0x20a217;if(_0x15f839>=_0x1a3d3c){_0x15f839=_0x1a3d3c;_0x20a217=0xc8;}else{_0x20a217=0xce;}_0x5600b6[_0xc358('0x13')](_0x20a217);return _0x5600b6[_0xc358('0x19')]('Content-Range',_0x3a52bd+'-'+_0x15f839+'/'+_0x1a3d3c)[_0xc358('0x1a')](_0x3cd9ac);}return null;};}function saveUpdates(_0x4d8aaa){return function(_0x3806a9){if(_0x3806a9){return _0x3806a9['update'](_0x4d8aaa)[_0xc358('0x1b')](function(_0x370d54){return _0x370d54;});}return null;};}function removeEntity(_0x4d9108){return function(_0x104eff){if(_0x104eff){return _0x104eff[_0xc358('0x1c')]()[_0xc358('0x1b')](function(){_0x4d9108[_0xc358('0x13')](0xcc)[_0xc358('0x14')]();});}};}function handleEntityNotFound(_0x587d86){return function(_0x56d5d0){if(!_0x56d5d0){_0x587d86[_0xc358('0x12')](0x194);}return _0x56d5d0;};}function handleError(_0x334d61,_0x4e3a95){_0x4e3a95=_0x4e3a95||0x1f4;return function(_0x1837ff){logger['error'](_0x1837ff['stack']);if(_0x1837ff['name']){delete _0x1837ff[_0xc358('0x1d')];}_0x334d61[_0xc358('0x13')](_0x4e3a95)['send'](_0x1837ff);};}exports[_0xc358('0x1e')]=function(_0x2d4bea,_0x5bf210){var _0x5e1a03={};var _0x256485=_[_0xc358('0x1f')](db[_0xc358('0x20')][_0xc358('0x21')],function(_0x1181c7){return{'name':_0x1181c7['fieldName'],'type':_0x1181c7[_0xc358('0x22')][_0xc358('0x23')]};});_0x5e1a03=qs[_0xc358('0x24')](_0x256485,_0x2d4bea);return interaction[_0xc358('0x25')](_0xc358('0x26'),_0x2d4bea[_0xc358('0x27')],_0x2d4bea[_0xc358('0x28')],_0x5e1a03,_0x256485)[_0xc358('0x1b')](respondWithFilteredResult(_0x5bf210,_0x5e1a03))[_0xc358('0x29')](handleError(_0x5bf210,null));};exports[_0xc358('0x2a')]=function(_0x73f038,_0x278f2b){var _0x2e5ef0={'raw':![],'where':{'id':_0x73f038[_0xc358('0x2b')]['id']}},_0xc75b04={};_0xc75b04['model']=_['keys'](db[_0xc358('0x20')][_0xc358('0x21')]);_0xc75b04['query']=_[_0xc358('0x2c')](_0x73f038[_0xc358('0x27')]);_0xc75b04['filters']=_['intersection'](_0xc75b04[_0xc358('0x2d')],_0xc75b04[_0xc358('0x27')]);_0x2e5ef0[_0xc358('0x2e')]=_[_0xc358('0x2f')](_0xc75b04[_0xc358('0x2d')],qs[_0xc358('0x30')](_0x73f038[_0xc358('0x27')][_0xc358('0x30')]));_0x2e5ef0[_0xc358('0x2e')]=_0x2e5ef0[_0xc358('0x2e')]['length']?_0x2e5ef0['attributes']:_0xc75b04[_0xc358('0x2d')];if(_0x73f038[_0xc358('0x27')][_0xc358('0x31')]){_0x2e5ef0['include']=[{'all':!![]}];}_0x2e5ef0=_[_0xc358('0x32')]({},_0x2e5ef0,_0x73f038[_0xc358('0x33')]);return db[_0xc358('0x20')][_0xc358('0x34')](_0x2e5ef0)[_0xc358('0x1b')](handleEntityNotFound(_0x278f2b,null))[_0xc358('0x1b')](respondWithResult(_0x278f2b,null))['catch'](handleError(_0x278f2b,null));};exports[_0xc358('0x35')]=function(_0x291ed2,_0xaf2267){return db[_0xc358('0x20')][_0xc358('0x35')](_0x291ed2['body'],{})[_0xc358('0x1b')](respondWithResult(_0xaf2267,0xc9))[_0xc358('0x29')](handleError(_0xaf2267,null));};exports[_0xc358('0x36')]=function(_0x373277,_0x5f5c29){if(_0x373277[_0xc358('0x37')]['id']){delete _0x373277[_0xc358('0x37')]['id'];}return db[_0xc358('0x20')][_0xc358('0x34')]({'where':{'id':_0x373277[_0xc358('0x2b')]['id']}})[_0xc358('0x1b')](handleEntityNotFound(_0x5f5c29,null))[_0xc358('0x1b')](saveUpdates(_0x373277['body'],null))[_0xc358('0x1b')](respondWithResult(_0x5f5c29,null))[_0xc358('0x29')](handleError(_0x5f5c29,null));};exports[_0xc358('0x1c')]=function(_0x32f3fb,_0x26dbd3){return db['WhatsappInteraction']['find']({'where':{'id':_0x32f3fb[_0xc358('0x2b')]['id']}})[_0xc358('0x1b')](handleEntityNotFound(_0x26dbd3,null))[_0xc358('0x1b')](removeEntity(_0x26dbd3,null))[_0xc358('0x29')](handleError(_0x26dbd3,null));};exports['describe']=function(_0x38ef85,_0x3ce3a4){return db[_0xc358('0x20')]['describe']()[_0xc358('0x1b')](respondWithResult(_0x3ce3a4,null))[_0xc358('0x29')](handleError(_0x3ce3a4,null));};exports[_0xc358('0x38')]=function(_0x49342,_0x490e02){return db[_0xc358('0x39')][_0xc358('0x34')]({'where':{'id':_0x49342['params']['id']}})[_0xc358('0x1b')](handleEntityNotFound(_0x490e02,null))['then'](function(_0x1e6aba){if(_0x1e6aba){return _0x1e6aba[_0xc358('0x38')](_0x49342['body'][_0xc358('0x3a')],_[_0xc358('0x3b')](_0x49342['body'],[_0xc358('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x490e02,null))['catch'](handleError(_0x490e02,null));};exports['getMessages']=function(_0x1b1003,_0x3bdb18){var _0x3a7f22={'raw':![],'where':{}};var _0x5056e0={};var _0x51b8c2={'count':0x0,'rows':[]};return db[_0xc358('0x20')]['findOne']({'where':{'id':_0x1b1003['params']['id']}})['then'](handleEntityNotFound(_0x3bdb18,null))[_0xc358('0x1b')](function(_0x280e94){if(_0x280e94){_0x5056e0[_0xc358('0x2d')]=_[_0xc358('0x2c')](db[_0xc358('0x39')][_0xc358('0x21')]);_0x5056e0[_0xc358('0x27')]=_[_0xc358('0x2c')](_0x1b1003['query']);_0x5056e0['filters']=_[_0xc358('0x2f')](_0x5056e0[_0xc358('0x2d')],_0x5056e0[_0xc358('0x27')]);_0x3a7f22[_0xc358('0x2e')]=_[_0xc358('0x2f')](_0x5056e0['model'],qs[_0xc358('0x30')](_0x1b1003[_0xc358('0x27')][_0xc358('0x30')]));_0x3a7f22[_0xc358('0x2e')]=_0x3a7f22[_0xc358('0x2e')][_0xc358('0x3c')]?_0x3a7f22[_0xc358('0x2e')]:_0x5056e0[_0xc358('0x2d')];if(!_0x1b1003[_0xc358('0x27')][_0xc358('0x3d')](_0xc358('0x3e'))){_0x3a7f22[_0xc358('0x16')]=qs[_0xc358('0x16')](_0x1b1003[_0xc358('0x27')][_0xc358('0x16')]);_0x3a7f22['offset']=qs[_0xc358('0x18')](_0x1b1003[_0xc358('0x27')]['offset']);}_0x3a7f22['order']=qs['sort'](_0x1b1003['query'][_0xc358('0x3f')]);_0x3a7f22[_0xc358('0x40')]=qs[_0xc358('0x41')](_[_0xc358('0x42')](_0x1b1003[_0xc358('0x27')],_0x5056e0[_0xc358('0x41')]));_0x3a7f22['where']['WhatsappInteractionId']=_0x280e94['id'];if(_0x1b1003[_0xc358('0x27')]['filter']){_0x3a7f22[_0xc358('0x40')]=_[_0xc358('0x32')](_0x3a7f22[_0xc358('0x40')],{'$or':_[_0xc358('0x1f')](_0x3a7f22[_0xc358('0x2e')],function(_0x2e6539){var _0xdd7772={};_0xdd7772[_0x2e6539]={'$like':'%'+_0x1b1003[_0xc358('0x27')][_0xc358('0x43')]+'%'};return _0xdd7772;})});}if(_0x1b1003['query'][_0xc358('0x44')]){var _0x444584=_0x1b1003[_0xc358('0x27')][_0xc358('0x44')][_0xc358('0x45')](',');var _0x41c1c4={};_0x41c1c4[_0x444584[0x0]]={'$gte':moment(_0x444584[0x1])[_0xc358('0x46')](_0xc358('0x47'))};_0x3a7f22[_0xc358('0x40')]=_[_0xc358('0x32')](_0x3a7f22[_0xc358('0x40')],_0x41c1c4);}_0x3a7f22=_['merge']({},_0x3a7f22,_0x1b1003['options']);return db[_0xc358('0x39')]['count']({'where':_0x3a7f22[_0xc358('0x40')]})['then'](function(_0x1c2fad){_0x51b8c2[_0xc358('0x17')]=_0x1c2fad;if(_0x1b1003[_0xc358('0x27')][_0xc358('0x31')]){_0x3a7f22[_0xc358('0x48')]=[{'all':!![]}];}return db[_0xc358('0x39')][_0xc358('0x25')](_0x3a7f22);})[_0xc358('0x1b')](function(_0x3ecc84){_0x51b8c2[_0xc358('0x49')]=_0x3ecc84;return _0x51b8c2;});}})[_0xc358('0x1b')](respondWithFilteredResult(_0x3bdb18,_0x3a7f22))[_0xc358('0x29')](handleError(_0x3bdb18,null));};exports['addTags']=function(_0x3d4f5b,_0x28a6e3){return db[_0xc358('0x20')][_0xc358('0x34')]({'where':{'id':_0x3d4f5b[_0xc358('0x2b')]['id']}})[_0xc358('0x1b')](handleEntityNotFound(_0x28a6e3,null))['then'](function(_0x4504b6){if(_0x4504b6){return _0x4504b6['setTags'](_0x3d4f5b[_0xc358('0x37')][_0xc358('0x3a')],_[_0xc358('0x3b')](_0x3d4f5b['body'],['ids','id'])||{})[_0xc358('0x4a')](function(){return db[_0xc358('0x4b')][_0xc358('0x25')]({'attributes':['id',_0xc358('0x1d'),_0xc358('0x4c')],'where':{'id':_0x3d4f5b['body'][_0xc358('0x3a')]}});})['then'](function(_0x5a94f4){socket[_0xc358('0x4d')](_0xc358('0x4e'),{'id':Number(_0x3d4f5b[_0xc358('0x2b')]['id']),'tags':_0x5a94f4||[]});return{'id':Number(_0x3d4f5b[_0xc358('0x2b')]['id']),'tags':_0x5a94f4||[]};});}})[_0xc358('0x1b')](respondWithResult(_0x28a6e3,null))[_0xc358('0x29')](handleError(_0x28a6e3,null));};exports[_0xc358('0x4f')]=function(_0x22e8a3,_0x5ad6c6){return db[_0xc358('0x20')][_0xc358('0x34')]({'where':{'id':_0x22e8a3[_0xc358('0x2b')]['id']}})[_0xc358('0x1b')](handleEntityNotFound(_0x5ad6c6,null))[_0xc358('0x1b')](function(_0x13bf5f){if(_0x13bf5f){return _0x13bf5f[_0xc358('0x4f')](_0x22e8a3[_0xc358('0x27')][_0xc358('0x3a')]);}})[_0xc358('0x1b')](respondWithStatusCode(_0x5ad6c6,null))[_0xc358('0x29')](handleError(_0x5ad6c6,null));};exports['download']=function(_0x150d9f,_0x2ce36e){var _0x507ea0=moment()[_0xc358('0x50')]()[_0xc358('0x51')]();var _0x4f9fcb=path['join'](config[_0xc358('0x52')],_0xc358('0x53'),_0xc358('0x54'),'tmp');var _0x2de4ee=path[_0xc358('0x55')](config[_0xc358('0x52')],_0xc358('0x53'),_0xc358('0x54'),_0xc358('0x56'));var _0x1ee307=path[_0xc358('0x55')](_0x4f9fcb,_0x507ea0);var _0x27326d=util['format']('transcript-%d-%s.zip',_0x150d9f[_0xc358('0x2b')]['id'],_0x507ea0);var _0x5e61a8=path[_0xc358('0x55')](_0x4f9fcb,_0x27326d);var _0x41533c=[];_0x41533c[_0xc358('0x57')]({'model':db[_0xc358('0x58')],'as':_0xc358('0x58'),'attributes':['id',_0xc358('0x59')],'raw':!![]});_0x41533c['push']({'model':db[_0xc358('0x5a')],'as':'Contact','attributes':['id',_0xc358('0x5b'),'lastName'],'raw':!![]});if(_0x150d9f[_0xc358('0x27')][_0xc358('0x56')]){_0x41533c[_0xc358('0x57')]({'model':db[_0xc358('0x5c')],'as':_0xc358('0x5c'),'raw':!![]});}var _0x1c80a8=[{'model':db[_0xc358('0x39')],'as':_0xc358('0x5d'),'attributes':['id',_0xc358('0x37'),_0xc358('0x5e'),_0xc358('0x5f'),_0xc358('0x60'),'read'],'include':_0x41533c}];_0x1c80a8[_0xc358('0x57')]({'model':db[_0xc358('0x61')],'as':'Account','attributes':['id',_0xc358('0x1d')]});_0x1c80a8[_0xc358('0x57')]({'model':db['User'],'as':_0xc358('0x62'),'attributes':['id','fullname']});return db[_0xc358('0x20')]['find']({'where':{'id':_0x150d9f[_0xc358('0x2b')]['id']},'include':_0x1c80a8})[_0xc358('0x1b')](handleEntityNotFound(_0x2ce36e,null))[_0xc358('0x1b')](function(_0x236ba4){if(_0x236ba4){var _0x2f54f4=_0x236ba4[_0xc358('0x63')]({'plain':!![]});fs['mkdirSync'](_0x1ee307);var _0x5567d5={'channel':_0xc358('0x64'),'account':_0x2f54f4[_0xc358('0x65')][_0xc358('0x1d')],'agent':_0x2f54f4[_0xc358('0x62')]?_0x2f54f4['Owner']['fullname']:_0xc358('0x66'),'createdAt':moment(_0x2f54f4[_0xc358('0x5e')])[_0xc358('0x46')]('YYYY-MM-DD\x20HH:mm:ss')[_0xc358('0x51')](),'closedAt':_0x2f54f4[_0xc358('0x67')]?moment(_0x2f54f4['closedAt'])[_0xc358('0x46')](_0xc358('0x47'))[_0xc358('0x51')]():'','disposition':_0x2f54f4['disposition'],'messages':_(_0x2f54f4['Messages'])[_0xc358('0x43')]({'secret':![]})[_0xc358('0x1f')](function(_0x2a2fee){if(_0x2a2fee[_0xc358('0x5c')]){var _0x479662=path[_0xc358('0x55')](_0x2de4ee,_0x2a2fee[_0xc358('0x5c')][_0xc358('0x68')]);if(fs[_0xc358('0x69')](_0x479662)){fs[_0xc358('0x6a')](_0x479662)[_0xc358('0x6b')](fs[_0xc358('0x6c')](path[_0xc358('0x55')](_0x1ee307,_0x2a2fee[_0xc358('0x5c')][_0xc358('0x68')])));}}return{'date':moment(_0x2a2fee[_0xc358('0x5e')])['format'](_0xc358('0x47'))[_0xc358('0x51')](),'sender':_0x2a2fee[_0xc358('0x5f')]==='out'?_0x2a2fee['User']?_0x2a2fee['User']['fullname']:'System':_0x2a2fee[_0xc358('0x6d')][_0xc358('0x5b')]+(_0x2a2fee['Contact'][_0xc358('0x6e')]?'\x20'+_0x2a2fee[_0xc358('0x6d')][_0xc358('0x6e')]:''),'body':_0x2a2fee[_0xc358('0x5c')]?_0x2a2fee[_0xc358('0x5c')][_0xc358('0x68')]:_0x2a2fee[_0xc358('0x37')],'direction':_0x2a2fee[_0xc358('0x5f')]==='out'?'A':'C','secret':_0x2a2fee[_0xc358('0x60')],'read':_0x2a2fee[_0xc358('0x6f')],'attachment':_0x2a2fee['Attachment']};})[_0xc358('0x70')]()};return ejs[_0xc358('0x71')](path[_0xc358('0x55')](config[_0xc358('0x52')],_0xc358('0x53'),_0xc358('0x72'),_0xc358('0x73')),{'interaction':_0x5567d5})['then'](function(_0x577c8e){var _0x285e1e=path[_0xc358('0x55')](_0x1ee307,_0xc358('0x74')+_0x2f54f4['id']+'-'+_0x507ea0+_0xc358('0x75'));var _0x17a2ba={'path':_0x285e1e,'channel':_0xc358('0x64'),'interactionId':_0x2f54f4['id']};return pdf[_0xc358('0x76')](_0x577c8e,_0x17a2ba);})[_0xc358('0x1b')](function(){return new BPromise(function(_0xa0c4ea,_0x311022){zipdir(_0x1ee307,{'saveTo':_0x5e61a8},function(_0x6dec95,_0x5fef6c){if(_0x6dec95)return _0x311022(_0x6dec95);return _0xa0c4ea(_0x5fef6c);});})[_0xc358('0x1b')](function(){return new BPromise(function(_0x55d732,_0x10dddf){rimraf(_0x1ee307,function(_0x172c89){if(_0x172c89)_0x10dddf(_0x172c89);return _0x55d732();});});})[_0xc358('0x1b')](function(){return _0x2ce36e[_0xc358('0x77')](_0x5e61a8,_0x27326d,function(_0x37d236){if(_0x37d236){console[_0xc358('0x78')](_0xc358('0x79'),_0x37d236);}else{fs['unlinkSync'](_0x5e61a8);}});});});}else{return _0x2ce36e[_0xc358('0x12')](0xc8);}})['catch'](handleError(_0x2ce36e,null));};