ec7367f60959deef12a04c213f36a73c8dbb4151
[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 _0x2ca1=['name','send','map','FaxInteraction','type','getOptions','findAll','query','user','show','params','model','keys','rawAttributes','intersection','attributes','fields','length','includeAll','include','merge','catch','create','body','find','describe','addMessage','FaxMessage','ids','omit','findOne','filters','hasOwnProperty','nolimit','sort','where','pick','FaxInteractionId','filter','$gte','format','addTags','spread','Tag','color','emit','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','createdAt','Messages','get','existsSync','createReadStream','resolve','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack'];(function(_0x3b6cf6,_0xdae96d){var _0x1801b4=function(_0x42c46a){while(--_0x42c46a){_0x3b6cf6['push'](_0x3b6cf6['shift']());}};_0x1801b4(++_0xdae96d);}(_0x2ca1,0x10a));var _0x12ca=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x2ca1[_0x5447fd];return _0x15b28a;};'use strict';var rimraf=require(_0x12ca('0x0'));var zipdir=require(_0x12ca('0x1'));var moment=require(_0x12ca('0x2'));var BPromise=require(_0x12ca('0x3'));var util=require('util');var path=require(_0x12ca('0x4'));var fs=require('fs');var _=require(_0x12ca('0x5'));var Redis=require(_0x12ca('0x6'));var interaction=require('../../components/interaction/service');var qs=require(_0x12ca('0x7'));var logger=require(_0x12ca('0x8'))(_0x12ca('0x9'));var config=require(_0x12ca('0xa'));var db=require(_0x12ca('0xb'))['db'];config[_0x12ca('0xc')]=_[_0x12ca('0xd')](config['redis'],{'host':_0x12ca('0xe'),'port':0x18eb});var socket=require(_0x12ca('0xf'))(new Redis(config[_0x12ca('0xc')]));require('./faxInteraction.socket')['register'](socket);function respondWithStatusCode(_0xd11e9d,_0xc4ba4){_0xc4ba4=_0xc4ba4||0xcc;return function(_0x3f40e7){if(_0x3f40e7){return _0xd11e9d[_0x12ca('0x10')](_0xc4ba4);}return _0xd11e9d[_0x12ca('0x11')](_0xc4ba4)[_0x12ca('0x12')]();};}function respondWithResult(_0x1cba29,_0x5d16d6){_0x5d16d6=_0x5d16d6||0xc8;return function(_0x308be8){if(_0x308be8){return _0x1cba29[_0x12ca('0x11')](_0x5d16d6)[_0x12ca('0x13')](_0x308be8);}};}function respondWithFilteredResult(_0x16be44,_0x57276f){return function(_0x3f6725){if(_0x3f6725){var _0x421b76=typeof _0x57276f[_0x12ca('0x14')]===_0x12ca('0x15')&&typeof _0x57276f[_0x12ca('0x16')]===_0x12ca('0x15');var _0x14f1ac=_0x3f6725[_0x12ca('0x17')];var _0x1ddf25=_0x421b76?0x0:_0x57276f['offset'];var _0x297353=_0x421b76?_0x3f6725['count']:_0x57276f[_0x12ca('0x14')]+_0x57276f[_0x12ca('0x16')];var _0x4e8a31;if(_0x297353>=_0x14f1ac){_0x297353=_0x14f1ac;_0x4e8a31=0xc8;}else{_0x4e8a31=0xce;}_0x16be44[_0x12ca('0x11')](_0x4e8a31);return _0x16be44[_0x12ca('0x18')](_0x12ca('0x19'),_0x1ddf25+'-'+_0x297353+'/'+_0x14f1ac)[_0x12ca('0x13')](_0x3f6725);}return null;};}function saveUpdates(_0xbcb9e4){return function(_0x59e643){if(_0x59e643){return _0x59e643[_0x12ca('0x1a')](_0xbcb9e4)[_0x12ca('0x1b')](function(_0x26dfee){return _0x26dfee;});}return null;};}function removeEntity(_0x48a19e){return function(_0x5a9f60){if(_0x5a9f60){return _0x5a9f60[_0x12ca('0x1c')]()['then'](function(){_0x48a19e[_0x12ca('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f5fcb){return function(_0x39eb40){if(!_0x39eb40){_0x3f5fcb[_0x12ca('0x10')](0x194);}return _0x39eb40;};}function handleError(_0x37ee20,_0x320351){_0x320351=_0x320351||0x1f4;return function(_0x3c4701){logger[_0x12ca('0x1d')](_0x3c4701[_0x12ca('0x1e')]);if(_0x3c4701['name']){delete _0x3c4701[_0x12ca('0x1f')];}_0x37ee20['status'](_0x320351)[_0x12ca('0x20')](_0x3c4701);};}exports['index']=function(_0x15943d,_0x5c5043){var _0x5e74c6={};var _0x1cf3a8=_[_0x12ca('0x21')](db[_0x12ca('0x22')]['rawAttributes'],function(_0x5d9ab6){return{'name':_0x5d9ab6['fieldName'],'type':_0x5d9ab6[_0x12ca('0x23')]['key']};});_0x5e74c6=qs[_0x12ca('0x24')](_0x1cf3a8,_0x15943d);return interaction[_0x12ca('0x25')]('fax',_0x15943d[_0x12ca('0x26')],_0x15943d[_0x12ca('0x27')],_0x5e74c6,_0x1cf3a8)['then'](respondWithFilteredResult(_0x5c5043,_0x5e74c6))['catch'](handleError(_0x5c5043,null));};exports[_0x12ca('0x28')]=function(_0x579fb1,_0xa82737){var _0x31bb93={'raw':![],'where':{'id':_0x579fb1[_0x12ca('0x29')]['id']}},_0x32156c={};_0x32156c[_0x12ca('0x2a')]=_[_0x12ca('0x2b')](db[_0x12ca('0x22')][_0x12ca('0x2c')]);_0x32156c[_0x12ca('0x26')]=_[_0x12ca('0x2b')](_0x579fb1[_0x12ca('0x26')]);_0x32156c['filters']=_[_0x12ca('0x2d')](_0x32156c[_0x12ca('0x2a')],_0x32156c[_0x12ca('0x26')]);_0x31bb93[_0x12ca('0x2e')]=_[_0x12ca('0x2d')](_0x32156c['model'],qs[_0x12ca('0x2f')](_0x579fb1['query']['fields']));_0x31bb93[_0x12ca('0x2e')]=_0x31bb93[_0x12ca('0x2e')][_0x12ca('0x30')]?_0x31bb93[_0x12ca('0x2e')]:_0x32156c[_0x12ca('0x2a')];if(_0x579fb1[_0x12ca('0x26')][_0x12ca('0x31')]){_0x31bb93[_0x12ca('0x32')]=[{'all':!![]}];}_0x31bb93=_[_0x12ca('0x33')]({},_0x31bb93,_0x579fb1['options']);return db[_0x12ca('0x22')]['find'](_0x31bb93)[_0x12ca('0x1b')](handleEntityNotFound(_0xa82737,null))[_0x12ca('0x1b')](respondWithResult(_0xa82737,null))[_0x12ca('0x34')](handleError(_0xa82737,null));};exports[_0x12ca('0x35')]=function(_0x2bd922,_0x28b21a){return db[_0x12ca('0x22')][_0x12ca('0x35')](_0x2bd922[_0x12ca('0x36')],{})[_0x12ca('0x1b')](respondWithResult(_0x28b21a,0xc9))[_0x12ca('0x34')](handleError(_0x28b21a,null));};exports['update']=function(_0x1db7aa,_0x34b24f){if(_0x1db7aa['body']['id']){delete _0x1db7aa[_0x12ca('0x36')]['id'];}return db['FaxInteraction'][_0x12ca('0x37')]({'where':{'id':_0x1db7aa[_0x12ca('0x29')]['id']}})['then'](handleEntityNotFound(_0x34b24f,null))['then'](saveUpdates(_0x1db7aa[_0x12ca('0x36')],null))[_0x12ca('0x1b')](respondWithResult(_0x34b24f,null))[_0x12ca('0x34')](handleError(_0x34b24f,null));};exports[_0x12ca('0x1c')]=function(_0x59860b,_0xb19c92){return db['FaxInteraction'][_0x12ca('0x37')]({'where':{'id':_0x59860b[_0x12ca('0x29')]['id']}})[_0x12ca('0x1b')](handleEntityNotFound(_0xb19c92,null))[_0x12ca('0x1b')](removeEntity(_0xb19c92,null))[_0x12ca('0x34')](handleError(_0xb19c92,null));};exports[_0x12ca('0x38')]=function(_0x3924cc,_0x49e890){return db['FaxInteraction']['describe']()[_0x12ca('0x1b')](respondWithResult(_0x49e890,null))['catch'](handleError(_0x49e890,null));};exports[_0x12ca('0x39')]=function(_0x535d8b,_0x209f99){return db[_0x12ca('0x3a')]['find']({'where':{'id':_0x535d8b[_0x12ca('0x29')]['id']}})[_0x12ca('0x1b')](handleEntityNotFound(_0x209f99,null))[_0x12ca('0x1b')](function(_0xcdbfcf){if(_0xcdbfcf){return _0xcdbfcf[_0x12ca('0x39')](_0x535d8b[_0x12ca('0x36')][_0x12ca('0x3b')],_[_0x12ca('0x3c')](_0x535d8b[_0x12ca('0x36')],[_0x12ca('0x3b'),'id'])||{});}})[_0x12ca('0x1b')](respondWithResult(_0x209f99,null))[_0x12ca('0x34')](handleError(_0x209f99,null));};exports['getMessages']=function(_0x59818e,_0x1b442d){var _0x172fd4={'raw':![],'where':{}};var _0x37b6db={};var _0x61b748={'count':0x0,'rows':[]};return db[_0x12ca('0x22')][_0x12ca('0x3d')]({'where':{'id':_0x59818e[_0x12ca('0x29')]['id']}})['then'](handleEntityNotFound(_0x1b442d,null))[_0x12ca('0x1b')](function(_0x209221){if(_0x209221){_0x37b6db[_0x12ca('0x2a')]=_[_0x12ca('0x2b')](db[_0x12ca('0x3a')][_0x12ca('0x2c')]);_0x37b6db['query']=_[_0x12ca('0x2b')](_0x59818e['query']);_0x37b6db[_0x12ca('0x3e')]=_['intersection'](_0x37b6db[_0x12ca('0x2a')],_0x37b6db['query']);_0x172fd4[_0x12ca('0x2e')]=_[_0x12ca('0x2d')](_0x37b6db[_0x12ca('0x2a')],qs[_0x12ca('0x2f')](_0x59818e[_0x12ca('0x26')][_0x12ca('0x2f')]));_0x172fd4[_0x12ca('0x2e')]=_0x172fd4[_0x12ca('0x2e')][_0x12ca('0x30')]?_0x172fd4[_0x12ca('0x2e')]:_0x37b6db[_0x12ca('0x2a')];if(!_0x59818e[_0x12ca('0x26')][_0x12ca('0x3f')](_0x12ca('0x40'))){_0x172fd4[_0x12ca('0x16')]=qs[_0x12ca('0x16')](_0x59818e[_0x12ca('0x26')]['limit']);_0x172fd4[_0x12ca('0x14')]=qs['offset'](_0x59818e[_0x12ca('0x26')][_0x12ca('0x14')]);}_0x172fd4['order']=qs[_0x12ca('0x41')](_0x59818e[_0x12ca('0x26')][_0x12ca('0x41')]);_0x172fd4[_0x12ca('0x42')]=qs[_0x12ca('0x3e')](_[_0x12ca('0x43')](_0x59818e[_0x12ca('0x26')],_0x37b6db['filters']));_0x172fd4[_0x12ca('0x42')][_0x12ca('0x44')]=_0x209221['id'];if(_0x59818e[_0x12ca('0x26')]['filter']){_0x172fd4['where']=_[_0x12ca('0x33')](_0x172fd4[_0x12ca('0x42')],{'$or':_[_0x12ca('0x21')](_0x172fd4[_0x12ca('0x2e')],function(_0xc3a717){var _0x2961ce={};_0x2961ce[_0xc3a717]={'$like':'%'+_0x59818e[_0x12ca('0x26')][_0x12ca('0x45')]+'%'};return _0x2961ce;})});}if(_0x59818e[_0x12ca('0x26')][_0x12ca('0x46')]){var _0x30f368=_0x59818e[_0x12ca('0x26')][_0x12ca('0x46')]['split'](',');var _0x2259b8={};_0x2259b8[_0x30f368[0x0]]={'$gte':moment(_0x30f368[0x1])[_0x12ca('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x172fd4['where']=_[_0x12ca('0x33')](_0x172fd4[_0x12ca('0x42')],_0x2259b8);}_0x172fd4=_['merge']({},_0x172fd4,_0x59818e['options']);return db[_0x12ca('0x3a')][_0x12ca('0x17')]({'where':_0x172fd4[_0x12ca('0x42')]})[_0x12ca('0x1b')](function(_0xa056e3){_0x61b748[_0x12ca('0x17')]=_0xa056e3;if(_0x59818e['query'][_0x12ca('0x31')]){_0x172fd4[_0x12ca('0x32')]=[{'all':!![]}];}return db[_0x12ca('0x3a')][_0x12ca('0x25')](_0x172fd4);})[_0x12ca('0x1b')](function(_0x44d906){_0x61b748['rows']=_0x44d906;return _0x61b748;});}})[_0x12ca('0x1b')](respondWithFilteredResult(_0x1b442d,_0x172fd4))[_0x12ca('0x34')](handleError(_0x1b442d,null));};exports[_0x12ca('0x48')]=function(_0x37dea3,_0x537644){return db['FaxInteraction']['find']({'where':{'id':_0x37dea3[_0x12ca('0x29')]['id']}})[_0x12ca('0x1b')](handleEntityNotFound(_0x537644,null))[_0x12ca('0x1b')](function(_0x53bfe5){if(_0x53bfe5){return _0x53bfe5['setTags'](_0x37dea3[_0x12ca('0x36')][_0x12ca('0x3b')],_[_0x12ca('0x3c')](_0x37dea3['body'],[_0x12ca('0x3b'),'id'])||{})[_0x12ca('0x49')](function(){return db[_0x12ca('0x4a')][_0x12ca('0x25')]({'attributes':['id',_0x12ca('0x1f'),_0x12ca('0x4b')],'where':{'id':_0x37dea3['body']['ids']}});})[_0x12ca('0x1b')](function(_0x1abbb9){socket[_0x12ca('0x4c')]('faxInteractionTags:save',{'id':Number(_0x37dea3[_0x12ca('0x29')]['id']),'tags':_0x1abbb9||[]});return{'id':Number(_0x37dea3[_0x12ca('0x29')]['id']),'tags':_0x1abbb9||[]};});}})['then'](respondWithResult(_0x537644,null))[_0x12ca('0x34')](handleError(_0x537644,null));};exports[_0x12ca('0x4d')]=function(_0x37ace0,_0x537f5e){return db['FaxInteraction'][_0x12ca('0x37')]({'where':{'id':_0x37ace0['params']['id']}})['then'](handleEntityNotFound(_0x537f5e,null))['then'](function(_0x116d29){if(_0x116d29){return _0x116d29[_0x12ca('0x4d')](_0x37ace0['query']['ids']);}})[_0x12ca('0x1b')](respondWithStatusCode(_0x537f5e,null))[_0x12ca('0x34')](handleError(_0x537f5e,null));};exports[_0x12ca('0x4e')]=function(_0x9f71eb,_0xb5d1a8){var _0x41036e=moment()[_0x12ca('0x4f')]()[_0x12ca('0x50')]();var _0x19303e=path[_0x12ca('0x51')](config[_0x12ca('0x52')],_0x12ca('0x53'),_0x12ca('0x54'),_0x12ca('0x55'));var _0x68079f=path[_0x12ca('0x51')](config[_0x12ca('0x52')],_0x12ca('0x53'),'files',_0x12ca('0x56'));var _0x464f3f=path[_0x12ca('0x51')](_0x19303e,_0x41036e);var _0x417559=util['format'](_0x12ca('0x57'),_0x9f71eb[_0x12ca('0x29')]['id'],_0x41036e);var _0x478f65=path[_0x12ca('0x51')](_0x19303e,_0x417559);var _0x2cd7df=[];_0x2cd7df[_0x12ca('0x58')]({'model':db[_0x12ca('0x59')],'as':_0x12ca('0x59'),'raw':!![]});var _0x11e50d=[{'model':db[_0x12ca('0x3a')],'as':'Messages','attributes':['id','body',_0x12ca('0x5a')],'include':_0x2cd7df}];return db[_0x12ca('0x22')][_0x12ca('0x37')]({'where':{'id':_0x9f71eb[_0x12ca('0x29')]['id']},'include':_0x11e50d})[_0x12ca('0x1b')](handleEntityNotFound(_0xb5d1a8,null))['then'](function(_0x23b953){if(_0x23b953&&_0x23b953[_0x12ca('0x5b')]){var _0x3c00d7=_0x23b953[_0x12ca('0x5c')]({'plain':!![]});fs['mkdirSync'](_0x464f3f);for(var _0xa28732=0x0;_0xa28732<_0x3c00d7[_0x12ca('0x5b')]['length'];_0xa28732++){var _0x5d7ce1=_0x3c00d7[_0x12ca('0x5b')][_0xa28732][_0x12ca('0x59')];if(_0x5d7ce1){var _0x2c61fa=path[_0x12ca('0x51')](_0x68079f,_0x5d7ce1['basename']);if(fs[_0x12ca('0x5d')](_0x2c61fa)){fs[_0x12ca('0x5e')](_0x2c61fa)['pipe'](fs['createWriteStream'](path[_0x12ca('0x51')](_0x464f3f,_0x5d7ce1['basename'])));}}}return BPromise[_0x12ca('0x5f')]()['then'](function(){return new BPromise(function(_0x35ac34,_0x19cfd7){zipdir(_0x464f3f,{'saveTo':_0x478f65},function(_0x39a21c,_0x3814cf){if(_0x39a21c)return _0x19cfd7(_0x39a21c);return _0x35ac34(_0x3814cf);});})[_0x12ca('0x1b')](function(){return new BPromise(function(_0x1f0b6f,_0x1c4a64){rimraf(_0x464f3f,function(_0x729870){if(_0x729870)_0x1c4a64(_0x729870);return _0x1f0b6f();});});})[_0x12ca('0x1b')](function(){return _0xb5d1a8['download'](_0x478f65,_0x417559,function(_0x1fb6ec){if(_0x1fb6ec){console[_0x12ca('0x60')](_0x12ca('0x61'),_0x1fb6ec);}else{fs[_0x12ca('0x62')](_0x478f65);}});});});}else{return _0xb5d1a8['sendStatus'](0xc8);}})[_0x12ca('0x34')](handleError(_0xb5d1a8,null));};