Built motion from commit e02f907f.|2.6.14
[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 _0x5f4a=['hasOwnProperty','nolimit','order','where','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','rows','spread','color','emit','removeTags','unix','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','Attachment','Messages','get','mkdirSync','basename','existsSync','pipe','resolve','download','log','err','unlinkSync','rimraf','moment','util','path','lodash','ioredis','../../components/interaction/service','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','then','destroy','stack','name','send','index','map','fieldName','key','fax','catch','show','params','model','FaxInteraction','query','keys','attributes','intersection','length','includeAll','merge','options','create','body','find','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','rawAttributes','filters','fields'];(function(_0x1c4c6f,_0xaa0b73){var _0x2c2d0c=function(_0x141a3f){while(--_0x141a3f){_0x1c4c6f['push'](_0x1c4c6f['shift']());}};_0x2c2d0c(++_0xaa0b73);}(_0x5f4a,0x150));var _0xa5f4=function(_0x4f76c8,_0x1c7c94){_0x4f76c8=_0x4f76c8-0x0;var _0x3ed023=_0x5f4a[_0x4f76c8];return _0x3ed023;};'use strict';var rimraf=require(_0xa5f4('0x0'));var zipdir=require('zip-dir');var moment=require(_0xa5f4('0x1'));var BPromise=require('bluebird');var util=require(_0xa5f4('0x2'));var path=require(_0xa5f4('0x3'));var fs=require('fs');var _=require(_0xa5f4('0x4'));var Redis=require(_0xa5f4('0x5'));var interaction=require(_0xa5f4('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xa5f4('0x7'))('api');var config=require(_0xa5f4('0x8'));var db=require(_0xa5f4('0x9'))['db'];config[_0xa5f4('0xa')]=_[_0xa5f4('0xb')](config[_0xa5f4('0xa')],{'host':_0xa5f4('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5f4('0xa')]));require('./faxInteraction.socket')[_0xa5f4('0xd')](socket);function respondWithStatusCode(_0x172b93,_0x4424a1){_0x4424a1=_0x4424a1||0xcc;return function(_0x4868cb){if(_0x4868cb){return _0x172b93[_0xa5f4('0xe')](_0x4424a1);}return _0x172b93[_0xa5f4('0xf')](_0x4424a1)[_0xa5f4('0x10')]();};}function respondWithResult(_0x3fbd24,_0x367bc3){_0x367bc3=_0x367bc3||0xc8;return function(_0x5d3f47){if(_0x5d3f47){return _0x3fbd24['status'](_0x367bc3)[_0xa5f4('0x11')](_0x5d3f47);}};}function respondWithFilteredResult(_0x3ba7a2,_0x9828d8){return function(_0x1b9cc9){if(_0x1b9cc9){var _0x57f281=typeof _0x9828d8[_0xa5f4('0x12')]===_0xa5f4('0x13')&&typeof _0x9828d8[_0xa5f4('0x14')]===_0xa5f4('0x13');var _0x2f824b=_0x1b9cc9['count'];var _0x4b62a9=_0x57f281?0x0:_0x9828d8[_0xa5f4('0x12')];var _0x73bf4f=_0x57f281?_0x1b9cc9[_0xa5f4('0x15')]:_0x9828d8['offset']+_0x9828d8['limit'];var _0x528518;if(_0x73bf4f>=_0x2f824b){_0x73bf4f=_0x2f824b;_0x528518=0xc8;}else{_0x528518=0xce;}_0x3ba7a2[_0xa5f4('0xf')](_0x528518);return _0x3ba7a2['set'](_0xa5f4('0x16'),_0x4b62a9+'-'+_0x73bf4f+'/'+_0x2f824b)[_0xa5f4('0x11')](_0x1b9cc9);}return null;};}function saveUpdates(_0x1b3376){return function(_0x2c14ed){if(_0x2c14ed){return _0x2c14ed[_0xa5f4('0x17')](_0x1b3376)[_0xa5f4('0x18')](function(_0x141349){return _0x141349;});}return null;};}function removeEntity(_0x37531b){return function(_0x351ebb){if(_0x351ebb){return _0x351ebb[_0xa5f4('0x19')]()[_0xa5f4('0x18')](function(){_0x37531b[_0xa5f4('0xf')](0xcc)[_0xa5f4('0x10')]();});}};}function handleEntityNotFound(_0x19a717){return function(_0x437069){if(!_0x437069){_0x19a717[_0xa5f4('0xe')](0x194);}return _0x437069;};}function handleError(_0xc17e68,_0xa10e04){_0xa10e04=_0xa10e04||0x1f4;return function(_0x4fc1e9){logger['error'](_0x4fc1e9[_0xa5f4('0x1a')]);if(_0x4fc1e9[_0xa5f4('0x1b')]){delete _0x4fc1e9[_0xa5f4('0x1b')];}_0xc17e68[_0xa5f4('0xf')](_0xa10e04)[_0xa5f4('0x1c')](_0x4fc1e9);};}exports[_0xa5f4('0x1d')]=function(_0x3a0e00,_0x325d09){var _0x4086cd={};var _0x2c236b=_[_0xa5f4('0x1e')](db['FaxInteraction']['rawAttributes'],function(_0x46ce06){return{'name':_0x46ce06[_0xa5f4('0x1f')],'type':_0x46ce06['type'][_0xa5f4('0x20')]};});_0x4086cd=qs['getOptions'](_0x2c236b,_0x3a0e00);return interaction['findAll'](_0xa5f4('0x21'),_0x3a0e00['query'],_0x3a0e00['user'],_0x4086cd,_0x2c236b)['then'](respondWithFilteredResult(_0x325d09,_0x4086cd))[_0xa5f4('0x22')](handleError(_0x325d09,null));};exports[_0xa5f4('0x23')]=function(_0x4ab0ff,_0x415f82){var _0x12ff00={'raw':![],'where':{'id':_0x4ab0ff[_0xa5f4('0x24')]['id']}},_0x4cbf69={};_0x4cbf69[_0xa5f4('0x25')]=_['keys'](db[_0xa5f4('0x26')]['rawAttributes']);_0x4cbf69[_0xa5f4('0x27')]=_[_0xa5f4('0x28')](_0x4ab0ff[_0xa5f4('0x27')]);_0x4cbf69['filters']=_['intersection'](_0x4cbf69[_0xa5f4('0x25')],_0x4cbf69[_0xa5f4('0x27')]);_0x12ff00[_0xa5f4('0x29')]=_[_0xa5f4('0x2a')](_0x4cbf69[_0xa5f4('0x25')],qs['fields'](_0x4ab0ff[_0xa5f4('0x27')]['fields']));_0x12ff00['attributes']=_0x12ff00[_0xa5f4('0x29')][_0xa5f4('0x2b')]?_0x12ff00['attributes']:_0x4cbf69[_0xa5f4('0x25')];if(_0x4ab0ff['query'][_0xa5f4('0x2c')]){_0x12ff00['include']=[{'all':!![]}];}_0x12ff00=_[_0xa5f4('0x2d')]({},_0x12ff00,_0x4ab0ff[_0xa5f4('0x2e')]);return db['FaxInteraction']['find'](_0x12ff00)[_0xa5f4('0x18')](handleEntityNotFound(_0x415f82,null))['then'](respondWithResult(_0x415f82,null))[_0xa5f4('0x22')](handleError(_0x415f82,null));};exports[_0xa5f4('0x2f')]=function(_0x39a5da,_0x594043){return db[_0xa5f4('0x26')]['create'](_0x39a5da[_0xa5f4('0x30')],{})[_0xa5f4('0x18')](respondWithResult(_0x594043,0xc9))[_0xa5f4('0x22')](handleError(_0x594043,null));};exports[_0xa5f4('0x17')]=function(_0x91fed3,_0x5a23a2){if(_0x91fed3[_0xa5f4('0x30')]['id']){delete _0x91fed3[_0xa5f4('0x30')]['id'];}return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x91fed3[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x5a23a2,null))[_0xa5f4('0x18')](saveUpdates(_0x91fed3[_0xa5f4('0x30')],null))['then'](respondWithResult(_0x5a23a2,null))[_0xa5f4('0x22')](handleError(_0x5a23a2,null));};exports[_0xa5f4('0x19')]=function(_0x27b54a,_0x12c65e){return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x27b54a['params']['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x12c65e,null))[_0xa5f4('0x18')](removeEntity(_0x12c65e,null))[_0xa5f4('0x22')](handleError(_0x12c65e,null));};exports[_0xa5f4('0x32')]=function(_0x39d3d1,_0x4c3ca9){return db[_0xa5f4('0x26')]['describe']()[_0xa5f4('0x18')](respondWithResult(_0x4c3ca9,null))['catch'](handleError(_0x4c3ca9,null));};exports[_0xa5f4('0x33')]=function(_0x2700ac,_0x3595e9){return db[_0xa5f4('0x34')][_0xa5f4('0x31')]({'where':{'id':_0x2700ac['params']['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x3595e9,null))[_0xa5f4('0x18')](function(_0xa3cfc7){if(_0xa3cfc7){return _0xa3cfc7[_0xa5f4('0x33')](_0x2700ac['body'][_0xa5f4('0x35')],_[_0xa5f4('0x36')](_0x2700ac[_0xa5f4('0x30')],['ids','id'])||{});}})['then'](respondWithResult(_0x3595e9,null))[_0xa5f4('0x22')](handleError(_0x3595e9,null));};exports[_0xa5f4('0x37')]=function(_0x5e1fbd,_0x159af6){var _0x1701a0={'raw':![],'where':{}};var _0x11e39e={};var _0x97e9a5={'count':0x0,'rows':[]};return db[_0xa5f4('0x26')][_0xa5f4('0x38')]({'where':{'id':_0x5e1fbd[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x159af6,null))['then'](function(_0x1cdb90){if(_0x1cdb90){_0x11e39e[_0xa5f4('0x25')]=_[_0xa5f4('0x28')](db[_0xa5f4('0x34')][_0xa5f4('0x39')]);_0x11e39e['query']=_[_0xa5f4('0x28')](_0x5e1fbd[_0xa5f4('0x27')]);_0x11e39e[_0xa5f4('0x3a')]=_[_0xa5f4('0x2a')](_0x11e39e[_0xa5f4('0x25')],_0x11e39e[_0xa5f4('0x27')]);_0x1701a0[_0xa5f4('0x29')]=_['intersection'](_0x11e39e[_0xa5f4('0x25')],qs[_0xa5f4('0x3b')](_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x3b')]));_0x1701a0[_0xa5f4('0x29')]=_0x1701a0[_0xa5f4('0x29')][_0xa5f4('0x2b')]?_0x1701a0['attributes']:_0x11e39e['model'];if(!_0x5e1fbd['query'][_0xa5f4('0x3c')](_0xa5f4('0x3d'))){_0x1701a0[_0xa5f4('0x14')]=qs[_0xa5f4('0x14')](_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x14')]);_0x1701a0[_0xa5f4('0x12')]=qs[_0xa5f4('0x12')](_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x12')]);}_0x1701a0[_0xa5f4('0x3e')]=qs['sort'](_0x5e1fbd['query']['sort']);_0x1701a0[_0xa5f4('0x3f')]=qs[_0xa5f4('0x3a')](_['pick'](_0x5e1fbd[_0xa5f4('0x27')],_0x11e39e['filters']));_0x1701a0[_0xa5f4('0x3f')][_0xa5f4('0x40')]=_0x1cdb90['id'];if(_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x41')]){_0x1701a0['where']=_[_0xa5f4('0x2d')](_0x1701a0['where'],{'$or':_['map'](_0x1701a0[_0xa5f4('0x29')],function(_0xe08e21){var _0x242d25={};_0x242d25[_0xe08e21]={'$like':'%'+_0x5e1fbd[_0xa5f4('0x27')]['filter']+'%'};return _0x242d25;})});}if(_0x5e1fbd['query'][_0xa5f4('0x42')]){var _0x439dfe=_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x42')][_0xa5f4('0x43')](',');var _0xd9a7ec={};_0xd9a7ec[_0x439dfe[0x0]]={'$gte':moment(_0x439dfe[0x1])[_0xa5f4('0x44')](_0xa5f4('0x45'))};_0x1701a0[_0xa5f4('0x3f')]=_[_0xa5f4('0x2d')](_0x1701a0[_0xa5f4('0x3f')],_0xd9a7ec);}_0x1701a0=_[_0xa5f4('0x2d')]({},_0x1701a0,_0x5e1fbd[_0xa5f4('0x2e')]);return db[_0xa5f4('0x34')][_0xa5f4('0x15')]({'where':_0x1701a0['where']})[_0xa5f4('0x18')](function(_0x19250e){_0x97e9a5['count']=_0x19250e;if(_0x5e1fbd[_0xa5f4('0x27')][_0xa5f4('0x2c')]){_0x1701a0[_0xa5f4('0x46')]=[{'all':!![]}];}return db[_0xa5f4('0x34')][_0xa5f4('0x47')](_0x1701a0);})[_0xa5f4('0x18')](function(_0xeac97d){_0x97e9a5[_0xa5f4('0x48')]=_0xeac97d;return _0x97e9a5;});}})[_0xa5f4('0x18')](respondWithFilteredResult(_0x159af6,_0x1701a0))[_0xa5f4('0x22')](handleError(_0x159af6,null));};exports['addTags']=function(_0x4d200d,_0x46a44f){return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x4d200d[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x46a44f,null))[_0xa5f4('0x18')](function(_0x1de4f5){if(_0x1de4f5){return _0x1de4f5['setTags'](_0x4d200d['body'][_0xa5f4('0x35')],_[_0xa5f4('0x36')](_0x4d200d['body'],[_0xa5f4('0x35'),'id'])||{})[_0xa5f4('0x49')](function(){return db['Tag']['findAll']({'attributes':['id',_0xa5f4('0x1b'),_0xa5f4('0x4a')],'where':{'id':_0x4d200d[_0xa5f4('0x30')][_0xa5f4('0x35')]}});})[_0xa5f4('0x18')](function(_0x221c5c){socket[_0xa5f4('0x4b')]('faxInteractionTags:save',{'id':Number(_0x4d200d[_0xa5f4('0x24')]['id']),'tags':_0x221c5c||[]});return{'id':Number(_0x4d200d[_0xa5f4('0x24')]['id']),'tags':_0x221c5c||[]};});}})[_0xa5f4('0x18')](respondWithResult(_0x46a44f,null))[_0xa5f4('0x22')](handleError(_0x46a44f,null));};exports[_0xa5f4('0x4c')]=function(_0x5a277d,_0x477b50){return db['FaxInteraction'][_0xa5f4('0x31')]({'where':{'id':_0x5a277d[_0xa5f4('0x24')]['id']}})[_0xa5f4('0x18')](handleEntityNotFound(_0x477b50,null))[_0xa5f4('0x18')](function(_0xc0b2ce){if(_0xc0b2ce){return _0xc0b2ce['removeTags'](_0x5a277d[_0xa5f4('0x27')][_0xa5f4('0x35')]);}})[_0xa5f4('0x18')](respondWithStatusCode(_0x477b50,null))['catch'](handleError(_0x477b50,null));};exports['download']=function(_0x3c7de1,_0x4874ba){var _0x402ecf=moment()[_0xa5f4('0x4d')]()[_0xa5f4('0x4e')]();var _0xaf99e1=path[_0xa5f4('0x4f')](config[_0xa5f4('0x50')],'server',_0xa5f4('0x51'),_0xa5f4('0x52'));var _0x3f4202=path[_0xa5f4('0x4f')](config['root'],_0xa5f4('0x53'),_0xa5f4('0x51'),_0xa5f4('0x54'));var _0x149078=path[_0xa5f4('0x4f')](_0xaf99e1,_0x402ecf);var _0x58d40c=util[_0xa5f4('0x44')](_0xa5f4('0x55'),_0x3c7de1[_0xa5f4('0x24')]['id'],_0x402ecf);var _0x5f157f=path[_0xa5f4('0x4f')](_0xaf99e1,_0x58d40c);var _0x40eb6c=[];_0x40eb6c[_0xa5f4('0x56')]({'model':db['Attachment'],'as':_0xa5f4('0x57'),'raw':!![]});var _0xc633f3=[{'model':db[_0xa5f4('0x34')],'as':_0xa5f4('0x58'),'attributes':['id',_0xa5f4('0x30'),'createdAt'],'include':_0x40eb6c}];return db[_0xa5f4('0x26')][_0xa5f4('0x31')]({'where':{'id':_0x3c7de1[_0xa5f4('0x24')]['id']},'include':_0xc633f3})[_0xa5f4('0x18')](handleEntityNotFound(_0x4874ba,null))[_0xa5f4('0x18')](function(_0x34baa9){if(_0x34baa9&&_0x34baa9[_0xa5f4('0x58')]){var _0x5ba7d6=_0x34baa9[_0xa5f4('0x59')]({'plain':!![]});fs[_0xa5f4('0x5a')](_0x149078);for(var _0x5c9742=0x0;_0x5c9742<_0x5ba7d6[_0xa5f4('0x58')]['length'];_0x5c9742++){var _0x414d9b=_0x5ba7d6['Messages'][_0x5c9742]['Attachment'];if(_0x414d9b){var _0x55f64d=path[_0xa5f4('0x4f')](_0x3f4202,_0x414d9b[_0xa5f4('0x5b')]);if(fs[_0xa5f4('0x5c')](_0x55f64d)){fs['createReadStream'](_0x55f64d)[_0xa5f4('0x5d')](fs['createWriteStream'](path[_0xa5f4('0x4f')](_0x149078,_0x414d9b['basename'])));}}}return BPromise[_0xa5f4('0x5e')]()['then'](function(){return new BPromise(function(_0x3e3b4a,_0x5aa6e5){zipdir(_0x149078,{'saveTo':_0x5f157f},function(_0x4731f4,_0x41ace0){if(_0x4731f4)return _0x5aa6e5(_0x4731f4);return _0x3e3b4a(_0x41ace0);});})[_0xa5f4('0x18')](function(){return new BPromise(function(_0x473814,_0xe18c3c){rimraf(_0x149078,function(_0x45dfba){if(_0x45dfba)_0xe18c3c(_0x45dfba);return _0x473814();});});})['then'](function(){return _0x4874ba[_0xa5f4('0x5f')](_0x5f157f,_0x58d40c,function(_0x9de809){if(_0x9de809){console[_0xa5f4('0x60')](_0xa5f4('0x61'),_0x9de809);}else{fs[_0xa5f4('0x62')](_0x5f157f);}});});});}else{return _0x4874ba['sendStatus'](0xc8);}})[_0xa5f4('0x22')](handleError(_0x4874ba,null));};