b619c65781646531bd96bd83a0befd59c280477c
[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 _0xe751=['socket.io-emitter','./faxInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','name','index','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','fax','query','user','catch','show','params','model','keys','intersection','attributes','fields','includeAll','include','options','create','body','find','addMessage','ids','omit','FaxMessage','filters','length','hasOwnProperty','nolimit','order','sort','where','pick','FaxInteractionId','filter','merge','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','unix','toString','join','root','server','files','attachments','format','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','createWriteStream','download','log','err','unlinkSync','rimraf','zip-dir','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis'];(function(_0x1f8490,_0xf8509b){var _0x295061=function(_0xa4b16){while(--_0xa4b16){_0x1f8490['push'](_0x1f8490['shift']());}};_0x295061(++_0xf8509b);}(_0xe751,0x199));var _0x1e75=function(_0x11239c,_0x2fc625){_0x11239c=_0x11239c-0x0;var _0x2ad4e6=_0xe751[_0x11239c];return _0x2ad4e6;};'use strict';var rimraf=require(_0x1e75('0x0'));var zipdir=require(_0x1e75('0x1'));var moment=require('moment');var BPromise=require(_0x1e75('0x2'));var util=require(_0x1e75('0x3'));var path=require(_0x1e75('0x4'));var fs=require('fs');var _=require(_0x1e75('0x5'));var Redis=require(_0x1e75('0x6'));var interaction=require(_0x1e75('0x7'));var qs=require(_0x1e75('0x8'));var logger=require(_0x1e75('0x9'))(_0x1e75('0xa'));var config=require(_0x1e75('0xb'));var db=require(_0x1e75('0xc'))['db'];config['redis']=_[_0x1e75('0xd')](config[_0x1e75('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x1e75('0xf'))(new Redis(config['redis']));require(_0x1e75('0x10'))[_0x1e75('0x11')](socket);function respondWithStatusCode(_0xe98774,_0x73f583){_0x73f583=_0x73f583||0xcc;return function(_0x5a5a5e){if(_0x5a5a5e){return _0xe98774[_0x1e75('0x12')](_0x73f583);}return _0xe98774['status'](_0x73f583)[_0x1e75('0x13')]();};}function respondWithResult(_0x391f7c,_0x31aa23){_0x31aa23=_0x31aa23||0xc8;return function(_0x2aa2a0){if(_0x2aa2a0){return _0x391f7c[_0x1e75('0x14')](_0x31aa23)[_0x1e75('0x15')](_0x2aa2a0);}};}function respondWithFilteredResult(_0x37d70e,_0x52a10f){return function(_0x2a0cd8){if(_0x2a0cd8){var _0x4fffd2=typeof _0x52a10f[_0x1e75('0x16')]===_0x1e75('0x17')&&typeof _0x52a10f[_0x1e75('0x18')]==='undefined';var _0x3d1951=_0x2a0cd8['count'];var _0xd703e5=_0x4fffd2?0x0:_0x52a10f['offset'];var _0x5531bd=_0x4fffd2?_0x2a0cd8[_0x1e75('0x19')]:_0x52a10f[_0x1e75('0x16')]+_0x52a10f[_0x1e75('0x18')];var _0x29bbc3;if(_0x5531bd>=_0x3d1951){_0x5531bd=_0x3d1951;_0x29bbc3=0xc8;}else{_0x29bbc3=0xce;}_0x37d70e[_0x1e75('0x14')](_0x29bbc3);return _0x37d70e[_0x1e75('0x1a')](_0x1e75('0x1b'),_0xd703e5+'-'+_0x5531bd+'/'+_0x3d1951)[_0x1e75('0x15')](_0x2a0cd8);}return null;};}function saveUpdates(_0x1b3dbc){return function(_0xdcfd40){if(_0xdcfd40){return _0xdcfd40[_0x1e75('0x1c')](_0x1b3dbc)['then'](function(_0x4a499f){return _0x4a499f;});}return null;};}function removeEntity(_0x48e40f){return function(_0x1bf67e){if(_0x1bf67e){return _0x1bf67e[_0x1e75('0x1d')]()[_0x1e75('0x1e')](function(){_0x48e40f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xb47dde){return function(_0x58d991){if(!_0x58d991){_0xb47dde[_0x1e75('0x12')](0x194);}return _0x58d991;};}function handleError(_0x2bb4a9,_0x4d6b29){_0x4d6b29=_0x4d6b29||0x1f4;return function(_0x2f9f05){logger[_0x1e75('0x1f')](_0x2f9f05['stack']);if(_0x2f9f05[_0x1e75('0x20')]){delete _0x2f9f05[_0x1e75('0x20')];}_0x2bb4a9[_0x1e75('0x14')](_0x4d6b29)['send'](_0x2f9f05);};}exports[_0x1e75('0x21')]=function(_0x307be0,_0x1d87d8){var _0x12d337={};var _0x2f76e5=_['map'](db[_0x1e75('0x22')][_0x1e75('0x23')],function(_0x437b3d){return{'name':_0x437b3d[_0x1e75('0x24')],'type':_0x437b3d[_0x1e75('0x25')]['key']};});_0x12d337=qs[_0x1e75('0x26')](_0x2f76e5,_0x307be0);return interaction[_0x1e75('0x27')](_0x1e75('0x28'),_0x307be0[_0x1e75('0x29')],_0x307be0[_0x1e75('0x2a')],_0x12d337,_0x2f76e5)[_0x1e75('0x1e')](respondWithFilteredResult(_0x1d87d8,_0x12d337))[_0x1e75('0x2b')](handleError(_0x1d87d8,null));};exports[_0x1e75('0x2c')]=function(_0x13cd6b,_0x4247f0){var _0x2a96d8={'raw':![],'where':{'id':_0x13cd6b[_0x1e75('0x2d')]['id']}},_0xafe0={};_0xafe0[_0x1e75('0x2e')]=_['keys'](db[_0x1e75('0x22')][_0x1e75('0x23')]);_0xafe0[_0x1e75('0x29')]=_[_0x1e75('0x2f')](_0x13cd6b[_0x1e75('0x29')]);_0xafe0['filters']=_[_0x1e75('0x30')](_0xafe0[_0x1e75('0x2e')],_0xafe0[_0x1e75('0x29')]);_0x2a96d8[_0x1e75('0x31')]=_['intersection'](_0xafe0['model'],qs[_0x1e75('0x32')](_0x13cd6b[_0x1e75('0x29')][_0x1e75('0x32')]));_0x2a96d8[_0x1e75('0x31')]=_0x2a96d8['attributes']['length']?_0x2a96d8[_0x1e75('0x31')]:_0xafe0[_0x1e75('0x2e')];if(_0x13cd6b[_0x1e75('0x29')][_0x1e75('0x33')]){_0x2a96d8[_0x1e75('0x34')]=[{'all':!![]}];}_0x2a96d8=_['merge']({},_0x2a96d8,_0x13cd6b[_0x1e75('0x35')]);return db['FaxInteraction']['find'](_0x2a96d8)[_0x1e75('0x1e')](handleEntityNotFound(_0x4247f0,null))[_0x1e75('0x1e')](respondWithResult(_0x4247f0,null))[_0x1e75('0x2b')](handleError(_0x4247f0,null));};exports['create']=function(_0x54fedc,_0xb9fdc0){return db[_0x1e75('0x22')][_0x1e75('0x36')](_0x54fedc[_0x1e75('0x37')],{})[_0x1e75('0x1e')](respondWithResult(_0xb9fdc0,0xc9))[_0x1e75('0x2b')](handleError(_0xb9fdc0,null));};exports[_0x1e75('0x1c')]=function(_0x8024a1,_0x479e85){if(_0x8024a1[_0x1e75('0x37')]['id']){delete _0x8024a1['body']['id'];}return db[_0x1e75('0x22')][_0x1e75('0x38')]({'where':{'id':_0x8024a1[_0x1e75('0x2d')]['id']}})[_0x1e75('0x1e')](handleEntityNotFound(_0x479e85,null))[_0x1e75('0x1e')](saveUpdates(_0x8024a1[_0x1e75('0x37')],null))['then'](respondWithResult(_0x479e85,null))[_0x1e75('0x2b')](handleError(_0x479e85,null));};exports[_0x1e75('0x1d')]=function(_0x1cf1b7,_0x54a3d4){return db[_0x1e75('0x22')][_0x1e75('0x38')]({'where':{'id':_0x1cf1b7[_0x1e75('0x2d')]['id']}})[_0x1e75('0x1e')](handleEntityNotFound(_0x54a3d4,null))['then'](removeEntity(_0x54a3d4,null))[_0x1e75('0x2b')](handleError(_0x54a3d4,null));};exports['describe']=function(_0x1bac15,_0x2fa270){return db[_0x1e75('0x22')]['describe']()[_0x1e75('0x1e')](respondWithResult(_0x2fa270,null))[_0x1e75('0x2b')](handleError(_0x2fa270,null));};exports[_0x1e75('0x39')]=function(_0x4c166c,_0x334bb0){return db['FaxMessage'][_0x1e75('0x38')]({'where':{'id':_0x4c166c['params']['id']}})['then'](handleEntityNotFound(_0x334bb0,null))[_0x1e75('0x1e')](function(_0x24fcc6){if(_0x24fcc6){return _0x24fcc6['addMessage'](_0x4c166c[_0x1e75('0x37')][_0x1e75('0x3a')],_[_0x1e75('0x3b')](_0x4c166c['body'],[_0x1e75('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x334bb0,null))[_0x1e75('0x2b')](handleError(_0x334bb0,null));};exports['getMessages']=function(_0x5e9a7a,_0x10f00e){var _0x490f47={'raw':![],'where':{}};var _0x2a1cd7={};var _0x27e3ae={'count':0x0,'rows':[]};return db[_0x1e75('0x22')]['findOne']({'where':{'id':_0x5e9a7a[_0x1e75('0x2d')]['id']}})[_0x1e75('0x1e')](handleEntityNotFound(_0x10f00e,null))[_0x1e75('0x1e')](function(_0x317b95){if(_0x317b95){_0x2a1cd7[_0x1e75('0x2e')]=_[_0x1e75('0x2f')](db[_0x1e75('0x3c')][_0x1e75('0x23')]);_0x2a1cd7[_0x1e75('0x29')]=_[_0x1e75('0x2f')](_0x5e9a7a[_0x1e75('0x29')]);_0x2a1cd7[_0x1e75('0x3d')]=_[_0x1e75('0x30')](_0x2a1cd7['model'],_0x2a1cd7[_0x1e75('0x29')]);_0x490f47[_0x1e75('0x31')]=_['intersection'](_0x2a1cd7[_0x1e75('0x2e')],qs['fields'](_0x5e9a7a[_0x1e75('0x29')][_0x1e75('0x32')]));_0x490f47[_0x1e75('0x31')]=_0x490f47[_0x1e75('0x31')][_0x1e75('0x3e')]?_0x490f47[_0x1e75('0x31')]:_0x2a1cd7[_0x1e75('0x2e')];if(!_0x5e9a7a['query'][_0x1e75('0x3f')](_0x1e75('0x40'))){_0x490f47[_0x1e75('0x18')]=qs[_0x1e75('0x18')](_0x5e9a7a['query'][_0x1e75('0x18')]);_0x490f47[_0x1e75('0x16')]=qs['offset'](_0x5e9a7a[_0x1e75('0x29')][_0x1e75('0x16')]);}_0x490f47[_0x1e75('0x41')]=qs['sort'](_0x5e9a7a[_0x1e75('0x29')][_0x1e75('0x42')]);_0x490f47[_0x1e75('0x43')]=qs['filters'](_[_0x1e75('0x44')](_0x5e9a7a[_0x1e75('0x29')],_0x2a1cd7[_0x1e75('0x3d')]));_0x490f47[_0x1e75('0x43')][_0x1e75('0x45')]=_0x317b95['id'];if(_0x5e9a7a[_0x1e75('0x29')][_0x1e75('0x46')]){_0x490f47[_0x1e75('0x43')]=_[_0x1e75('0x47')](_0x490f47['where'],{'$or':_[_0x1e75('0x48')](_0x490f47['attributes'],function(_0x5ee58e){var _0x4c3096={};_0x4c3096[_0x5ee58e]={'$like':'%'+_0x5e9a7a[_0x1e75('0x29')]['filter']+'%'};return _0x4c3096;})});}if(_0x5e9a7a['query'][_0x1e75('0x49')]){var _0xffe6c4=_0x5e9a7a[_0x1e75('0x29')]['$gte'][_0x1e75('0x4a')](',');var _0x1d120d={};_0x1d120d[_0xffe6c4[0x0]]={'$gte':moment(_0xffe6c4[0x1])['format'](_0x1e75('0x4b'))};_0x490f47['where']=_[_0x1e75('0x47')](_0x490f47['where'],_0x1d120d);}_0x490f47=_[_0x1e75('0x47')]({},_0x490f47,_0x5e9a7a[_0x1e75('0x35')]);return db[_0x1e75('0x3c')][_0x1e75('0x19')]({'where':_0x490f47[_0x1e75('0x43')]})[_0x1e75('0x1e')](function(_0x936b0c){_0x27e3ae[_0x1e75('0x19')]=_0x936b0c;if(_0x5e9a7a[_0x1e75('0x29')][_0x1e75('0x33')]){_0x490f47[_0x1e75('0x34')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x490f47);})[_0x1e75('0x1e')](function(_0x365646){_0x27e3ae[_0x1e75('0x4c')]=_0x365646;return _0x27e3ae;});}})[_0x1e75('0x1e')](respondWithFilteredResult(_0x10f00e,_0x490f47))[_0x1e75('0x2b')](handleError(_0x10f00e,null));};exports[_0x1e75('0x4d')]=function(_0x67baca,_0x418cc6){return db[_0x1e75('0x22')][_0x1e75('0x38')]({'where':{'id':_0x67baca[_0x1e75('0x2d')]['id']}})['then'](handleEntityNotFound(_0x418cc6,null))[_0x1e75('0x1e')](function(_0xf253af){if(_0xf253af){return _0xf253af['setTags'](_0x67baca[_0x1e75('0x37')][_0x1e75('0x3a')],_[_0x1e75('0x3b')](_0x67baca[_0x1e75('0x37')],['ids','id'])||{})[_0x1e75('0x4e')](function(){return db[_0x1e75('0x4f')][_0x1e75('0x27')]({'attributes':['id',_0x1e75('0x20'),_0x1e75('0x50')],'where':{'id':_0x67baca['body']['ids']}});})[_0x1e75('0x1e')](function(_0x16b7de){socket[_0x1e75('0x51')](_0x1e75('0x52'),{'id':Number(_0x67baca[_0x1e75('0x2d')]['id']),'tags':_0x16b7de||[]});return{'id':Number(_0x67baca[_0x1e75('0x2d')]['id']),'tags':_0x16b7de||[]};});}})[_0x1e75('0x1e')](respondWithResult(_0x418cc6,null))[_0x1e75('0x2b')](handleError(_0x418cc6,null));};exports['removeTags']=function(_0x3d0da0,_0x271f85){return db[_0x1e75('0x22')][_0x1e75('0x38')]({'where':{'id':_0x3d0da0['params']['id']}})[_0x1e75('0x1e')](handleEntityNotFound(_0x271f85,null))[_0x1e75('0x1e')](function(_0x5c1f98){if(_0x5c1f98){return _0x5c1f98[_0x1e75('0x53')](_0x3d0da0[_0x1e75('0x29')][_0x1e75('0x3a')]);}})[_0x1e75('0x1e')](respondWithStatusCode(_0x271f85,null))[_0x1e75('0x2b')](handleError(_0x271f85,null));};exports['download']=function(_0x25f940,_0x1093f6){var _0xed760b=moment()[_0x1e75('0x54')]()[_0x1e75('0x55')]();var _0x36bd38=path[_0x1e75('0x56')](config[_0x1e75('0x57')],_0x1e75('0x58'),_0x1e75('0x59'),'tmp');var _0x3e127c=path['join'](config[_0x1e75('0x57')],'server',_0x1e75('0x59'),_0x1e75('0x5a'));var _0x9cfd80=path['join'](_0x36bd38,_0xed760b);var _0x1f8dfe=util[_0x1e75('0x5b')](_0x1e75('0x5c'),_0x25f940[_0x1e75('0x2d')]['id'],_0xed760b);var _0x5f0e39=path[_0x1e75('0x56')](_0x36bd38,_0x1f8dfe);var _0x5680b0=[];_0x5680b0['push']({'model':db[_0x1e75('0x5d')],'as':_0x1e75('0x5d'),'raw':!![]});var _0x16d2b1=[{'model':db['FaxMessage'],'as':_0x1e75('0x5e'),'attributes':['id','body',_0x1e75('0x5f')],'include':_0x5680b0}];return db[_0x1e75('0x22')]['find']({'where':{'id':_0x25f940[_0x1e75('0x2d')]['id']},'include':_0x16d2b1})['then'](handleEntityNotFound(_0x1093f6,null))[_0x1e75('0x1e')](function(_0xa06f0f){if(_0xa06f0f&&_0xa06f0f['Messages']){var _0x45ccc8=_0xa06f0f[_0x1e75('0x60')]({'plain':!![]});fs[_0x1e75('0x61')](_0x9cfd80);for(var _0x37d76f=0x0;_0x37d76f<_0x45ccc8[_0x1e75('0x5e')][_0x1e75('0x3e')];_0x37d76f++){var _0x13297e=_0x45ccc8[_0x1e75('0x5e')][_0x37d76f][_0x1e75('0x5d')];if(_0x13297e){var _0x2a086c=path[_0x1e75('0x56')](_0x3e127c,_0x13297e[_0x1e75('0x62')]);if(fs[_0x1e75('0x63')](_0x2a086c)){fs[_0x1e75('0x64')](_0x2a086c)['pipe'](fs[_0x1e75('0x65')](path['join'](_0x9cfd80,_0x13297e[_0x1e75('0x62')])));}}}return BPromise['resolve']()[_0x1e75('0x1e')](function(){return new BPromise(function(_0x1f5d6c,_0x2dbd7b){zipdir(_0x9cfd80,{'saveTo':_0x5f0e39},function(_0x5d02d4,_0xbbced8){if(_0x5d02d4)return _0x2dbd7b(_0x5d02d4);return _0x1f5d6c(_0xbbced8);});})[_0x1e75('0x1e')](function(){return new BPromise(function(_0x259e50,_0x40cac9){rimraf(_0x9cfd80,function(_0x4f1015){if(_0x4f1015)_0x40cac9(_0x4f1015);return _0x259e50();});});})['then'](function(){return _0x1093f6[_0x1e75('0x66')](_0x5f0e39,_0x1f8dfe,function(_0x2ec1){if(_0x2ec1){console[_0x1e75('0x67')](_0x1e75('0x68'),_0x2ec1);}else{fs[_0x1e75('0x69')](_0x5f0e39);}});});});}else{return _0x1093f6[_0x1e75('0x12')](0xc8);}})[_0x1e75('0x2b')](handleError(_0x1093f6,null));};