35441ad0f0f1ea0d44fbdda112b6d5342e600379
[motion2.git] / server / api / faxInteraction / faxInteraction.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 _0x92a7=['FaxInteraction','fieldName','key','fax','query','user','catch','show','keys','model','attributes','intersection','fields','length','include','merge','body','find','params','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','rawAttributes','filters','hasOwnProperty','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','rows','addTags','setTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','tmp','files','transcript-%d-%s.zip','push','Attachment','Messages','get','mkdirSync','basename','existsSync','pipe','createWriteStream','resolve','log','err','rimraf','moment','bluebird','path','lodash','../../components/interaction/service','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','then','destroy','error','stack','name','index','map'];(function(_0x368a10,_0x1c1555){var _0x36e702=function(_0x2fd13b){while(--_0x2fd13b){_0x368a10['push'](_0x368a10['shift']());}};_0x36e702(++_0x1c1555);}(_0x92a7,0xb1));var _0x792a=function(_0x5bd5e1,_0x514092){_0x5bd5e1=_0x5bd5e1-0x0;var _0x49b530=_0x92a7[_0x5bd5e1];return _0x49b530;};'use strict';var rimraf=require(_0x792a('0x0'));var zipdir=require('zip-dir');var moment=require(_0x792a('0x1'));var BPromise=require(_0x792a('0x2'));var util=require('util');var path=require(_0x792a('0x3'));var fs=require('fs');var _=require(_0x792a('0x4'));var Redis=require('ioredis');var interaction=require(_0x792a('0x5'));var qs=require('../../components/parsers/qs');var logger=require(_0x792a('0x6'))(_0x792a('0x7'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x792a('0x8')]=_[_0x792a('0x9')](config['redis'],{'host':_0x792a('0xa'),'port':0x18eb});var socket=require(_0x792a('0xb'))(new Redis(config[_0x792a('0x8')]));require(_0x792a('0xc'))[_0x792a('0xd')](socket);function respondWithStatusCode(_0x5f060b,_0x17397c){_0x17397c=_0x17397c||0xcc;return function(_0x2913fa){if(_0x2913fa){return _0x5f060b[_0x792a('0xe')](_0x17397c);}return _0x5f060b[_0x792a('0xf')](_0x17397c)[_0x792a('0x10')]();};}function respondWithResult(_0xb4daef,_0x186221){_0x186221=_0x186221||0xc8;return function(_0x574614){if(_0x574614){return _0xb4daef['status'](_0x186221)[_0x792a('0x11')](_0x574614);}};}function respondWithFilteredResult(_0x403803,_0x170476){return function(_0x482670){if(_0x482670){var _0x49b1b1=typeof _0x170476[_0x792a('0x12')]===_0x792a('0x13')&&typeof _0x170476[_0x792a('0x14')]==='undefined';var _0x2af7d=_0x482670[_0x792a('0x15')];var _0x5ad29d=_0x49b1b1?0x0:_0x170476['offset'];var _0x2625b7=_0x49b1b1?_0x482670[_0x792a('0x15')]:_0x170476[_0x792a('0x12')]+_0x170476[_0x792a('0x14')];var _0x4d182e;if(_0x2625b7>=_0x2af7d){_0x2625b7=_0x2af7d;_0x4d182e=0xc8;}else{_0x4d182e=0xce;}_0x403803['status'](_0x4d182e);return _0x403803['set'](_0x792a('0x16'),_0x5ad29d+'-'+_0x2625b7+'/'+_0x2af7d)[_0x792a('0x11')](_0x482670);}return null;};}function saveUpdates(_0x20d878){return function(_0x24c528){if(_0x24c528){return _0x24c528[_0x792a('0x17')](_0x20d878)[_0x792a('0x18')](function(_0x649709){return _0x649709;});}return null;};}function removeEntity(_0x420979){return function(_0x113b3e){if(_0x113b3e){return _0x113b3e[_0x792a('0x19')]()[_0x792a('0x18')](function(){_0x420979[_0x792a('0xf')](0xcc)[_0x792a('0x10')]();});}};}function handleEntityNotFound(_0xfffa49){return function(_0x270c24){if(!_0x270c24){_0xfffa49[_0x792a('0xe')](0x194);}return _0x270c24;};}function handleError(_0x253913,_0x466397){_0x466397=_0x466397||0x1f4;return function(_0x8bcf98){logger[_0x792a('0x1a')](_0x8bcf98[_0x792a('0x1b')]);if(_0x8bcf98[_0x792a('0x1c')]){delete _0x8bcf98[_0x792a('0x1c')];}_0x253913[_0x792a('0xf')](_0x466397)['send'](_0x8bcf98);};}exports[_0x792a('0x1d')]=function(_0x4310cb,_0x52a300){var _0x1a71b1={};var _0x21a8e5=_[_0x792a('0x1e')](db[_0x792a('0x1f')]['rawAttributes'],function(_0x5c8ae7){return{'name':_0x5c8ae7[_0x792a('0x20')],'type':_0x5c8ae7['type'][_0x792a('0x21')]};});_0x1a71b1=qs['getOptions'](_0x21a8e5,_0x4310cb);return interaction['findAll'](_0x792a('0x22'),_0x4310cb[_0x792a('0x23')],_0x4310cb[_0x792a('0x24')],_0x1a71b1,_0x21a8e5)['then'](respondWithFilteredResult(_0x52a300,_0x1a71b1))[_0x792a('0x25')](handleError(_0x52a300,null));};exports[_0x792a('0x26')]=function(_0x1ef2fd,_0xd2c696){var _0x5ac85b={'raw':![],'where':{'id':_0x1ef2fd['params']['id']}},_0x3bb08f={};_0x3bb08f['model']=_[_0x792a('0x27')](db[_0x792a('0x1f')]['rawAttributes']);_0x3bb08f[_0x792a('0x23')]=_['keys'](_0x1ef2fd['query']);_0x3bb08f['filters']=_['intersection'](_0x3bb08f[_0x792a('0x28')],_0x3bb08f[_0x792a('0x23')]);_0x5ac85b[_0x792a('0x29')]=_[_0x792a('0x2a')](_0x3bb08f['model'],qs[_0x792a('0x2b')](_0x1ef2fd[_0x792a('0x23')]['fields']));_0x5ac85b['attributes']=_0x5ac85b['attributes'][_0x792a('0x2c')]?_0x5ac85b[_0x792a('0x29')]:_0x3bb08f[_0x792a('0x28')];if(_0x1ef2fd[_0x792a('0x23')]['includeAll']){_0x5ac85b[_0x792a('0x2d')]=[{'all':!![]}];}_0x5ac85b=_[_0x792a('0x2e')]({},_0x5ac85b,_0x1ef2fd['options']);return db[_0x792a('0x1f')]['find'](_0x5ac85b)[_0x792a('0x18')](handleEntityNotFound(_0xd2c696,null))[_0x792a('0x18')](respondWithResult(_0xd2c696,null))[_0x792a('0x25')](handleError(_0xd2c696,null));};exports['create']=function(_0x551def,_0x17fe09){return db[_0x792a('0x1f')]['create'](_0x551def['body'],{})[_0x792a('0x18')](respondWithResult(_0x17fe09,0xc9))[_0x792a('0x25')](handleError(_0x17fe09,null));};exports['update']=function(_0x439287,_0x9c0803){if(_0x439287[_0x792a('0x2f')]['id']){delete _0x439287[_0x792a('0x2f')]['id'];}return db['FaxInteraction'][_0x792a('0x30')]({'where':{'id':_0x439287[_0x792a('0x31')]['id']}})[_0x792a('0x18')](handleEntityNotFound(_0x9c0803,null))[_0x792a('0x18')](saveUpdates(_0x439287['body'],null))[_0x792a('0x18')](respondWithResult(_0x9c0803,null))['catch'](handleError(_0x9c0803,null));};exports[_0x792a('0x19')]=function(_0x5cf7bf,_0x343037){return db[_0x792a('0x1f')]['find']({'where':{'id':_0x5cf7bf['params']['id']}})[_0x792a('0x18')](handleEntityNotFound(_0x343037,null))[_0x792a('0x18')](removeEntity(_0x343037,null))[_0x792a('0x25')](handleError(_0x343037,null));};exports[_0x792a('0x32')]=function(_0x4be863,_0x75c82d){return db[_0x792a('0x1f')][_0x792a('0x32')]()['then'](respondWithResult(_0x75c82d,null))[_0x792a('0x25')](handleError(_0x75c82d,null));};exports[_0x792a('0x33')]=function(_0x2d32e2,_0x25992f){return db[_0x792a('0x34')][_0x792a('0x30')]({'where':{'id':_0x2d32e2['params']['id']}})[_0x792a('0x18')](handleEntityNotFound(_0x25992f,null))[_0x792a('0x18')](function(_0x4aa311){if(_0x4aa311){return _0x4aa311[_0x792a('0x33')](_0x2d32e2[_0x792a('0x2f')][_0x792a('0x35')],_[_0x792a('0x36')](_0x2d32e2['body'],['ids','id'])||{});}})[_0x792a('0x18')](respondWithResult(_0x25992f,null))['catch'](handleError(_0x25992f,null));};exports[_0x792a('0x37')]=function(_0x2539b5,_0x11aa3c){var _0x31046b={'raw':![],'where':{}};var _0x20c334={};var _0x41db19={'count':0x0,'rows':[]};return db['FaxInteraction'][_0x792a('0x38')]({'where':{'id':_0x2539b5[_0x792a('0x31')]['id']}})[_0x792a('0x18')](handleEntityNotFound(_0x11aa3c,null))['then'](function(_0x5aac5a){if(_0x5aac5a){_0x20c334[_0x792a('0x28')]=_[_0x792a('0x27')](db[_0x792a('0x34')][_0x792a('0x39')]);_0x20c334['query']=_['keys'](_0x2539b5[_0x792a('0x23')]);_0x20c334[_0x792a('0x3a')]=_[_0x792a('0x2a')](_0x20c334[_0x792a('0x28')],_0x20c334['query']);_0x31046b[_0x792a('0x29')]=_[_0x792a('0x2a')](_0x20c334[_0x792a('0x28')],qs[_0x792a('0x2b')](_0x2539b5[_0x792a('0x23')][_0x792a('0x2b')]));_0x31046b['attributes']=_0x31046b[_0x792a('0x29')][_0x792a('0x2c')]?_0x31046b['attributes']:_0x20c334[_0x792a('0x28')];if(!_0x2539b5['query'][_0x792a('0x3b')](_0x792a('0x3c'))){_0x31046b[_0x792a('0x14')]=qs[_0x792a('0x14')](_0x2539b5[_0x792a('0x23')][_0x792a('0x14')]);_0x31046b[_0x792a('0x12')]=qs[_0x792a('0x12')](_0x2539b5[_0x792a('0x23')][_0x792a('0x12')]);}_0x31046b[_0x792a('0x3d')]=qs[_0x792a('0x3e')](_0x2539b5['query'][_0x792a('0x3e')]);_0x31046b[_0x792a('0x3f')]=qs[_0x792a('0x3a')](_[_0x792a('0x40')](_0x2539b5[_0x792a('0x23')],_0x20c334[_0x792a('0x3a')]));_0x31046b[_0x792a('0x3f')][_0x792a('0x41')]=_0x5aac5a['id'];if(_0x2539b5[_0x792a('0x23')][_0x792a('0x42')]){_0x31046b[_0x792a('0x3f')]=_[_0x792a('0x2e')](_0x31046b['where'],{'$or':_['map'](_0x31046b['attributes'],function(_0x4e822a){var _0x5ea3d4={};_0x5ea3d4[_0x4e822a]={'$like':'%'+_0x2539b5[_0x792a('0x23')][_0x792a('0x42')]+'%'};return _0x5ea3d4;})});}if(_0x2539b5['query'][_0x792a('0x43')]){var _0x263699=_0x2539b5[_0x792a('0x23')]['$gte'][_0x792a('0x44')](',');var _0x1597a4={};_0x1597a4[_0x263699[0x0]]={'$gte':moment(_0x263699[0x1])[_0x792a('0x45')](_0x792a('0x46'))};_0x31046b[_0x792a('0x3f')]=_[_0x792a('0x2e')](_0x31046b['where'],_0x1597a4);}_0x31046b=_['merge']({},_0x31046b,_0x2539b5[_0x792a('0x47')]);return db[_0x792a('0x34')][_0x792a('0x15')]({'where':_0x31046b['where']})[_0x792a('0x18')](function(_0x1d959a){_0x41db19[_0x792a('0x15')]=_0x1d959a;if(_0x2539b5['query'][_0x792a('0x48')]){_0x31046b[_0x792a('0x2d')]=[{'all':!![]}];}return db[_0x792a('0x34')][_0x792a('0x49')](_0x31046b);})[_0x792a('0x18')](function(_0x340555){_0x41db19[_0x792a('0x4a')]=_0x340555;return _0x41db19;});}})['then'](respondWithFilteredResult(_0x11aa3c,_0x31046b))['catch'](handleError(_0x11aa3c,null));};exports[_0x792a('0x4b')]=function(_0x1a26f5,_0x592806){return db[_0x792a('0x1f')]['find']({'where':{'id':_0x1a26f5['params']['id']}})['then'](handleEntityNotFound(_0x592806,null))[_0x792a('0x18')](function(_0x46f5ee){if(_0x46f5ee){return _0x46f5ee[_0x792a('0x4c')](_0x1a26f5[_0x792a('0x2f')][_0x792a('0x35')],_[_0x792a('0x36')](_0x1a26f5['body'],[_0x792a('0x35'),'id'])||{})[_0x792a('0x4d')](function(){return db[_0x792a('0x4e')][_0x792a('0x49')]({'attributes':['id',_0x792a('0x1c'),_0x792a('0x4f')],'where':{'id':_0x1a26f5['body'][_0x792a('0x35')]}});})['then'](function(_0x3dabdc){socket[_0x792a('0x50')](_0x792a('0x51'),{'id':Number(_0x1a26f5[_0x792a('0x31')]['id']),'tags':_0x3dabdc||[]});return{'id':Number(_0x1a26f5['params']['id']),'tags':_0x3dabdc||[]};});}})[_0x792a('0x18')](respondWithResult(_0x592806,null))[_0x792a('0x25')](handleError(_0x592806,null));};exports[_0x792a('0x52')]=function(_0x327fae,_0x5832fb){return db[_0x792a('0x1f')][_0x792a('0x30')]({'where':{'id':_0x327fae['params']['id']}})[_0x792a('0x18')](handleEntityNotFound(_0x5832fb,null))[_0x792a('0x18')](function(_0x581042){if(_0x581042){return _0x581042[_0x792a('0x52')](_0x327fae['query'][_0x792a('0x35')]);}})[_0x792a('0x18')](respondWithStatusCode(_0x5832fb,null))[_0x792a('0x25')](handleError(_0x5832fb,null));};exports[_0x792a('0x53')]=function(_0x19ce1f,_0x408170){var _0xe6e256=moment()[_0x792a('0x54')]()[_0x792a('0x55')]();var _0x3785b5=path[_0x792a('0x56')](config[_0x792a('0x57')],_0x792a('0x58'),'files',_0x792a('0x59'));var _0x6ec793=path[_0x792a('0x56')](config[_0x792a('0x57')],'server',_0x792a('0x5a'),'attachments');var _0x4ffc1=path[_0x792a('0x56')](_0x3785b5,_0xe6e256);var _0x1067ec=util[_0x792a('0x45')](_0x792a('0x5b'),_0x19ce1f[_0x792a('0x31')]['id'],_0xe6e256);var _0x3ba619=path[_0x792a('0x56')](_0x3785b5,_0x1067ec);var _0x3db21e=[];_0x3db21e[_0x792a('0x5c')]({'model':db[_0x792a('0x5d')],'as':_0x792a('0x5d'),'raw':!![]});var _0x15b7f6=[{'model':db['FaxMessage'],'as':_0x792a('0x5e'),'attributes':['id',_0x792a('0x2f'),'createdAt'],'include':_0x3db21e}];return db[_0x792a('0x1f')][_0x792a('0x30')]({'where':{'id':_0x19ce1f[_0x792a('0x31')]['id']},'include':_0x15b7f6})[_0x792a('0x18')](handleEntityNotFound(_0x408170,null))[_0x792a('0x18')](function(_0x30a415){if(_0x30a415&&_0x30a415['Messages']){var _0x2add31=_0x30a415[_0x792a('0x5f')]({'plain':!![]});fs[_0x792a('0x60')](_0x4ffc1);for(var _0x57e43c=0x0;_0x57e43c<_0x2add31[_0x792a('0x5e')][_0x792a('0x2c')];_0x57e43c++){var _0x5ffa1=_0x2add31[_0x792a('0x5e')][_0x57e43c][_0x792a('0x5d')];if(_0x5ffa1){var _0x5a3c2c=path[_0x792a('0x56')](_0x6ec793,_0x5ffa1[_0x792a('0x61')]);if(fs[_0x792a('0x62')](_0x5a3c2c)){fs['createReadStream'](_0x5a3c2c)[_0x792a('0x63')](fs[_0x792a('0x64')](path[_0x792a('0x56')](_0x4ffc1,_0x5ffa1[_0x792a('0x61')])));}}}return BPromise[_0x792a('0x65')]()['then'](function(){return new BPromise(function(_0x461f3d,_0x1b8977){zipdir(_0x4ffc1,{'saveTo':_0x3ba619},function(_0x4e4b29,_0x50f0c){if(_0x4e4b29)return _0x1b8977(_0x4e4b29);return _0x461f3d(_0x50f0c);});})[_0x792a('0x18')](function(){return new BPromise(function(_0x62a82,_0x17d3cc){rimraf(_0x4ffc1,function(_0x1f24e2){if(_0x1f24e2)_0x17d3cc(_0x1f24e2);return _0x62a82();});});})['then'](function(){return _0x408170[_0x792a('0x53')](_0x3ba619,_0x1067ec,function(_0x1b3a28){if(_0x1b3a28){console[_0x792a('0x66')](_0x792a('0x67'),_0x1b3a28);}else{fs['unlinkSync'](_0x3ba619);}});});});}else{return _0x408170[_0x792a('0xe')](0xc8);}})[_0x792a('0x25')](handleError(_0x408170,null));};