3faf12e2184a08c13fa301428174d8c9f2c52bf3
[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 _0xea11=['order','sort','where','pick','FaxInteractionId','filter','$gte','format','count','rows','addTags','setTags','omit','Tag','color','faxInteractionTags:save','removeTags','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','download','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','update','then','destroy','name','FaxInteraction','fieldName','type','key','getOptions','findAll','fax','user','catch','show','params','model','keys','rawAttributes','query','filters','intersection','fields','attributes','includeAll','include','merge','options','create','body','find','describe','addMessage','FaxMessage','ids','getMessages','findOne','length','hasOwnProperty','nolimit'];(function(_0x2134b7,_0x1eb5e2){var _0x6c5914=function(_0x1da201){while(--_0x1da201){_0x2134b7['push'](_0x2134b7['shift']());}};_0x6c5914(++_0x1eb5e2);}(_0xea11,0x161));var _0x1ea1=function(_0x230c15,_0x11f71c){_0x230c15=_0x230c15-0x0;var _0x50ce5d=_0xea11[_0x230c15];return _0x50ce5d;};'use strict';var rimraf=require(_0x1ea1('0x0'));var zipdir=require(_0x1ea1('0x1'));var moment=require(_0x1ea1('0x2'));var BPromise=require(_0x1ea1('0x3'));var util=require(_0x1ea1('0x4'));var path=require(_0x1ea1('0x5'));var fs=require('fs');var _=require(_0x1ea1('0x6'));var Redis=require('ioredis');var interaction=require(_0x1ea1('0x7'));var qs=require(_0x1ea1('0x8'));var logger=require(_0x1ea1('0x9'))('api');var config=require(_0x1ea1('0xa'));var db=require('../../mysqldb')['db'];config[_0x1ea1('0xb')]=_[_0x1ea1('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1ea1('0xd'))(new Redis(config[_0x1ea1('0xb')]));require('./faxInteraction.socket')[_0x1ea1('0xe')](socket);function respondWithStatusCode(_0x3aa197,_0x544fd8){_0x544fd8=_0x544fd8||0xcc;return function(_0x17e0e4){if(_0x17e0e4){return _0x3aa197[_0x1ea1('0xf')](_0x544fd8);}return _0x3aa197[_0x1ea1('0x10')](_0x544fd8)[_0x1ea1('0x11')]();};}function respondWithResult(_0x1a467f,_0x236153){_0x236153=_0x236153||0xc8;return function(_0x3c5d39){if(_0x3c5d39){return _0x1a467f[_0x1ea1('0x10')](_0x236153)[_0x1ea1('0x12')](_0x3c5d39);}};}function respondWithFilteredResult(_0x41f0af,_0x24abd4){return function(_0x429e08){if(_0x429e08){var _0x4ec3c6=typeof _0x24abd4[_0x1ea1('0x13')]===_0x1ea1('0x14')&&typeof _0x24abd4[_0x1ea1('0x15')]===_0x1ea1('0x14');var _0x33c656=_0x429e08['count'];var _0x1a9a3f=_0x4ec3c6?0x0:_0x24abd4[_0x1ea1('0x13')];var _0x1cbe82=_0x4ec3c6?_0x429e08['count']:_0x24abd4[_0x1ea1('0x13')]+_0x24abd4[_0x1ea1('0x15')];var _0x25a61f;if(_0x1cbe82>=_0x33c656){_0x1cbe82=_0x33c656;_0x25a61f=0xc8;}else{_0x25a61f=0xce;}_0x41f0af['status'](_0x25a61f);return _0x41f0af[_0x1ea1('0x16')](_0x1ea1('0x17'),_0x1a9a3f+'-'+_0x1cbe82+'/'+_0x33c656)['json'](_0x429e08);}return null;};}function saveUpdates(_0xf4fd3){return function(_0x5d78b1){if(_0x5d78b1){return _0x5d78b1[_0x1ea1('0x18')](_0xf4fd3)[_0x1ea1('0x19')](function(_0x3b81d0){return _0x3b81d0;});}return null;};}function removeEntity(_0x3a0d3d){return function(_0x4a521b){if(_0x4a521b){return _0x4a521b[_0x1ea1('0x1a')]()[_0x1ea1('0x19')](function(){_0x3a0d3d['status'](0xcc)[_0x1ea1('0x11')]();});}};}function handleEntityNotFound(_0x3e6c5b){return function(_0x3c3da8){if(!_0x3c3da8){_0x3e6c5b[_0x1ea1('0xf')](0x194);}return _0x3c3da8;};}function handleError(_0x5ef848,_0x341900){_0x341900=_0x341900||0x1f4;return function(_0x2a63fe){logger['error'](_0x2a63fe['stack']);if(_0x2a63fe['name']){delete _0x2a63fe[_0x1ea1('0x1b')];}_0x5ef848[_0x1ea1('0x10')](_0x341900)['send'](_0x2a63fe);};}exports['index']=function(_0x5e570d,_0x4d731b){var _0x4894a3={};var _0x4bc8e0=_['map'](db[_0x1ea1('0x1c')]['rawAttributes'],function(_0x55c23f){return{'name':_0x55c23f[_0x1ea1('0x1d')],'type':_0x55c23f[_0x1ea1('0x1e')][_0x1ea1('0x1f')]};});_0x4894a3=qs[_0x1ea1('0x20')](_0x4bc8e0,_0x5e570d);return interaction[_0x1ea1('0x21')](_0x1ea1('0x22'),_0x5e570d['query'],_0x5e570d[_0x1ea1('0x23')],_0x4894a3,_0x4bc8e0)[_0x1ea1('0x19')](respondWithFilteredResult(_0x4d731b,_0x4894a3))[_0x1ea1('0x24')](handleError(_0x4d731b,null));};exports[_0x1ea1('0x25')]=function(_0x3523fd,_0x32da68){var _0x35d408={'raw':![],'where':{'id':_0x3523fd[_0x1ea1('0x26')]['id']}},_0x5c88cd={};_0x5c88cd[_0x1ea1('0x27')]=_[_0x1ea1('0x28')](db[_0x1ea1('0x1c')][_0x1ea1('0x29')]);_0x5c88cd['query']=_[_0x1ea1('0x28')](_0x3523fd[_0x1ea1('0x2a')]);_0x5c88cd[_0x1ea1('0x2b')]=_['intersection'](_0x5c88cd['model'],_0x5c88cd[_0x1ea1('0x2a')]);_0x35d408['attributes']=_[_0x1ea1('0x2c')](_0x5c88cd['model'],qs[_0x1ea1('0x2d')](_0x3523fd[_0x1ea1('0x2a')][_0x1ea1('0x2d')]));_0x35d408[_0x1ea1('0x2e')]=_0x35d408[_0x1ea1('0x2e')]['length']?_0x35d408[_0x1ea1('0x2e')]:_0x5c88cd['model'];if(_0x3523fd[_0x1ea1('0x2a')][_0x1ea1('0x2f')]){_0x35d408[_0x1ea1('0x30')]=[{'all':!![]}];}_0x35d408=_[_0x1ea1('0x31')]({},_0x35d408,_0x3523fd[_0x1ea1('0x32')]);return db[_0x1ea1('0x1c')]['find'](_0x35d408)[_0x1ea1('0x19')](handleEntityNotFound(_0x32da68,null))[_0x1ea1('0x19')](respondWithResult(_0x32da68,null))[_0x1ea1('0x24')](handleError(_0x32da68,null));};exports[_0x1ea1('0x33')]=function(_0x3d26dc,_0x5d8a0b){return db[_0x1ea1('0x1c')][_0x1ea1('0x33')](_0x3d26dc[_0x1ea1('0x34')],{})['then'](respondWithResult(_0x5d8a0b,0xc9))[_0x1ea1('0x24')](handleError(_0x5d8a0b,null));};exports[_0x1ea1('0x18')]=function(_0x694056,_0x1eb91d){if(_0x694056[_0x1ea1('0x34')]['id']){delete _0x694056['body']['id'];}return db[_0x1ea1('0x1c')][_0x1ea1('0x35')]({'where':{'id':_0x694056[_0x1ea1('0x26')]['id']}})[_0x1ea1('0x19')](handleEntityNotFound(_0x1eb91d,null))['then'](saveUpdates(_0x694056['body'],null))[_0x1ea1('0x19')](respondWithResult(_0x1eb91d,null))[_0x1ea1('0x24')](handleError(_0x1eb91d,null));};exports[_0x1ea1('0x1a')]=function(_0x1ebead,_0x48f5e9){return db[_0x1ea1('0x1c')][_0x1ea1('0x35')]({'where':{'id':_0x1ebead[_0x1ea1('0x26')]['id']}})[_0x1ea1('0x19')](handleEntityNotFound(_0x48f5e9,null))['then'](removeEntity(_0x48f5e9,null))['catch'](handleError(_0x48f5e9,null));};exports[_0x1ea1('0x36')]=function(_0x2ec6bf,_0x3cc455){return db[_0x1ea1('0x1c')]['describe']()[_0x1ea1('0x19')](respondWithResult(_0x3cc455,null))[_0x1ea1('0x24')](handleError(_0x3cc455,null));};exports[_0x1ea1('0x37')]=function(_0x14772c,_0x5857e4){return db[_0x1ea1('0x38')]['find']({'where':{'id':_0x14772c[_0x1ea1('0x26')]['id']}})[_0x1ea1('0x19')](handleEntityNotFound(_0x5857e4,null))[_0x1ea1('0x19')](function(_0x35659e){if(_0x35659e){return _0x35659e[_0x1ea1('0x37')](_0x14772c['body'][_0x1ea1('0x39')],_['omit'](_0x14772c[_0x1ea1('0x34')],['ids','id'])||{});}})[_0x1ea1('0x19')](respondWithResult(_0x5857e4,null))[_0x1ea1('0x24')](handleError(_0x5857e4,null));};exports[_0x1ea1('0x3a')]=function(_0x226be6,_0x2c6b7e){var _0xadadc={'raw':![],'where':{}};var _0x51be7b={};var _0x206ae1={'count':0x0,'rows':[]};return db[_0x1ea1('0x1c')][_0x1ea1('0x3b')]({'where':{'id':_0x226be6[_0x1ea1('0x26')]['id']}})[_0x1ea1('0x19')](handleEntityNotFound(_0x2c6b7e,null))[_0x1ea1('0x19')](function(_0x3da50a){if(_0x3da50a){_0x51be7b[_0x1ea1('0x27')]=_[_0x1ea1('0x28')](db[_0x1ea1('0x38')]['rawAttributes']);_0x51be7b[_0x1ea1('0x2a')]=_[_0x1ea1('0x28')](_0x226be6['query']);_0x51be7b['filters']=_[_0x1ea1('0x2c')](_0x51be7b['model'],_0x51be7b[_0x1ea1('0x2a')]);_0xadadc[_0x1ea1('0x2e')]=_[_0x1ea1('0x2c')](_0x51be7b[_0x1ea1('0x27')],qs[_0x1ea1('0x2d')](_0x226be6['query'][_0x1ea1('0x2d')]));_0xadadc[_0x1ea1('0x2e')]=_0xadadc[_0x1ea1('0x2e')][_0x1ea1('0x3c')]?_0xadadc['attributes']:_0x51be7b[_0x1ea1('0x27')];if(!_0x226be6['query'][_0x1ea1('0x3d')](_0x1ea1('0x3e'))){_0xadadc[_0x1ea1('0x15')]=qs['limit'](_0x226be6['query'][_0x1ea1('0x15')]);_0xadadc[_0x1ea1('0x13')]=qs[_0x1ea1('0x13')](_0x226be6[_0x1ea1('0x2a')][_0x1ea1('0x13')]);}_0xadadc[_0x1ea1('0x3f')]=qs[_0x1ea1('0x40')](_0x226be6['query']['sort']);_0xadadc[_0x1ea1('0x41')]=qs[_0x1ea1('0x2b')](_[_0x1ea1('0x42')](_0x226be6['query'],_0x51be7b[_0x1ea1('0x2b')]));_0xadadc[_0x1ea1('0x41')][_0x1ea1('0x43')]=_0x3da50a['id'];if(_0x226be6[_0x1ea1('0x2a')][_0x1ea1('0x44')]){_0xadadc[_0x1ea1('0x41')]=_['merge'](_0xadadc[_0x1ea1('0x41')],{'$or':_['map'](_0xadadc[_0x1ea1('0x2e')],function(_0x4f2685){var _0x3b7131={};_0x3b7131[_0x4f2685]={'$like':'%'+_0x226be6[_0x1ea1('0x2a')][_0x1ea1('0x44')]+'%'};return _0x3b7131;})});}if(_0x226be6[_0x1ea1('0x2a')][_0x1ea1('0x45')]){var _0x2c75f8=_0x226be6[_0x1ea1('0x2a')][_0x1ea1('0x45')]['split'](',');var _0x11540d={};_0x11540d[_0x2c75f8[0x0]]={'$gte':moment(_0x2c75f8[0x1])[_0x1ea1('0x46')]('YYYY-MM-DD\x20HH:mm:ss')};_0xadadc[_0x1ea1('0x41')]=_['merge'](_0xadadc[_0x1ea1('0x41')],_0x11540d);}_0xadadc=_[_0x1ea1('0x31')]({},_0xadadc,_0x226be6[_0x1ea1('0x32')]);return db['FaxMessage']['count']({'where':_0xadadc['where']})[_0x1ea1('0x19')](function(_0x3abbe1){_0x206ae1[_0x1ea1('0x47')]=_0x3abbe1;if(_0x226be6['query'][_0x1ea1('0x2f')]){_0xadadc[_0x1ea1('0x30')]=[{'all':!![]}];}return db['FaxMessage'][_0x1ea1('0x21')](_0xadadc);})[_0x1ea1('0x19')](function(_0x1435aa){_0x206ae1[_0x1ea1('0x48')]=_0x1435aa;return _0x206ae1;});}})[_0x1ea1('0x19')](respondWithFilteredResult(_0x2c6b7e,_0xadadc))['catch'](handleError(_0x2c6b7e,null));};exports[_0x1ea1('0x49')]=function(_0x432982,_0x50a728){return db['FaxInteraction'][_0x1ea1('0x35')]({'where':{'id':_0x432982[_0x1ea1('0x26')]['id']}})['then'](handleEntityNotFound(_0x50a728,null))[_0x1ea1('0x19')](function(_0x3b5412){if(_0x3b5412){return _0x3b5412[_0x1ea1('0x4a')](_0x432982['body'][_0x1ea1('0x39')],_[_0x1ea1('0x4b')](_0x432982[_0x1ea1('0x34')],[_0x1ea1('0x39'),'id'])||{})['spread'](function(){return db[_0x1ea1('0x4c')][_0x1ea1('0x21')]({'attributes':['id',_0x1ea1('0x1b'),_0x1ea1('0x4d')],'where':{'id':_0x432982[_0x1ea1('0x34')][_0x1ea1('0x39')]}});})[_0x1ea1('0x19')](function(_0x59928b){socket['emit'](_0x1ea1('0x4e'),{'id':Number(_0x432982[_0x1ea1('0x26')]['id']),'tags':_0x59928b||[]});return{'id':Number(_0x432982['params']['id']),'tags':_0x59928b||[]};});}})['then'](respondWithResult(_0x50a728,null))[_0x1ea1('0x24')](handleError(_0x50a728,null));};exports[_0x1ea1('0x4f')]=function(_0x4176a3,_0x185559){return db[_0x1ea1('0x1c')]['find']({'where':{'id':_0x4176a3[_0x1ea1('0x26')]['id']}})[_0x1ea1('0x19')](handleEntityNotFound(_0x185559,null))[_0x1ea1('0x19')](function(_0x7d2310){if(_0x7d2310){return _0x7d2310[_0x1ea1('0x4f')](_0x4176a3['query'][_0x1ea1('0x39')]);}})[_0x1ea1('0x19')](respondWithStatusCode(_0x185559,null))['catch'](handleError(_0x185559,null));};exports['download']=function(_0x1e151e,_0x3f9978){var _0x21697b=moment()['unix']()[_0x1ea1('0x50')]();var _0x4287de=path[_0x1ea1('0x51')](config[_0x1ea1('0x52')],_0x1ea1('0x53'),_0x1ea1('0x54'),_0x1ea1('0x55'));var _0x45de8d=path[_0x1ea1('0x51')](config[_0x1ea1('0x52')],_0x1ea1('0x53'),_0x1ea1('0x54'),_0x1ea1('0x56'));var _0x537831=path[_0x1ea1('0x51')](_0x4287de,_0x21697b);var _0x3be483=util['format'](_0x1ea1('0x57'),_0x1e151e['params']['id'],_0x21697b);var _0x54f2f2=path['join'](_0x4287de,_0x3be483);var _0x3a6969=[];_0x3a6969[_0x1ea1('0x58')]({'model':db[_0x1ea1('0x59')],'as':_0x1ea1('0x59'),'raw':!![]});var _0x519fc9=[{'model':db[_0x1ea1('0x38')],'as':_0x1ea1('0x5a'),'attributes':['id',_0x1ea1('0x34'),_0x1ea1('0x5b')],'include':_0x3a6969}];return db['FaxInteraction']['find']({'where':{'id':_0x1e151e[_0x1ea1('0x26')]['id']},'include':_0x519fc9})[_0x1ea1('0x19')](handleEntityNotFound(_0x3f9978,null))[_0x1ea1('0x19')](function(_0x4a9392){if(_0x4a9392&&_0x4a9392[_0x1ea1('0x5a')]){var _0x52d6b4=_0x4a9392[_0x1ea1('0x5c')]({'plain':!![]});fs[_0x1ea1('0x5d')](_0x537831);for(var _0x13416a=0x0;_0x13416a<_0x52d6b4['Messages'][_0x1ea1('0x3c')];_0x13416a++){var _0x4f392d=_0x52d6b4[_0x1ea1('0x5a')][_0x13416a][_0x1ea1('0x59')];if(_0x4f392d){var _0x25fb07=path[_0x1ea1('0x51')](_0x45de8d,_0x4f392d[_0x1ea1('0x5e')]);if(fs[_0x1ea1('0x5f')](_0x25fb07)){fs[_0x1ea1('0x60')](_0x25fb07)[_0x1ea1('0x61')](fs[_0x1ea1('0x62')](path[_0x1ea1('0x51')](_0x537831,_0x4f392d[_0x1ea1('0x5e')])));}}}return BPromise[_0x1ea1('0x63')]()[_0x1ea1('0x19')](function(){return new BPromise(function(_0x2fd9ed,_0x188bc2){zipdir(_0x537831,{'saveTo':_0x54f2f2},function(_0x16e268,_0x197865){if(_0x16e268)return _0x188bc2(_0x16e268);return _0x2fd9ed(_0x197865);});})['then'](function(){return new BPromise(function(_0x32de92,_0x38bd88){rimraf(_0x537831,function(_0x27560d){if(_0x27560d)_0x38bd88(_0x27560d);return _0x32de92();});});})[_0x1ea1('0x19')](function(){return _0x3f9978[_0x1ea1('0x64')](_0x54f2f2,_0x3be483,function(_0x747e66){if(_0x747e66){console[_0x1ea1('0x65')](_0x1ea1('0x66'),_0x747e66);}else{fs[_0x1ea1('0x67')](_0x54f2f2);}});});});}else{return _0x3f9978[_0x1ea1('0xf')](0xc8);}})[_0x1ea1('0x24')](handleError(_0x3f9978,null));};