5cf69c47da5fe7e6d3ccf63532bcd4066dd4cdb8
[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 _0xbb4d=['ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','WhatsappInteraction','rawAttributes','fieldName','type','key','findAll','whatsapp','query','user','catch','show','params','model','keys','filters','fields','attributes','length','include','merge','options','find','create','body','describe','addMessage','ids','omit','WhatsappMessage','intersection','hasOwnProperty','nolimit','order','sort','where','pick','WhatsappInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','spread','Tag','color','emit','removeTags','unix','join','files','tmp','server','attachments','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','Owner','get','Account','toString','closed','closedAt','format','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','createdAt','direction','out','System','value','transcript-','.pdf','log','err','rimraf','zip-dir','util','path','ejs','lodash'];(function(_0x74a7e5,_0x1326dd){var _0x4e4c41=function(_0x443a74){while(--_0x443a74){_0x74a7e5['push'](_0x74a7e5['shift']());}};_0x4e4c41(++_0x1326dd);}(_0xbb4d,0x74));var _0xdbb4=function(_0x31b4e1,_0x4cbd36){_0x31b4e1=_0x31b4e1-0x0;var _0x149492=_0xbb4d[_0x31b4e1];return _0x149492;};'use strict';var rimraf=require(_0xdbb4('0x0'));var zipdir=require(_0xdbb4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xdbb4('0x2'));var path=require(_0xdbb4('0x3'));var ejs=require(_0xdbb4('0x4'));var fs=require('fs');var _=require(_0xdbb4('0x5'));var Redis=require(_0xdbb4('0x6'));var interaction=require(_0xdbb4('0x7'));var qs=require(_0xdbb4('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0xdbb4('0x9'))(_0xdbb4('0xa'));var config=require('../../config/environment');var db=require(_0xdbb4('0xb'))['db'];config[_0xdbb4('0xc')]=_[_0xdbb4('0xd')](config[_0xdbb4('0xc')],{'host':_0xdbb4('0xe'),'port':0x18eb});var socket=require(_0xdbb4('0xf'))(new Redis(config[_0xdbb4('0xc')]));require(_0xdbb4('0x10'))[_0xdbb4('0x11')](socket);function respondWithStatusCode(_0x20638c,_0xf32bb){_0xf32bb=_0xf32bb||0xcc;return function(_0x292278){if(_0x292278){return _0x20638c[_0xdbb4('0x12')](_0xf32bb);}return _0x20638c[_0xdbb4('0x13')](_0xf32bb)['end']();};}function respondWithResult(_0x5358c5,_0x258335){_0x258335=_0x258335||0xc8;return function(_0x565d49){if(_0x565d49){return _0x5358c5['status'](_0x258335)[_0xdbb4('0x14')](_0x565d49);}};}function respondWithFilteredResult(_0x59db0f,_0x21229e){return function(_0x534387){if(_0x534387){var _0x8fb36e=typeof _0x21229e[_0xdbb4('0x15')]===_0xdbb4('0x16')&&typeof _0x21229e[_0xdbb4('0x17')]===_0xdbb4('0x16');var _0x181a09=_0x534387[_0xdbb4('0x18')];var _0x18418c=_0x8fb36e?0x0:_0x21229e[_0xdbb4('0x15')];var _0x2a6883=_0x8fb36e?_0x534387[_0xdbb4('0x18')]:_0x21229e[_0xdbb4('0x15')]+_0x21229e[_0xdbb4('0x17')];var _0x57fc46;if(_0x2a6883>=_0x181a09){_0x2a6883=_0x181a09;_0x57fc46=0xc8;}else{_0x57fc46=0xce;}_0x59db0f[_0xdbb4('0x13')](_0x57fc46);return _0x59db0f[_0xdbb4('0x19')](_0xdbb4('0x1a'),_0x18418c+'-'+_0x2a6883+'/'+_0x181a09)['json'](_0x534387);}return null;};}function saveUpdates(_0x19c72c){return function(_0xbfbee5){if(_0xbfbee5){return _0xbfbee5[_0xdbb4('0x1b')](_0x19c72c)[_0xdbb4('0x1c')](function(_0x4a6a5a){return _0x4a6a5a;});}return null;};}function removeEntity(_0x476b21){return function(_0x44881c){if(_0x44881c){return _0x44881c[_0xdbb4('0x1d')]()[_0xdbb4('0x1c')](function(){_0x476b21['status'](0xcc)[_0xdbb4('0x1e')]();});}};}function handleEntityNotFound(_0x28d38f){return function(_0x578ae6){if(!_0x578ae6){_0x28d38f[_0xdbb4('0x12')](0x194);}return _0x578ae6;};}function handleError(_0x581803,_0x9a7077){_0x9a7077=_0x9a7077||0x1f4;return function(_0x20cdd0){logger['error'](_0x20cdd0[_0xdbb4('0x1f')]);if(_0x20cdd0[_0xdbb4('0x20')]){delete _0x20cdd0['name'];}_0x581803[_0xdbb4('0x13')](_0x9a7077)[_0xdbb4('0x21')](_0x20cdd0);};}exports[_0xdbb4('0x22')]=function(_0x51b292,_0x2b1eee){var _0x1b93ef={};var _0x3b5e44=_[_0xdbb4('0x23')](db[_0xdbb4('0x24')][_0xdbb4('0x25')],function(_0x4f8271){return{'name':_0x4f8271[_0xdbb4('0x26')],'type':_0x4f8271[_0xdbb4('0x27')][_0xdbb4('0x28')]};});_0x1b93ef=qs['getOptions'](_0x3b5e44,_0x51b292);return interaction[_0xdbb4('0x29')](_0xdbb4('0x2a'),_0x51b292[_0xdbb4('0x2b')],_0x51b292[_0xdbb4('0x2c')],_0x1b93ef,_0x3b5e44)[_0xdbb4('0x1c')](respondWithFilteredResult(_0x2b1eee,_0x1b93ef))[_0xdbb4('0x2d')](handleError(_0x2b1eee,null));};exports[_0xdbb4('0x2e')]=function(_0x3ba49c,_0x4a46ab){var _0xd8e200={'raw':![],'where':{'id':_0x3ba49c[_0xdbb4('0x2f')]['id']}},_0x6cd095={};_0x6cd095[_0xdbb4('0x30')]=_['keys'](db[_0xdbb4('0x24')][_0xdbb4('0x25')]);_0x6cd095[_0xdbb4('0x2b')]=_[_0xdbb4('0x31')](_0x3ba49c[_0xdbb4('0x2b')]);_0x6cd095[_0xdbb4('0x32')]=_['intersection'](_0x6cd095['model'],_0x6cd095[_0xdbb4('0x2b')]);_0xd8e200['attributes']=_['intersection'](_0x6cd095[_0xdbb4('0x30')],qs['fields'](_0x3ba49c['query'][_0xdbb4('0x33')]));_0xd8e200['attributes']=_0xd8e200[_0xdbb4('0x34')][_0xdbb4('0x35')]?_0xd8e200[_0xdbb4('0x34')]:_0x6cd095[_0xdbb4('0x30')];if(_0x3ba49c[_0xdbb4('0x2b')]['includeAll']){_0xd8e200[_0xdbb4('0x36')]=[{'all':!![]}];}_0xd8e200=_[_0xdbb4('0x37')]({},_0xd8e200,_0x3ba49c[_0xdbb4('0x38')]);return db['WhatsappInteraction'][_0xdbb4('0x39')](_0xd8e200)[_0xdbb4('0x1c')](handleEntityNotFound(_0x4a46ab,null))[_0xdbb4('0x1c')](respondWithResult(_0x4a46ab,null))['catch'](handleError(_0x4a46ab,null));};exports[_0xdbb4('0x3a')]=function(_0x578c28,_0x19eeda){return db[_0xdbb4('0x24')]['create'](_0x578c28[_0xdbb4('0x3b')],{})[_0xdbb4('0x1c')](respondWithResult(_0x19eeda,0xc9))[_0xdbb4('0x2d')](handleError(_0x19eeda,null));};exports[_0xdbb4('0x1b')]=function(_0x313e5b,_0x12c3a8){if(_0x313e5b[_0xdbb4('0x3b')]['id']){delete _0x313e5b[_0xdbb4('0x3b')]['id'];}return db[_0xdbb4('0x24')][_0xdbb4('0x39')]({'where':{'id':_0x313e5b[_0xdbb4('0x2f')]['id']}})[_0xdbb4('0x1c')](handleEntityNotFound(_0x12c3a8,null))[_0xdbb4('0x1c')](saveUpdates(_0x313e5b[_0xdbb4('0x3b')],null))[_0xdbb4('0x1c')](respondWithResult(_0x12c3a8,null))['catch'](handleError(_0x12c3a8,null));};exports['destroy']=function(_0xa2f2,_0x3d231d){return db['WhatsappInteraction'][_0xdbb4('0x39')]({'where':{'id':_0xa2f2[_0xdbb4('0x2f')]['id']}})[_0xdbb4('0x1c')](handleEntityNotFound(_0x3d231d,null))['then'](removeEntity(_0x3d231d,null))['catch'](handleError(_0x3d231d,null));};exports[_0xdbb4('0x3c')]=function(_0x567948,_0x2c8ef8){return db[_0xdbb4('0x24')][_0xdbb4('0x3c')]()['then'](respondWithResult(_0x2c8ef8,null))[_0xdbb4('0x2d')](handleError(_0x2c8ef8,null));};exports[_0xdbb4('0x3d')]=function(_0x1b136a,_0x417f6d){return db['WhatsappMessage']['find']({'where':{'id':_0x1b136a[_0xdbb4('0x2f')]['id']}})[_0xdbb4('0x1c')](handleEntityNotFound(_0x417f6d,null))[_0xdbb4('0x1c')](function(_0x5a4927){if(_0x5a4927){return _0x5a4927[_0xdbb4('0x3d')](_0x1b136a[_0xdbb4('0x3b')][_0xdbb4('0x3e')],_[_0xdbb4('0x3f')](_0x1b136a[_0xdbb4('0x3b')],[_0xdbb4('0x3e'),'id'])||{});}})[_0xdbb4('0x1c')](respondWithResult(_0x417f6d,null))[_0xdbb4('0x2d')](handleError(_0x417f6d,null));};exports['getMessages']=function(_0x513581,_0x4301d6){var _0x28519b={'raw':![],'where':{}};var _0x1a8024={};var _0x5b2798={'count':0x0,'rows':[]};return db[_0xdbb4('0x24')]['findOne']({'where':{'id':_0x513581['params']['id']}})[_0xdbb4('0x1c')](handleEntityNotFound(_0x4301d6,null))[_0xdbb4('0x1c')](function(_0xee059){if(_0xee059){_0x1a8024[_0xdbb4('0x30')]=_[_0xdbb4('0x31')](db[_0xdbb4('0x40')][_0xdbb4('0x25')]);_0x1a8024[_0xdbb4('0x2b')]=_['keys'](_0x513581[_0xdbb4('0x2b')]);_0x1a8024[_0xdbb4('0x32')]=_[_0xdbb4('0x41')](_0x1a8024[_0xdbb4('0x30')],_0x1a8024[_0xdbb4('0x2b')]);_0x28519b[_0xdbb4('0x34')]=_['intersection'](_0x1a8024[_0xdbb4('0x30')],qs[_0xdbb4('0x33')](_0x513581['query'][_0xdbb4('0x33')]));_0x28519b[_0xdbb4('0x34')]=_0x28519b[_0xdbb4('0x34')]['length']?_0x28519b[_0xdbb4('0x34')]:_0x1a8024[_0xdbb4('0x30')];if(!_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x42')](_0xdbb4('0x43'))){_0x28519b[_0xdbb4('0x17')]=qs[_0xdbb4('0x17')](_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x17')]);_0x28519b[_0xdbb4('0x15')]=qs[_0xdbb4('0x15')](_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x15')]);}_0x28519b[_0xdbb4('0x44')]=qs[_0xdbb4('0x45')](_0x513581['query']['sort']);_0x28519b[_0xdbb4('0x46')]=qs[_0xdbb4('0x32')](_[_0xdbb4('0x47')](_0x513581['query'],_0x1a8024['filters']));_0x28519b['where'][_0xdbb4('0x48')]=_0xee059['id'];if(_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x49')]){_0x28519b[_0xdbb4('0x46')]=_[_0xdbb4('0x37')](_0x28519b[_0xdbb4('0x46')],{'$or':_[_0xdbb4('0x23')](_0x28519b['attributes'],function(_0x1cbdde){var _0x11979a={};_0x11979a[_0x1cbdde]={'$like':'%'+_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x49')]+'%'};return _0x11979a;})});}if(_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x4a')]){var _0x227228=_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x4a')][_0xdbb4('0x4b')](',');var _0x18fa90={};_0x18fa90[_0x227228[0x0]]={'$gte':moment(_0x227228[0x1])['format'](_0xdbb4('0x4c'))};_0x28519b[_0xdbb4('0x46')]=_[_0xdbb4('0x37')](_0x28519b[_0xdbb4('0x46')],_0x18fa90);}_0x28519b=_[_0xdbb4('0x37')]({},_0x28519b,_0x513581[_0xdbb4('0x38')]);return db[_0xdbb4('0x40')]['count']({'where':_0x28519b[_0xdbb4('0x46')]})[_0xdbb4('0x1c')](function(_0x16be61){_0x5b2798[_0xdbb4('0x18')]=_0x16be61;if(_0x513581[_0xdbb4('0x2b')][_0xdbb4('0x4d')]){_0x28519b[_0xdbb4('0x36')]=[{'all':!![]}];}return db[_0xdbb4('0x40')][_0xdbb4('0x29')](_0x28519b);})[_0xdbb4('0x1c')](function(_0x860e2e){_0x5b2798[_0xdbb4('0x4e')]=_0x860e2e;return _0x5b2798;});}})[_0xdbb4('0x1c')](respondWithFilteredResult(_0x4301d6,_0x28519b))[_0xdbb4('0x2d')](handleError(_0x4301d6,null));};exports[_0xdbb4('0x4f')]=function(_0x503e53,_0x216ffa){return db[_0xdbb4('0x24')][_0xdbb4('0x39')]({'where':{'id':_0x503e53[_0xdbb4('0x2f')]['id']}})[_0xdbb4('0x1c')](handleEntityNotFound(_0x216ffa,null))[_0xdbb4('0x1c')](function(_0x51170f){if(_0x51170f){return _0x51170f['setTags'](_0x503e53[_0xdbb4('0x3b')][_0xdbb4('0x3e')],_['omit'](_0x503e53['body'],['ids','id'])||{})[_0xdbb4('0x50')](function(){return db[_0xdbb4('0x51')][_0xdbb4('0x29')]({'attributes':['id',_0xdbb4('0x20'),_0xdbb4('0x52')],'where':{'id':_0x503e53['body']['ids']}});})[_0xdbb4('0x1c')](function(_0x3ae339){socket[_0xdbb4('0x53')]('whatsappInteractionTags:save',{'id':Number(_0x503e53[_0xdbb4('0x2f')]['id']),'tags':_0x3ae339||[]});return{'id':Number(_0x503e53[_0xdbb4('0x2f')]['id']),'tags':_0x3ae339||[]};});}})[_0xdbb4('0x1c')](respondWithResult(_0x216ffa,null))[_0xdbb4('0x2d')](handleError(_0x216ffa,null));};exports[_0xdbb4('0x54')]=function(_0x122023,_0x4e2c48){return db[_0xdbb4('0x24')][_0xdbb4('0x39')]({'where':{'id':_0x122023[_0xdbb4('0x2f')]['id']}})[_0xdbb4('0x1c')](handleEntityNotFound(_0x4e2c48,null))['then'](function(_0x21a3ed){if(_0x21a3ed){return _0x21a3ed[_0xdbb4('0x54')](_0x122023[_0xdbb4('0x2b')][_0xdbb4('0x3e')]);}})[_0xdbb4('0x1c')](respondWithStatusCode(_0x4e2c48,null))[_0xdbb4('0x2d')](handleError(_0x4e2c48,null));};exports['download']=function(_0x5d238f,_0x4fc484){var _0x1e3549=moment()[_0xdbb4('0x55')]()['toString']();var _0x2288e5=path[_0xdbb4('0x56')](config['root'],'server',_0xdbb4('0x57'),_0xdbb4('0x58'));var _0x1bcce7=path[_0xdbb4('0x56')](config['root'],_0xdbb4('0x59'),_0xdbb4('0x57'),_0xdbb4('0x5a'));var _0x2d38a4=path['join'](_0x2288e5,_0x1e3549);var _0x4ca7d4=util['format']('transcript-%d-%s.zip',_0x5d238f[_0xdbb4('0x2f')]['id'],_0x1e3549);var _0x43172c=path[_0xdbb4('0x56')](_0x2288e5,_0x4ca7d4);var _0x17106c=[];_0x17106c[_0xdbb4('0x5b')]({'model':db[_0xdbb4('0x5c')],'as':_0xdbb4('0x5c'),'attributes':['id',_0xdbb4('0x5d')],'raw':!![]});_0x17106c[_0xdbb4('0x5b')]({'model':db[_0xdbb4('0x5e')],'as':_0xdbb4('0x5f'),'attributes':['id',_0xdbb4('0x60'),_0xdbb4('0x61')],'raw':!![]});if(_0x5d238f[_0xdbb4('0x2b')][_0xdbb4('0x5a')]){_0x17106c[_0xdbb4('0x5b')]({'model':db[_0xdbb4('0x62')],'as':'Attachment','raw':!![]});}var _0x390d30=[{'model':db['WhatsappMessage'],'as':_0xdbb4('0x63'),'attributes':['id','body','createdAt','direction','secret','read'],'include':_0x17106c}];_0x390d30['push']({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0xdbb4('0x20')]});_0x390d30['push']({'model':db[_0xdbb4('0x5c')],'as':_0xdbb4('0x64'),'attributes':['id',_0xdbb4('0x5d')]});return db[_0xdbb4('0x24')]['find']({'where':{'id':_0x5d238f[_0xdbb4('0x2f')]['id']},'include':_0x390d30})[_0xdbb4('0x1c')](handleEntityNotFound(_0x4fc484,null))[_0xdbb4('0x1c')](function(_0x1553e7){if(_0x1553e7){var _0x37b5aa=_0x1553e7[_0xdbb4('0x65')]({'plain':!![]});fs['mkdirSync'](_0x2d38a4);var _0x3ed4f2={'channel':'Whatsapp','account':_0x37b5aa[_0xdbb4('0x66')][_0xdbb4('0x20')],'agent':_0x37b5aa[_0xdbb4('0x64')]?_0x37b5aa[_0xdbb4('0x64')][_0xdbb4('0x5d')]:'N.A.','createdAt':moment(_0x37b5aa['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xdbb4('0x67')](),'closedAt':_0x37b5aa[_0xdbb4('0x68')]?moment(_0x37b5aa[_0xdbb4('0x69')])[_0xdbb4('0x6a')](_0xdbb4('0x4c'))[_0xdbb4('0x67')]():'','disposition':_0x37b5aa[_0xdbb4('0x6b')],'messages':_(_0x37b5aa[_0xdbb4('0x63')])['filter']({'secret':![]})[_0xdbb4('0x23')](function(_0x470e5f){if(_0x470e5f['Attachment']){var _0x30e40d=path[_0xdbb4('0x56')](_0x1bcce7,_0x470e5f[_0xdbb4('0x62')][_0xdbb4('0x6c')]);if(fs[_0xdbb4('0x6d')](_0x30e40d)){fs[_0xdbb4('0x6e')](_0x30e40d)[_0xdbb4('0x6f')](fs[_0xdbb4('0x70')](path[_0xdbb4('0x56')](_0x2d38a4,_0x470e5f[_0xdbb4('0x62')][_0xdbb4('0x6c')])));}}return{'date':moment(_0x470e5f[_0xdbb4('0x71')])[_0xdbb4('0x6a')](_0xdbb4('0x4c'))['toString'](),'sender':_0x470e5f[_0xdbb4('0x72')]===_0xdbb4('0x73')?_0x470e5f[_0xdbb4('0x5c')]?_0x470e5f[_0xdbb4('0x5c')][_0xdbb4('0x5d')]:_0xdbb4('0x74'):_0x470e5f[_0xdbb4('0x5f')][_0xdbb4('0x60')]+(_0x470e5f[_0xdbb4('0x5f')][_0xdbb4('0x61')]?'\x20'+_0x470e5f[_0xdbb4('0x5f')]['lastName']:''),'body':_0x470e5f[_0xdbb4('0x62')]?_0x470e5f['Attachment'][_0xdbb4('0x6c')]:_0x470e5f[_0xdbb4('0x3b')],'direction':_0x470e5f[_0xdbb4('0x72')]===_0xdbb4('0x73')?'A':'C','secret':_0x470e5f['secret'],'read':_0x470e5f['read'],'attachment':_0x470e5f[_0xdbb4('0x62')]};})[_0xdbb4('0x75')]()};return ejs['renderFile'](path['join'](config['root'],'server','views','downloadInteraction.ejs'),{'interaction':_0x3ed4f2})[_0xdbb4('0x1c')](function(_0x277f8c){var _0x21d5b3=path[_0xdbb4('0x56')](_0x2d38a4,_0xdbb4('0x76')+_0x37b5aa['id']+'-'+_0x1e3549+_0xdbb4('0x77'));var _0x3b3650={'path':_0x21d5b3,'channel':'Whatsapp','interactionId':_0x37b5aa['id']};return pdf['createPdfFromHTML'](_0x277f8c,_0x3b3650);})[_0xdbb4('0x1c')](function(){return new BPromise(function(_0x23be21,_0x3b61da){zipdir(_0x2d38a4,{'saveTo':_0x43172c},function(_0x59ebc7,_0x2ceb27){if(_0x59ebc7)return _0x3b61da(_0x59ebc7);return _0x23be21(_0x2ceb27);});})[_0xdbb4('0x1c')](function(){return new BPromise(function(_0x3ba6fe,_0x3fae0f){rimraf(_0x2d38a4,function(_0x5b3618){if(_0x5b3618)_0x3fae0f(_0x5b3618);return _0x3ba6fe();});});})[_0xdbb4('0x1c')](function(){return _0x4fc484['download'](_0x43172c,_0x4ca7d4,function(_0x59ec25){if(_0x59ec25){console[_0xdbb4('0x78')](_0xdbb4('0x79'),_0x59ec25);}else{fs['unlinkSync'](_0x43172c);}});});});}else{return _0x4fc484[_0xdbb4('0x12')](0xc8);}})[_0xdbb4('0x2d')](handleError(_0x4fc484,null));};