2290bb87c997c25dbf99f9a3bdef8ba8f153cb7c
[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 _0xeeeb=['catch','show','params','model','keys','rawAttributes','filters','attributes','fields','length','include','options','find','body','FaxMessage','ids','omit','findOne','intersection','hasOwnProperty','nolimit','limit','order','sort','pick','where','FaxInteractionId','filter','merge','map','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','setTags','spread','Tag','color','emit','removeTags','unix','toString','root','server','files','tmp','attachments','join','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','createWriteStream','resolve','download','err','unlinkSync','sendStatus','rimraf','zip-dir','bluebird','path','lodash','ioredis','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','json','offset','undefined','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','FaxInteraction','type','getOptions','findAll','fax','query'];(function(_0x4961d8,_0x3070dd){var _0x45a793=function(_0xb320df){while(--_0xb320df){_0x4961d8['push'](_0x4961d8['shift']());}};_0x45a793(++_0x3070dd);}(_0xeeeb,0xa9));var _0xbeee=function(_0x34effd,_0x1906f9){_0x34effd=_0x34effd-0x0;var _0x4571b0=_0xeeeb[_0x34effd];return _0x4571b0;};'use strict';var rimraf=require(_0xbeee('0x0'));var zipdir=require(_0xbeee('0x1'));var moment=require('moment');var BPromise=require(_0xbeee('0x2'));var util=require('util');var path=require(_0xbeee('0x3'));var fs=require('fs');var _=require(_0xbeee('0x4'));var Redis=require(_0xbeee('0x5'));var interaction=require(_0xbeee('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xbeee('0x7'))(_0xbeee('0x8'));var config=require(_0xbeee('0x9'));var db=require(_0xbeee('0xa'))['db'];config[_0xbeee('0xb')]=_[_0xbeee('0xc')](config[_0xbeee('0xb')],{'host':_0xbeee('0xd'),'port':0x18eb});var socket=require(_0xbeee('0xe'))(new Redis(config[_0xbeee('0xb')]));require(_0xbeee('0xf'))[_0xbeee('0x10')](socket);function respondWithStatusCode(_0x2849ca,_0x12de48){_0x12de48=_0x12de48||0xcc;return function(_0x4b41ee){if(_0x4b41ee){return _0x2849ca['sendStatus'](_0x12de48);}return _0x2849ca[_0xbeee('0x11')](_0x12de48)[_0xbeee('0x12')]();};}function respondWithResult(_0x983a0f,_0x4aac33){_0x4aac33=_0x4aac33||0xc8;return function(_0x4a7555){if(_0x4a7555){return _0x983a0f[_0xbeee('0x11')](_0x4aac33)[_0xbeee('0x13')](_0x4a7555);}};}function respondWithFilteredResult(_0x3a655f,_0x570215){return function(_0x198ff4){if(_0x198ff4){var _0x4b886e=typeof _0x570215[_0xbeee('0x14')]==='undefined'&&typeof _0x570215['limit']===_0xbeee('0x15');var _0x3ed846=_0x198ff4[_0xbeee('0x16')];var _0x47bbcd=_0x4b886e?0x0:_0x570215['offset'];var _0x51177a=_0x4b886e?_0x198ff4[_0xbeee('0x16')]:_0x570215[_0xbeee('0x14')]+_0x570215['limit'];var _0x2f04bb;if(_0x51177a>=_0x3ed846){_0x51177a=_0x3ed846;_0x2f04bb=0xc8;}else{_0x2f04bb=0xce;}_0x3a655f[_0xbeee('0x11')](_0x2f04bb);return _0x3a655f[_0xbeee('0x17')](_0xbeee('0x18'),_0x47bbcd+'-'+_0x51177a+'/'+_0x3ed846)[_0xbeee('0x13')](_0x198ff4);}return null;};}function saveUpdates(_0x1c7efd){return function(_0xb45e20){if(_0xb45e20){return _0xb45e20[_0xbeee('0x19')](_0x1c7efd)[_0xbeee('0x1a')](function(_0x4c8309){return _0x4c8309;});}return null;};}function removeEntity(_0x187d94){return function(_0x5df827){if(_0x5df827){return _0x5df827[_0xbeee('0x1b')]()['then'](function(){_0x187d94[_0xbeee('0x11')](0xcc)[_0xbeee('0x12')]();});}};}function handleEntityNotFound(_0x3c1ba3){return function(_0x1a0428){if(!_0x1a0428){_0x3c1ba3['sendStatus'](0x194);}return _0x1a0428;};}function handleError(_0x210d0b,_0x4827b5){_0x4827b5=_0x4827b5||0x1f4;return function(_0x4fc47b){logger[_0xbeee('0x1c')](_0x4fc47b[_0xbeee('0x1d')]);if(_0x4fc47b[_0xbeee('0x1e')]){delete _0x4fc47b[_0xbeee('0x1e')];}_0x210d0b[_0xbeee('0x11')](_0x4827b5)[_0xbeee('0x1f')](_0x4fc47b);};}exports[_0xbeee('0x20')]=function(_0x125f39,_0x449b80){var _0x2b7824={};var _0x3e7d95=_['map'](db[_0xbeee('0x21')]['rawAttributes'],function(_0x2755f4){return{'name':_0x2755f4['fieldName'],'type':_0x2755f4[_0xbeee('0x22')]['key']};});_0x2b7824=qs[_0xbeee('0x23')](_0x3e7d95,_0x125f39);return interaction[_0xbeee('0x24')](_0xbeee('0x25'),_0x125f39[_0xbeee('0x26')],_0x125f39['user'],_0x2b7824,_0x3e7d95)['then'](respondWithFilteredResult(_0x449b80,_0x2b7824))[_0xbeee('0x27')](handleError(_0x449b80,null));};exports[_0xbeee('0x28')]=function(_0x441a4b,_0xef4d9a){var _0x5cd9eb={'raw':![],'where':{'id':_0x441a4b[_0xbeee('0x29')]['id']}},_0x4bdcf3={};_0x4bdcf3[_0xbeee('0x2a')]=_[_0xbeee('0x2b')](db[_0xbeee('0x21')][_0xbeee('0x2c')]);_0x4bdcf3[_0xbeee('0x26')]=_[_0xbeee('0x2b')](_0x441a4b[_0xbeee('0x26')]);_0x4bdcf3[_0xbeee('0x2d')]=_['intersection'](_0x4bdcf3[_0xbeee('0x2a')],_0x4bdcf3['query']);_0x5cd9eb[_0xbeee('0x2e')]=_['intersection'](_0x4bdcf3[_0xbeee('0x2a')],qs['fields'](_0x441a4b['query'][_0xbeee('0x2f')]));_0x5cd9eb[_0xbeee('0x2e')]=_0x5cd9eb[_0xbeee('0x2e')][_0xbeee('0x30')]?_0x5cd9eb['attributes']:_0x4bdcf3[_0xbeee('0x2a')];if(_0x441a4b[_0xbeee('0x26')]['includeAll']){_0x5cd9eb[_0xbeee('0x31')]=[{'all':!![]}];}_0x5cd9eb=_['merge']({},_0x5cd9eb,_0x441a4b[_0xbeee('0x32')]);return db['FaxInteraction'][_0xbeee('0x33')](_0x5cd9eb)[_0xbeee('0x1a')](handleEntityNotFound(_0xef4d9a,null))[_0xbeee('0x1a')](respondWithResult(_0xef4d9a,null))[_0xbeee('0x27')](handleError(_0xef4d9a,null));};exports['create']=function(_0x3fd59d,_0x53cbb4){return db[_0xbeee('0x21')]['create'](_0x3fd59d[_0xbeee('0x34')],{})[_0xbeee('0x1a')](respondWithResult(_0x53cbb4,0xc9))[_0xbeee('0x27')](handleError(_0x53cbb4,null));};exports[_0xbeee('0x19')]=function(_0x346bcc,_0x32b7c6){if(_0x346bcc[_0xbeee('0x34')]['id']){delete _0x346bcc[_0xbeee('0x34')]['id'];}return db[_0xbeee('0x21')]['find']({'where':{'id':_0x346bcc[_0xbeee('0x29')]['id']}})['then'](handleEntityNotFound(_0x32b7c6,null))[_0xbeee('0x1a')](saveUpdates(_0x346bcc[_0xbeee('0x34')],null))[_0xbeee('0x1a')](respondWithResult(_0x32b7c6,null))[_0xbeee('0x27')](handleError(_0x32b7c6,null));};exports[_0xbeee('0x1b')]=function(_0x1a8d54,_0xa30885){return db[_0xbeee('0x21')][_0xbeee('0x33')]({'where':{'id':_0x1a8d54['params']['id']}})[_0xbeee('0x1a')](handleEntityNotFound(_0xa30885,null))[_0xbeee('0x1a')](removeEntity(_0xa30885,null))[_0xbeee('0x27')](handleError(_0xa30885,null));};exports['describe']=function(_0x2d21fe,_0x36a721){return db[_0xbeee('0x21')]['describe']()[_0xbeee('0x1a')](respondWithResult(_0x36a721,null))[_0xbeee('0x27')](handleError(_0x36a721,null));};exports['addMessage']=function(_0x22fac1,_0x3b8369){return db[_0xbeee('0x35')]['find']({'where':{'id':_0x22fac1[_0xbeee('0x29')]['id']}})[_0xbeee('0x1a')](handleEntityNotFound(_0x3b8369,null))[_0xbeee('0x1a')](function(_0x5d1978){if(_0x5d1978){return _0x5d1978['addMessage'](_0x22fac1['body'][_0xbeee('0x36')],_[_0xbeee('0x37')](_0x22fac1[_0xbeee('0x34')],['ids','id'])||{});}})[_0xbeee('0x1a')](respondWithResult(_0x3b8369,null))['catch'](handleError(_0x3b8369,null));};exports['getMessages']=function(_0x1a6acf,_0x2040da){var _0xac579={'raw':![],'where':{}};var _0x5e9f6c={};var _0x2b9e7e={'count':0x0,'rows':[]};return db[_0xbeee('0x21')][_0xbeee('0x38')]({'where':{'id':_0x1a6acf[_0xbeee('0x29')]['id']}})[_0xbeee('0x1a')](handleEntityNotFound(_0x2040da,null))['then'](function(_0xd4bbf1){if(_0xd4bbf1){_0x5e9f6c[_0xbeee('0x2a')]=_[_0xbeee('0x2b')](db['FaxMessage'][_0xbeee('0x2c')]);_0x5e9f6c[_0xbeee('0x26')]=_[_0xbeee('0x2b')](_0x1a6acf[_0xbeee('0x26')]);_0x5e9f6c[_0xbeee('0x2d')]=_[_0xbeee('0x39')](_0x5e9f6c[_0xbeee('0x2a')],_0x5e9f6c[_0xbeee('0x26')]);_0xac579[_0xbeee('0x2e')]=_['intersection'](_0x5e9f6c[_0xbeee('0x2a')],qs['fields'](_0x1a6acf['query'][_0xbeee('0x2f')]));_0xac579[_0xbeee('0x2e')]=_0xac579[_0xbeee('0x2e')][_0xbeee('0x30')]?_0xac579[_0xbeee('0x2e')]:_0x5e9f6c[_0xbeee('0x2a')];if(!_0x1a6acf['query'][_0xbeee('0x3a')](_0xbeee('0x3b'))){_0xac579[_0xbeee('0x3c')]=qs['limit'](_0x1a6acf[_0xbeee('0x26')][_0xbeee('0x3c')]);_0xac579[_0xbeee('0x14')]=qs[_0xbeee('0x14')](_0x1a6acf[_0xbeee('0x26')][_0xbeee('0x14')]);}_0xac579[_0xbeee('0x3d')]=qs[_0xbeee('0x3e')](_0x1a6acf['query'][_0xbeee('0x3e')]);_0xac579['where']=qs['filters'](_[_0xbeee('0x3f')](_0x1a6acf['query'],_0x5e9f6c[_0xbeee('0x2d')]));_0xac579[_0xbeee('0x40')][_0xbeee('0x41')]=_0xd4bbf1['id'];if(_0x1a6acf['query'][_0xbeee('0x42')]){_0xac579[_0xbeee('0x40')]=_[_0xbeee('0x43')](_0xac579[_0xbeee('0x40')],{'$or':_[_0xbeee('0x44')](_0xac579['attributes'],function(_0x17ea15){var _0x6fd63e={};_0x6fd63e[_0x17ea15]={'$like':'%'+_0x1a6acf[_0xbeee('0x26')][_0xbeee('0x42')]+'%'};return _0x6fd63e;})});}if(_0x1a6acf[_0xbeee('0x26')][_0xbeee('0x45')]){var _0x532289=_0x1a6acf[_0xbeee('0x26')][_0xbeee('0x45')]['split'](',');var _0x182cc9={};_0x182cc9[_0x532289[0x0]]={'$gte':moment(_0x532289[0x1])[_0xbeee('0x46')](_0xbeee('0x47'))};_0xac579['where']=_[_0xbeee('0x43')](_0xac579[_0xbeee('0x40')],_0x182cc9);}_0xac579=_['merge']({},_0xac579,_0x1a6acf[_0xbeee('0x32')]);return db[_0xbeee('0x35')][_0xbeee('0x16')]({'where':_0xac579[_0xbeee('0x40')]})[_0xbeee('0x1a')](function(_0x1f92dd){_0x2b9e7e['count']=_0x1f92dd;if(_0x1a6acf['query'][_0xbeee('0x48')]){_0xac579[_0xbeee('0x31')]=[{'all':!![]}];}return db['FaxMessage'][_0xbeee('0x24')](_0xac579);})[_0xbeee('0x1a')](function(_0x5546e6){_0x2b9e7e[_0xbeee('0x49')]=_0x5546e6;return _0x2b9e7e;});}})[_0xbeee('0x1a')](respondWithFilteredResult(_0x2040da,_0xac579))[_0xbeee('0x27')](handleError(_0x2040da,null));};exports[_0xbeee('0x4a')]=function(_0x4dc04d,_0x2f9c75){return db['FaxInteraction'][_0xbeee('0x33')]({'where':{'id':_0x4dc04d[_0xbeee('0x29')]['id']}})['then'](handleEntityNotFound(_0x2f9c75,null))['then'](function(_0x121360){if(_0x121360){return _0x121360[_0xbeee('0x4b')](_0x4dc04d[_0xbeee('0x34')]['ids'],_[_0xbeee('0x37')](_0x4dc04d['body'],[_0xbeee('0x36'),'id'])||{})[_0xbeee('0x4c')](function(){return db[_0xbeee('0x4d')][_0xbeee('0x24')]({'attributes':['id',_0xbeee('0x1e'),_0xbeee('0x4e')],'where':{'id':_0x4dc04d['body'][_0xbeee('0x36')]}});})[_0xbeee('0x1a')](function(_0x10cf14){socket[_0xbeee('0x4f')]('faxInteractionTags:save',{'id':Number(_0x4dc04d[_0xbeee('0x29')]['id']),'tags':_0x10cf14||[]});return{'id':Number(_0x4dc04d[_0xbeee('0x29')]['id']),'tags':_0x10cf14||[]};});}})[_0xbeee('0x1a')](respondWithResult(_0x2f9c75,null))['catch'](handleError(_0x2f9c75,null));};exports[_0xbeee('0x50')]=function(_0x11ff41,_0x5e41f3){return db['FaxInteraction'][_0xbeee('0x33')]({'where':{'id':_0x11ff41[_0xbeee('0x29')]['id']}})['then'](handleEntityNotFound(_0x5e41f3,null))[_0xbeee('0x1a')](function(_0x4b1d09){if(_0x4b1d09){return _0x4b1d09[_0xbeee('0x50')](_0x11ff41[_0xbeee('0x26')][_0xbeee('0x36')]);}})['then'](respondWithStatusCode(_0x5e41f3,null))[_0xbeee('0x27')](handleError(_0x5e41f3,null));};exports['download']=function(_0x896635,_0x4bea41){var _0xb991d6=moment()[_0xbeee('0x51')]()[_0xbeee('0x52')]();var _0x322f87=path['join'](config[_0xbeee('0x53')],_0xbeee('0x54'),_0xbeee('0x55'),_0xbeee('0x56'));var _0x51989c=path['join'](config['root'],_0xbeee('0x54'),_0xbeee('0x55'),_0xbeee('0x57'));var _0x3fe37a=path[_0xbeee('0x58')](_0x322f87,_0xb991d6);var _0x55544a=util[_0xbeee('0x46')](_0xbeee('0x59'),_0x896635[_0xbeee('0x29')]['id'],_0xb991d6);var _0x49593e=path['join'](_0x322f87,_0x55544a);var _0x5bb818=[];_0x5bb818['push']({'model':db['Attachment'],'as':_0xbeee('0x5a'),'raw':!![]});var _0x3dbdd6=[{'model':db[_0xbeee('0x35')],'as':_0xbeee('0x5b'),'attributes':['id',_0xbeee('0x34'),_0xbeee('0x5c')],'include':_0x5bb818}];return db['FaxInteraction'][_0xbeee('0x33')]({'where':{'id':_0x896635[_0xbeee('0x29')]['id']},'include':_0x3dbdd6})[_0xbeee('0x1a')](handleEntityNotFound(_0x4bea41,null))[_0xbeee('0x1a')](function(_0x523c3c){if(_0x523c3c&&_0x523c3c[_0xbeee('0x5b')]){var _0x49113e=_0x523c3c[_0xbeee('0x5d')]({'plain':!![]});fs[_0xbeee('0x5e')](_0x3fe37a);for(var _0x1eec8a=0x0;_0x1eec8a<_0x49113e[_0xbeee('0x5b')][_0xbeee('0x30')];_0x1eec8a++){var _0x52f9f6=_0x49113e[_0xbeee('0x5b')][_0x1eec8a][_0xbeee('0x5a')];if(_0x52f9f6){var _0x488634=path['join'](_0x51989c,_0x52f9f6[_0xbeee('0x5f')]);if(fs[_0xbeee('0x60')](_0x488634)){fs[_0xbeee('0x61')](_0x488634)['pipe'](fs[_0xbeee('0x62')](path[_0xbeee('0x58')](_0x3fe37a,_0x52f9f6[_0xbeee('0x5f')])));}}}return BPromise[_0xbeee('0x63')]()[_0xbeee('0x1a')](function(){return new BPromise(function(_0xf61e27,_0x268393){zipdir(_0x3fe37a,{'saveTo':_0x49593e},function(_0x39a054,_0x495d22){if(_0x39a054)return _0x268393(_0x39a054);return _0xf61e27(_0x495d22);});})[_0xbeee('0x1a')](function(){return new BPromise(function(_0x166521,_0x28776d){rimraf(_0x3fe37a,function(_0x1455a1){if(_0x1455a1)_0x28776d(_0x1455a1);return _0x166521();});});})['then'](function(){return _0x4bea41[_0xbeee('0x64')](_0x49593e,_0x55544a,function(_0x1c87ac){if(_0x1c87ac){console['log'](_0xbeee('0x65'),_0x1c87ac);}else{fs[_0xbeee('0x66')](_0x49593e);}});});});}else{return _0x4bea41[_0xbeee('0x67')](0xc8);}})[_0xbeee('0x27')](handleError(_0x4bea41,null));};