4ef605496cf3a7aefb9ec95ed0e487bc18b7b560
[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 _0x07d3=['addTags','setTags','spread','Tag','color','emit','removeTags','unix','toString','join','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','existsSync','pipe','createWriteStream','basename','resolve','download','log','unlinkSync','zip-dir','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','./faxInteraction.socket','register','end','status','json','offset','undefined','limit','count','set','Content-Range','update','then','sendStatus','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','params','model','filters','intersection','attributes','fields','length','includeAll','include','options','FaxInteraction','find','create','body','catch','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','keys','hasOwnProperty','nolimit','sort','pick','where','FaxInteractionId','merge','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows'];(function(_0x45ffeb,_0xc0af19){var _0x5133bd=function(_0x1cd8bd){while(--_0x1cd8bd){_0x45ffeb['push'](_0x45ffeb['shift']());}};_0x5133bd(++_0xc0af19);}(_0x07d3,0xe7));var _0x307d=function(_0x308698,_0x580bc6){_0x308698=_0x308698-0x0;var _0x5b061f=_0x07d3[_0x308698];return _0x5b061f;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x307d('0x0'));var moment=require('moment');var BPromise=require(_0x307d('0x1'));var util=require('util');var path=require(_0x307d('0x2'));var fs=require('fs');var _=require(_0x307d('0x3'));var Redis=require(_0x307d('0x4'));var interaction=require(_0x307d('0x5'));var qs=require(_0x307d('0x6'));var logger=require(_0x307d('0x7'))(_0x307d('0x8'));var config=require(_0x307d('0x9'));var db=require(_0x307d('0xa'))['db'];config[_0x307d('0xb')]=_[_0x307d('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x307d('0xd'))[_0x307d('0xe')](socket);function respondWithStatusCode(_0x1c05d3,_0x1c6b93){_0x1c6b93=_0x1c6b93||0xcc;return function(_0x3f9d17){if(_0x3f9d17){return _0x1c05d3['sendStatus'](_0x1c6b93);}return _0x1c05d3['status'](_0x1c6b93)[_0x307d('0xf')]();};}function respondWithResult(_0x31f3fe,_0x100439){_0x100439=_0x100439||0xc8;return function(_0x565ec2){if(_0x565ec2){return _0x31f3fe[_0x307d('0x10')](_0x100439)[_0x307d('0x11')](_0x565ec2);}};}function respondWithFilteredResult(_0x36961b,_0xb06127){return function(_0x25d1cd){if(_0x25d1cd){var _0x21e3b7=typeof _0xb06127[_0x307d('0x12')]===_0x307d('0x13')&&typeof _0xb06127[_0x307d('0x14')]===_0x307d('0x13');var _0x4a5292=_0x25d1cd[_0x307d('0x15')];var _0x395e27=_0x21e3b7?0x0:_0xb06127[_0x307d('0x12')];var _0x297cfa=_0x21e3b7?_0x25d1cd[_0x307d('0x15')]:_0xb06127[_0x307d('0x12')]+_0xb06127[_0x307d('0x14')];var _0x593cf9;if(_0x297cfa>=_0x4a5292){_0x297cfa=_0x4a5292;_0x593cf9=0xc8;}else{_0x593cf9=0xce;}_0x36961b['status'](_0x593cf9);return _0x36961b[_0x307d('0x16')](_0x307d('0x17'),_0x395e27+'-'+_0x297cfa+'/'+_0x4a5292)['json'](_0x25d1cd);}return null;};}function saveUpdates(_0x5a6f1f){return function(_0xc5ac8e){if(_0xc5ac8e){return _0xc5ac8e[_0x307d('0x18')](_0x5a6f1f)[_0x307d('0x19')](function(_0x1be410){return _0x1be410;});}return null;};}function removeEntity(_0x3b4f44){return function(_0x37ad6e){if(_0x37ad6e){return _0x37ad6e['destroy']()[_0x307d('0x19')](function(){_0x3b4f44['status'](0xcc)[_0x307d('0xf')]();});}};}function handleEntityNotFound(_0xf73c4a){return function(_0x42db1a){if(!_0x42db1a){_0xf73c4a[_0x307d('0x1a')](0x194);}return _0x42db1a;};}function handleError(_0x2b7b2d,_0x2f61f3){_0x2f61f3=_0x2f61f3||0x1f4;return function(_0x255c57){logger['error'](_0x255c57['stack']);if(_0x255c57[_0x307d('0x1b')]){delete _0x255c57[_0x307d('0x1b')];}_0x2b7b2d[_0x307d('0x10')](_0x2f61f3)[_0x307d('0x1c')](_0x255c57);};}exports[_0x307d('0x1d')]=function(_0x34925,_0x703b99){var _0x1752fe={};var _0x190b0f=_[_0x307d('0x1e')](db['FaxInteraction'][_0x307d('0x1f')],function(_0x43010f){return{'name':_0x43010f[_0x307d('0x20')],'type':_0x43010f[_0x307d('0x21')][_0x307d('0x22')]};});_0x1752fe=qs[_0x307d('0x23')](_0x190b0f,_0x34925);return interaction[_0x307d('0x24')](_0x307d('0x25'),_0x34925[_0x307d('0x26')],_0x34925['user'],_0x1752fe,_0x190b0f)[_0x307d('0x19')](respondWithFilteredResult(_0x703b99,_0x1752fe))['catch'](handleError(_0x703b99,null));};exports['show']=function(_0x3712ec,_0x2c77ec){var _0x24eee5={'raw':![],'where':{'id':_0x3712ec[_0x307d('0x27')]['id']}},_0x4ef68b={};_0x4ef68b[_0x307d('0x28')]=_['keys'](db['FaxInteraction']['rawAttributes']);_0x4ef68b['query']=_['keys'](_0x3712ec[_0x307d('0x26')]);_0x4ef68b[_0x307d('0x29')]=_[_0x307d('0x2a')](_0x4ef68b[_0x307d('0x28')],_0x4ef68b[_0x307d('0x26')]);_0x24eee5[_0x307d('0x2b')]=_['intersection'](_0x4ef68b['model'],qs['fields'](_0x3712ec[_0x307d('0x26')][_0x307d('0x2c')]));_0x24eee5[_0x307d('0x2b')]=_0x24eee5[_0x307d('0x2b')][_0x307d('0x2d')]?_0x24eee5['attributes']:_0x4ef68b[_0x307d('0x28')];if(_0x3712ec['query'][_0x307d('0x2e')]){_0x24eee5[_0x307d('0x2f')]=[{'all':!![]}];}_0x24eee5=_['merge']({},_0x24eee5,_0x3712ec[_0x307d('0x30')]);return db[_0x307d('0x31')][_0x307d('0x32')](_0x24eee5)[_0x307d('0x19')](handleEntityNotFound(_0x2c77ec,null))[_0x307d('0x19')](respondWithResult(_0x2c77ec,null))['catch'](handleError(_0x2c77ec,null));};exports['create']=function(_0x12ccee,_0x35ef4a){return db[_0x307d('0x31')][_0x307d('0x33')](_0x12ccee[_0x307d('0x34')],{})['then'](respondWithResult(_0x35ef4a,0xc9))[_0x307d('0x35')](handleError(_0x35ef4a,null));};exports[_0x307d('0x18')]=function(_0x3e1a4f,_0x1fdbf9){if(_0x3e1a4f[_0x307d('0x34')]['id']){delete _0x3e1a4f[_0x307d('0x34')]['id'];}return db[_0x307d('0x31')][_0x307d('0x32')]({'where':{'id':_0x3e1a4f[_0x307d('0x27')]['id']}})[_0x307d('0x19')](handleEntityNotFound(_0x1fdbf9,null))[_0x307d('0x19')](saveUpdates(_0x3e1a4f[_0x307d('0x34')],null))[_0x307d('0x19')](respondWithResult(_0x1fdbf9,null))[_0x307d('0x35')](handleError(_0x1fdbf9,null));};exports['destroy']=function(_0x837c40,_0x206491){return db[_0x307d('0x31')][_0x307d('0x32')]({'where':{'id':_0x837c40[_0x307d('0x27')]['id']}})['then'](handleEntityNotFound(_0x206491,null))[_0x307d('0x19')](removeEntity(_0x206491,null))[_0x307d('0x35')](handleError(_0x206491,null));};exports[_0x307d('0x36')]=function(_0xa0dfa1,_0x211a20){return db[_0x307d('0x31')]['describe']()['then'](respondWithResult(_0x211a20,null))[_0x307d('0x35')](handleError(_0x211a20,null));};exports[_0x307d('0x37')]=function(_0x286c53,_0xa8fd3b){return db[_0x307d('0x38')][_0x307d('0x32')]({'where':{'id':_0x286c53[_0x307d('0x27')]['id']}})[_0x307d('0x19')](handleEntityNotFound(_0xa8fd3b,null))[_0x307d('0x19')](function(_0x5a0a3c){if(_0x5a0a3c){return _0x5a0a3c[_0x307d('0x37')](_0x286c53['body'][_0x307d('0x39')],_[_0x307d('0x3a')](_0x286c53['body'],[_0x307d('0x39'),'id'])||{});}})[_0x307d('0x19')](respondWithResult(_0xa8fd3b,null))[_0x307d('0x35')](handleError(_0xa8fd3b,null));};exports[_0x307d('0x3b')]=function(_0x17db03,_0xbe8f29){var _0x34f942={'raw':![],'where':{}};var _0x5dc6b4={};var _0x41666f={'count':0x0,'rows':[]};return db[_0x307d('0x31')][_0x307d('0x3c')]({'where':{'id':_0x17db03[_0x307d('0x27')]['id']}})[_0x307d('0x19')](handleEntityNotFound(_0xbe8f29,null))['then'](function(_0x81a861){if(_0x81a861){_0x5dc6b4[_0x307d('0x28')]=_[_0x307d('0x3d')](db[_0x307d('0x38')][_0x307d('0x1f')]);_0x5dc6b4[_0x307d('0x26')]=_[_0x307d('0x3d')](_0x17db03[_0x307d('0x26')]);_0x5dc6b4[_0x307d('0x29')]=_[_0x307d('0x2a')](_0x5dc6b4[_0x307d('0x28')],_0x5dc6b4[_0x307d('0x26')]);_0x34f942[_0x307d('0x2b')]=_['intersection'](_0x5dc6b4[_0x307d('0x28')],qs[_0x307d('0x2c')](_0x17db03[_0x307d('0x26')][_0x307d('0x2c')]));_0x34f942['attributes']=_0x34f942[_0x307d('0x2b')][_0x307d('0x2d')]?_0x34f942[_0x307d('0x2b')]:_0x5dc6b4[_0x307d('0x28')];if(!_0x17db03[_0x307d('0x26')][_0x307d('0x3e')](_0x307d('0x3f'))){_0x34f942[_0x307d('0x14')]=qs[_0x307d('0x14')](_0x17db03['query'][_0x307d('0x14')]);_0x34f942[_0x307d('0x12')]=qs['offset'](_0x17db03['query'][_0x307d('0x12')]);}_0x34f942['order']=qs['sort'](_0x17db03[_0x307d('0x26')][_0x307d('0x40')]);_0x34f942['where']=qs[_0x307d('0x29')](_[_0x307d('0x41')](_0x17db03['query'],_0x5dc6b4['filters']));_0x34f942[_0x307d('0x42')][_0x307d('0x43')]=_0x81a861['id'];if(_0x17db03['query']['filter']){_0x34f942[_0x307d('0x42')]=_[_0x307d('0x44')](_0x34f942[_0x307d('0x42')],{'$or':_['map'](_0x34f942[_0x307d('0x2b')],function(_0x4382e1){var _0x5860c2={};_0x5860c2[_0x4382e1]={'$like':'%'+_0x17db03['query'][_0x307d('0x45')]+'%'};return _0x5860c2;})});}if(_0x17db03[_0x307d('0x26')][_0x307d('0x46')]){var _0x339508=_0x17db03[_0x307d('0x26')][_0x307d('0x46')][_0x307d('0x47')](',');var _0x36fbbc={};_0x36fbbc[_0x339508[0x0]]={'$gte':moment(_0x339508[0x1])[_0x307d('0x48')](_0x307d('0x49'))};_0x34f942[_0x307d('0x42')]=_[_0x307d('0x44')](_0x34f942['where'],_0x36fbbc);}_0x34f942=_[_0x307d('0x44')]({},_0x34f942,_0x17db03[_0x307d('0x30')]);return db['FaxMessage'][_0x307d('0x15')]({'where':_0x34f942[_0x307d('0x42')]})[_0x307d('0x19')](function(_0x485cab){_0x41666f[_0x307d('0x15')]=_0x485cab;if(_0x17db03[_0x307d('0x26')][_0x307d('0x2e')]){_0x34f942[_0x307d('0x2f')]=[{'all':!![]}];}return db[_0x307d('0x38')][_0x307d('0x24')](_0x34f942);})[_0x307d('0x19')](function(_0x4c34d5){_0x41666f[_0x307d('0x4a')]=_0x4c34d5;return _0x41666f;});}})[_0x307d('0x19')](respondWithFilteredResult(_0xbe8f29,_0x34f942))['catch'](handleError(_0xbe8f29,null));};exports[_0x307d('0x4b')]=function(_0xed8701,_0x55a4e0){return db[_0x307d('0x31')][_0x307d('0x32')]({'where':{'id':_0xed8701[_0x307d('0x27')]['id']}})[_0x307d('0x19')](handleEntityNotFound(_0x55a4e0,null))[_0x307d('0x19')](function(_0x189814){if(_0x189814){return _0x189814[_0x307d('0x4c')](_0xed8701[_0x307d('0x34')][_0x307d('0x39')],_[_0x307d('0x3a')](_0xed8701[_0x307d('0x34')],[_0x307d('0x39'),'id'])||{})[_0x307d('0x4d')](function(){return db[_0x307d('0x4e')][_0x307d('0x24')]({'attributes':['id',_0x307d('0x1b'),_0x307d('0x4f')],'where':{'id':_0xed8701[_0x307d('0x34')][_0x307d('0x39')]}});})[_0x307d('0x19')](function(_0x183acb){socket[_0x307d('0x50')]('faxInteractionTags:save',{'id':Number(_0xed8701[_0x307d('0x27')]['id']),'tags':_0x183acb||[]});return{'id':Number(_0xed8701[_0x307d('0x27')]['id']),'tags':_0x183acb||[]};});}})[_0x307d('0x19')](respondWithResult(_0x55a4e0,null))[_0x307d('0x35')](handleError(_0x55a4e0,null));};exports['removeTags']=function(_0x519b3c,_0xa79ac8){return db[_0x307d('0x31')][_0x307d('0x32')]({'where':{'id':_0x519b3c[_0x307d('0x27')]['id']}})[_0x307d('0x19')](handleEntityNotFound(_0xa79ac8,null))['then'](function(_0x38b462){if(_0x38b462){return _0x38b462[_0x307d('0x51')](_0x519b3c[_0x307d('0x26')][_0x307d('0x39')]);}})[_0x307d('0x19')](respondWithStatusCode(_0xa79ac8,null))[_0x307d('0x35')](handleError(_0xa79ac8,null));};exports['download']=function(_0x55aba2,_0x2d692b){var _0x546cee=moment()[_0x307d('0x52')]()[_0x307d('0x53')]();var _0xeed62b=path[_0x307d('0x54')](config['root'],_0x307d('0x55'),_0x307d('0x56'),_0x307d('0x57'));var _0x31212d=path[_0x307d('0x54')](config['root'],_0x307d('0x55'),_0x307d('0x56'),_0x307d('0x58'));var _0x89b836=path['join'](_0xeed62b,_0x546cee);var _0x371c72=util[_0x307d('0x48')](_0x307d('0x59'),_0x55aba2[_0x307d('0x27')]['id'],_0x546cee);var _0x1dfbf0=path[_0x307d('0x54')](_0xeed62b,_0x371c72);var _0x75e9d=[];_0x75e9d['push']({'model':db[_0x307d('0x5a')],'as':_0x307d('0x5a'),'raw':!![]});var _0x2d2467=[{'model':db[_0x307d('0x38')],'as':_0x307d('0x5b'),'attributes':['id',_0x307d('0x34'),'createdAt'],'include':_0x75e9d}];return db['FaxInteraction'][_0x307d('0x32')]({'where':{'id':_0x55aba2[_0x307d('0x27')]['id']},'include':_0x2d2467})[_0x307d('0x19')](handleEntityNotFound(_0x2d692b,null))[_0x307d('0x19')](function(_0x4ac403){if(_0x4ac403&&_0x4ac403[_0x307d('0x5b')]){var _0x1a357a=_0x4ac403[_0x307d('0x5c')]({'plain':!![]});fs[_0x307d('0x5d')](_0x89b836);for(var _0x177a9d=0x0;_0x177a9d<_0x1a357a[_0x307d('0x5b')][_0x307d('0x2d')];_0x177a9d++){var _0x2c506d=_0x1a357a[_0x307d('0x5b')][_0x177a9d][_0x307d('0x5a')];if(_0x2c506d){var _0x2ea353=path['join'](_0x31212d,_0x2c506d['basename']);if(fs[_0x307d('0x5e')](_0x2ea353)){fs['createReadStream'](_0x2ea353)[_0x307d('0x5f')](fs[_0x307d('0x60')](path[_0x307d('0x54')](_0x89b836,_0x2c506d[_0x307d('0x61')])));}}}return BPromise[_0x307d('0x62')]()[_0x307d('0x19')](function(){return new BPromise(function(_0x48f22b,_0x3645aa){zipdir(_0x89b836,{'saveTo':_0x1dfbf0},function(_0x48c3e6,_0x532878){if(_0x48c3e6)return _0x3645aa(_0x48c3e6);return _0x48f22b(_0x532878);});})[_0x307d('0x19')](function(){return new BPromise(function(_0x1b8256,_0x587a75){rimraf(_0x89b836,function(_0x13ac4b){if(_0x13ac4b)_0x587a75(_0x13ac4b);return _0x1b8256();});});})[_0x307d('0x19')](function(){return _0x2d692b[_0x307d('0x63')](_0x1dfbf0,_0x371c72,function(_0x134e1c){if(_0x134e1c){console[_0x307d('0x64')]('err',_0x134e1c);}else{fs[_0x307d('0x65')](_0x1dfbf0);}});});});}else{return _0x2d692b[_0x307d('0x1a')](0xc8);}})['catch'](handleError(_0x2d692b,null));};