ae1759babb6b8262aab800e0e1710d66ac27e795
[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 _0xdc2f=['socket.io-emitter','./faxInteraction.socket','register','status','end','json','offset','undefined','count','limit','set','update','then','sendStatus','error','stack','name','send','map','FaxInteraction','rawAttributes','fieldName','type','findAll','fax','user','catch','show','params','keys','query','intersection','attributes','model','fields','length','includeAll','include','options','find','create','body','destroy','describe','addMessage','FaxMessage','omit','ids','getMessages','filters','hasOwnProperty','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','rows','addTags','setTags','Tag','color','emit','faxInteractionTags:save','removeTags','download','unix','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','Attachment','Messages','createdAt','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','basename','resolve','log','err','unlinkSync','rimraf','zip-dir','moment','util','path','lodash','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost'];(function(_0x14e55c,_0x422443){var _0x45d284=function(_0x1e28ca){while(--_0x1e28ca){_0x14e55c['push'](_0x14e55c['shift']());}};_0x45d284(++_0x422443);}(_0xdc2f,0x192));var _0xfdc2=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xdc2f[_0x1caf6a];return _0x1bf493;};'use strict';var rimraf=require(_0xfdc2('0x0'));var zipdir=require(_0xfdc2('0x1'));var moment=require(_0xfdc2('0x2'));var BPromise=require('bluebird');var util=require(_0xfdc2('0x3'));var path=require(_0xfdc2('0x4'));var fs=require('fs');var _=require(_0xfdc2('0x5'));var Redis=require('ioredis');var interaction=require(_0xfdc2('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xfdc2('0x7'))(_0xfdc2('0x8'));var config=require(_0xfdc2('0x9'));var db=require(_0xfdc2('0xa'))['db'];config[_0xfdc2('0xb')]=_[_0xfdc2('0xc')](config[_0xfdc2('0xb')],{'host':_0xfdc2('0xd'),'port':0x18eb});var socket=require(_0xfdc2('0xe'))(new Redis(config[_0xfdc2('0xb')]));require(_0xfdc2('0xf'))[_0xfdc2('0x10')](socket);function respondWithStatusCode(_0x2592ec,_0x3ba7be){_0x3ba7be=_0x3ba7be||0xcc;return function(_0x364ab9){if(_0x364ab9){return _0x2592ec['sendStatus'](_0x3ba7be);}return _0x2592ec[_0xfdc2('0x11')](_0x3ba7be)[_0xfdc2('0x12')]();};}function respondWithResult(_0x1b1f67,_0x2ea555){_0x2ea555=_0x2ea555||0xc8;return function(_0x2920a4){if(_0x2920a4){return _0x1b1f67['status'](_0x2ea555)[_0xfdc2('0x13')](_0x2920a4);}};}function respondWithFilteredResult(_0x25a6ce,_0x1bb59b){return function(_0x313546){if(_0x313546){var _0x3b3fb4=typeof _0x1bb59b[_0xfdc2('0x14')]===_0xfdc2('0x15')&&typeof _0x1bb59b['limit']==='undefined';var _0x45b291=_0x313546['count'];var _0x4e83d8=_0x3b3fb4?0x0:_0x1bb59b[_0xfdc2('0x14')];var _0x4f2cc5=_0x3b3fb4?_0x313546[_0xfdc2('0x16')]:_0x1bb59b[_0xfdc2('0x14')]+_0x1bb59b[_0xfdc2('0x17')];var _0x36eef9;if(_0x4f2cc5>=_0x45b291){_0x4f2cc5=_0x45b291;_0x36eef9=0xc8;}else{_0x36eef9=0xce;}_0x25a6ce[_0xfdc2('0x11')](_0x36eef9);return _0x25a6ce[_0xfdc2('0x18')]('Content-Range',_0x4e83d8+'-'+_0x4f2cc5+'/'+_0x45b291)['json'](_0x313546);}return null;};}function saveUpdates(_0x152149){return function(_0x7f0260){if(_0x7f0260){return _0x7f0260[_0xfdc2('0x19')](_0x152149)[_0xfdc2('0x1a')](function(_0x3cbf6f){return _0x3cbf6f;});}return null;};}function removeEntity(_0x250e0f){return function(_0x295f51){if(_0x295f51){return _0x295f51['destroy']()[_0xfdc2('0x1a')](function(){_0x250e0f[_0xfdc2('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x183480){return function(_0x12bed8){if(!_0x12bed8){_0x183480[_0xfdc2('0x1b')](0x194);}return _0x12bed8;};}function handleError(_0x5ad234,_0x45f51f){_0x45f51f=_0x45f51f||0x1f4;return function(_0x5788a9){logger[_0xfdc2('0x1c')](_0x5788a9[_0xfdc2('0x1d')]);if(_0x5788a9[_0xfdc2('0x1e')]){delete _0x5788a9[_0xfdc2('0x1e')];}_0x5ad234['status'](_0x45f51f)[_0xfdc2('0x1f')](_0x5788a9);};}exports['index']=function(_0x3290f3,_0x3c0813){var _0x165420={};var _0x4c2822=_[_0xfdc2('0x20')](db[_0xfdc2('0x21')][_0xfdc2('0x22')],function(_0xdaf65f){return{'name':_0xdaf65f[_0xfdc2('0x23')],'type':_0xdaf65f[_0xfdc2('0x24')]['key']};});_0x165420=qs['getOptions'](_0x4c2822,_0x3290f3);return interaction[_0xfdc2('0x25')](_0xfdc2('0x26'),_0x3290f3['query'],_0x3290f3[_0xfdc2('0x27')],_0x165420,_0x4c2822)[_0xfdc2('0x1a')](respondWithFilteredResult(_0x3c0813,_0x165420))[_0xfdc2('0x28')](handleError(_0x3c0813,null));};exports[_0xfdc2('0x29')]=function(_0xc7ef62,_0x596dc1){var _0x36c5ed={'raw':![],'where':{'id':_0xc7ef62[_0xfdc2('0x2a')]['id']}},_0x4057ed={};_0x4057ed['model']=_['keys'](db['FaxInteraction']['rawAttributes']);_0x4057ed['query']=_[_0xfdc2('0x2b')](_0xc7ef62[_0xfdc2('0x2c')]);_0x4057ed['filters']=_[_0xfdc2('0x2d')](_0x4057ed['model'],_0x4057ed[_0xfdc2('0x2c')]);_0x36c5ed[_0xfdc2('0x2e')]=_[_0xfdc2('0x2d')](_0x4057ed[_0xfdc2('0x2f')],qs[_0xfdc2('0x30')](_0xc7ef62[_0xfdc2('0x2c')]['fields']));_0x36c5ed[_0xfdc2('0x2e')]=_0x36c5ed['attributes'][_0xfdc2('0x31')]?_0x36c5ed['attributes']:_0x4057ed[_0xfdc2('0x2f')];if(_0xc7ef62[_0xfdc2('0x2c')][_0xfdc2('0x32')]){_0x36c5ed[_0xfdc2('0x33')]=[{'all':!![]}];}_0x36c5ed=_['merge']({},_0x36c5ed,_0xc7ef62[_0xfdc2('0x34')]);return db[_0xfdc2('0x21')][_0xfdc2('0x35')](_0x36c5ed)[_0xfdc2('0x1a')](handleEntityNotFound(_0x596dc1,null))[_0xfdc2('0x1a')](respondWithResult(_0x596dc1,null))[_0xfdc2('0x28')](handleError(_0x596dc1,null));};exports[_0xfdc2('0x36')]=function(_0x5cee24,_0x1826dd){return db[_0xfdc2('0x21')][_0xfdc2('0x36')](_0x5cee24[_0xfdc2('0x37')],{})['then'](respondWithResult(_0x1826dd,0xc9))['catch'](handleError(_0x1826dd,null));};exports[_0xfdc2('0x19')]=function(_0x5788e8,_0x29bb33){if(_0x5788e8[_0xfdc2('0x37')]['id']){delete _0x5788e8[_0xfdc2('0x37')]['id'];}return db[_0xfdc2('0x21')][_0xfdc2('0x35')]({'where':{'id':_0x5788e8['params']['id']}})[_0xfdc2('0x1a')](handleEntityNotFound(_0x29bb33,null))[_0xfdc2('0x1a')](saveUpdates(_0x5788e8['body'],null))[_0xfdc2('0x1a')](respondWithResult(_0x29bb33,null))[_0xfdc2('0x28')](handleError(_0x29bb33,null));};exports[_0xfdc2('0x38')]=function(_0x5a4521,_0x359840){return db['FaxInteraction'][_0xfdc2('0x35')]({'where':{'id':_0x5a4521['params']['id']}})[_0xfdc2('0x1a')](handleEntityNotFound(_0x359840,null))[_0xfdc2('0x1a')](removeEntity(_0x359840,null))[_0xfdc2('0x28')](handleError(_0x359840,null));};exports[_0xfdc2('0x39')]=function(_0x3dfd5e,_0x43005b){return db['FaxInteraction'][_0xfdc2('0x39')]()['then'](respondWithResult(_0x43005b,null))[_0xfdc2('0x28')](handleError(_0x43005b,null));};exports[_0xfdc2('0x3a')]=function(_0x4685d0,_0x335e65){return db[_0xfdc2('0x3b')]['find']({'where':{'id':_0x4685d0['params']['id']}})['then'](handleEntityNotFound(_0x335e65,null))[_0xfdc2('0x1a')](function(_0x5d15c3){if(_0x5d15c3){return _0x5d15c3[_0xfdc2('0x3a')](_0x4685d0[_0xfdc2('0x37')]['ids'],_[_0xfdc2('0x3c')](_0x4685d0[_0xfdc2('0x37')],[_0xfdc2('0x3d'),'id'])||{});}})[_0xfdc2('0x1a')](respondWithResult(_0x335e65,null))['catch'](handleError(_0x335e65,null));};exports[_0xfdc2('0x3e')]=function(_0x17fbdf,_0x5e94f3){var _0x3b1828={'raw':![],'where':{}};var _0x5dea8f={};var _0x1c0283={'count':0x0,'rows':[]};return db[_0xfdc2('0x21')]['findOne']({'where':{'id':_0x17fbdf['params']['id']}})[_0xfdc2('0x1a')](handleEntityNotFound(_0x5e94f3,null))[_0xfdc2('0x1a')](function(_0xa15678){if(_0xa15678){_0x5dea8f['model']=_[_0xfdc2('0x2b')](db[_0xfdc2('0x3b')][_0xfdc2('0x22')]);_0x5dea8f[_0xfdc2('0x2c')]=_[_0xfdc2('0x2b')](_0x17fbdf[_0xfdc2('0x2c')]);_0x5dea8f[_0xfdc2('0x3f')]=_[_0xfdc2('0x2d')](_0x5dea8f['model'],_0x5dea8f['query']);_0x3b1828[_0xfdc2('0x2e')]=_[_0xfdc2('0x2d')](_0x5dea8f['model'],qs['fields'](_0x17fbdf[_0xfdc2('0x2c')]['fields']));_0x3b1828[_0xfdc2('0x2e')]=_0x3b1828[_0xfdc2('0x2e')][_0xfdc2('0x31')]?_0x3b1828[_0xfdc2('0x2e')]:_0x5dea8f[_0xfdc2('0x2f')];if(!_0x17fbdf['query'][_0xfdc2('0x40')]('nolimit')){_0x3b1828[_0xfdc2('0x17')]=qs[_0xfdc2('0x17')](_0x17fbdf['query'][_0xfdc2('0x17')]);_0x3b1828[_0xfdc2('0x14')]=qs['offset'](_0x17fbdf[_0xfdc2('0x2c')]['offset']);}_0x3b1828['order']=qs[_0xfdc2('0x41')](_0x17fbdf['query']['sort']);_0x3b1828[_0xfdc2('0x42')]=qs[_0xfdc2('0x3f')](_[_0xfdc2('0x43')](_0x17fbdf[_0xfdc2('0x2c')],_0x5dea8f[_0xfdc2('0x3f')]));_0x3b1828[_0xfdc2('0x42')]['FaxInteractionId']=_0xa15678['id'];if(_0x17fbdf[_0xfdc2('0x2c')]['filter']){_0x3b1828[_0xfdc2('0x42')]=_['merge'](_0x3b1828['where'],{'$or':_['map'](_0x3b1828['attributes'],function(_0x54080d){var _0x535f1c={};_0x535f1c[_0x54080d]={'$like':'%'+_0x17fbdf[_0xfdc2('0x2c')][_0xfdc2('0x44')]+'%'};return _0x535f1c;})});}if(_0x17fbdf[_0xfdc2('0x2c')][_0xfdc2('0x45')]){var _0x512cc9=_0x17fbdf[_0xfdc2('0x2c')][_0xfdc2('0x45')][_0xfdc2('0x46')](',');var _0x363535={};_0x363535[_0x512cc9[0x0]]={'$gte':moment(_0x512cc9[0x1])[_0xfdc2('0x47')](_0xfdc2('0x48'))};_0x3b1828[_0xfdc2('0x42')]=_[_0xfdc2('0x49')](_0x3b1828[_0xfdc2('0x42')],_0x363535);}_0x3b1828=_[_0xfdc2('0x49')]({},_0x3b1828,_0x17fbdf['options']);return db[_0xfdc2('0x3b')][_0xfdc2('0x16')]({'where':_0x3b1828[_0xfdc2('0x42')]})[_0xfdc2('0x1a')](function(_0x13df4e){_0x1c0283[_0xfdc2('0x16')]=_0x13df4e;if(_0x17fbdf[_0xfdc2('0x2c')][_0xfdc2('0x32')]){_0x3b1828['include']=[{'all':!![]}];}return db[_0xfdc2('0x3b')][_0xfdc2('0x25')](_0x3b1828);})['then'](function(_0x53670e){_0x1c0283[_0xfdc2('0x4a')]=_0x53670e;return _0x1c0283;});}})[_0xfdc2('0x1a')](respondWithFilteredResult(_0x5e94f3,_0x3b1828))[_0xfdc2('0x28')](handleError(_0x5e94f3,null));};exports[_0xfdc2('0x4b')]=function(_0x3394b9,_0x2a2736){return db[_0xfdc2('0x21')][_0xfdc2('0x35')]({'where':{'id':_0x3394b9[_0xfdc2('0x2a')]['id']}})[_0xfdc2('0x1a')](handleEntityNotFound(_0x2a2736,null))[_0xfdc2('0x1a')](function(_0x431067){if(_0x431067){return _0x431067[_0xfdc2('0x4c')](_0x3394b9['body'][_0xfdc2('0x3d')],_['omit'](_0x3394b9['body'],[_0xfdc2('0x3d'),'id'])||{})['spread'](function(){return db[_0xfdc2('0x4d')]['findAll']({'attributes':['id',_0xfdc2('0x1e'),_0xfdc2('0x4e')],'where':{'id':_0x3394b9[_0xfdc2('0x37')][_0xfdc2('0x3d')]}});})[_0xfdc2('0x1a')](function(_0x4af9fe){socket[_0xfdc2('0x4f')](_0xfdc2('0x50'),{'id':Number(_0x3394b9[_0xfdc2('0x2a')]['id']),'tags':_0x4af9fe||[]});return{'id':Number(_0x3394b9['params']['id']),'tags':_0x4af9fe||[]};});}})['then'](respondWithResult(_0x2a2736,null))[_0xfdc2('0x28')](handleError(_0x2a2736,null));};exports[_0xfdc2('0x51')]=function(_0x23be4a,_0x5939ef){return db['FaxInteraction']['find']({'where':{'id':_0x23be4a[_0xfdc2('0x2a')]['id']}})[_0xfdc2('0x1a')](handleEntityNotFound(_0x5939ef,null))[_0xfdc2('0x1a')](function(_0xebb0ab){if(_0xebb0ab){return _0xebb0ab[_0xfdc2('0x51')](_0x23be4a['query'][_0xfdc2('0x3d')]);}})[_0xfdc2('0x1a')](respondWithStatusCode(_0x5939ef,null))['catch'](handleError(_0x5939ef,null));};exports[_0xfdc2('0x52')]=function(_0x1ef7bd,_0x5daf46){var _0x1ab5a1=moment()[_0xfdc2('0x53')]()['toString']();var _0x3f252b=path[_0xfdc2('0x54')](config[_0xfdc2('0x55')],'server',_0xfdc2('0x56'),_0xfdc2('0x57'));var _0xed577f=path[_0xfdc2('0x54')](config[_0xfdc2('0x55')],_0xfdc2('0x58'),_0xfdc2('0x56'),_0xfdc2('0x59'));var _0x394c52=path[_0xfdc2('0x54')](_0x3f252b,_0x1ab5a1);var _0x43ad4c=util[_0xfdc2('0x47')](_0xfdc2('0x5a'),_0x1ef7bd[_0xfdc2('0x2a')]['id'],_0x1ab5a1);var _0x282deb=path[_0xfdc2('0x54')](_0x3f252b,_0x43ad4c);var _0x98fc94=[];_0x98fc94['push']({'model':db[_0xfdc2('0x5b')],'as':'Attachment','raw':!![]});var _0x39b1b8=[{'model':db[_0xfdc2('0x3b')],'as':_0xfdc2('0x5c'),'attributes':['id','body',_0xfdc2('0x5d')],'include':_0x98fc94}];return db[_0xfdc2('0x21')][_0xfdc2('0x35')]({'where':{'id':_0x1ef7bd[_0xfdc2('0x2a')]['id']},'include':_0x39b1b8})[_0xfdc2('0x1a')](handleEntityNotFound(_0x5daf46,null))[_0xfdc2('0x1a')](function(_0x3b839f){if(_0x3b839f&&_0x3b839f['Messages']){var _0x4e823a=_0x3b839f['get']({'plain':!![]});fs[_0xfdc2('0x5e')](_0x394c52);for(var _0x155490=0x0;_0x155490<_0x4e823a[_0xfdc2('0x5c')]['length'];_0x155490++){var _0x2bc7f9=_0x4e823a[_0xfdc2('0x5c')][_0x155490]['Attachment'];if(_0x2bc7f9){var _0x1277d1=path[_0xfdc2('0x54')](_0xed577f,_0x2bc7f9['basename']);if(fs[_0xfdc2('0x5f')](_0x1277d1)){fs[_0xfdc2('0x60')](_0x1277d1)[_0xfdc2('0x61')](fs[_0xfdc2('0x62')](path[_0xfdc2('0x54')](_0x394c52,_0x2bc7f9[_0xfdc2('0x63')])));}}}return BPromise[_0xfdc2('0x64')]()[_0xfdc2('0x1a')](function(){return new BPromise(function(_0x313f1b,_0x5afe08){zipdir(_0x394c52,{'saveTo':_0x282deb},function(_0x11dd5,_0x2fce71){if(_0x11dd5)return _0x5afe08(_0x11dd5);return _0x313f1b(_0x2fce71);});})[_0xfdc2('0x1a')](function(){return new BPromise(function(_0x4314cd,_0xbdb360){rimraf(_0x394c52,function(_0x12a5bf){if(_0x12a5bf)_0xbdb360(_0x12a5bf);return _0x4314cd();});});})['then'](function(){return _0x5daf46[_0xfdc2('0x52')](_0x282deb,_0x43ad4c,function(_0x2799e0){if(_0x2799e0){console[_0xfdc2('0x65')](_0xfdc2('0x66'),_0x2799e0);}else{fs[_0xfdc2('0x67')](_0x282deb);}});});});}else{return _0x5daf46[_0xfdc2('0x1b')](0xc8);}})['catch'](handleError(_0x5daf46,null));};