Built motion from commit 1fd437e9.|2.6.19
[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 _0xcfbe=['status','end','offset','undefined','limit','count','set','json','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','getOptions','findAll','fax','query','user','catch','show','params','FaxInteraction','keys','filters','intersection','model','attributes','fields','length','merge','find','create','body','describe','FaxMessage','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','FaxInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','include','addTags','setTags','spread','Tag','color','faxInteractionTags:save','removeTags','toString','tmp','join','root','attachments','format','transcript-%d-%s.zip','Attachment','Messages','createdAt','mkdirSync','existsSync','createWriteStream','basename','resolve','download','log','err','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../mysqldb','redis','localhost','socket.io-emitter','./faxInteraction.socket'];(function(_0x549c56,_0xc02b6a){var _0x385a97=function(_0x5f5c22){while(--_0x5f5c22){_0x549c56['push'](_0x549c56['shift']());}};_0x385a97(++_0xc02b6a);}(_0xcfbe,0x181));var _0xecfb=function(_0x1679cc,_0x242c53){_0x1679cc=_0x1679cc-0x0;var _0x4aaec8=_0xcfbe[_0x1679cc];return _0x4aaec8;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xecfb('0x0'));var moment=require(_0xecfb('0x1'));var BPromise=require(_0xecfb('0x2'));var util=require(_0xecfb('0x3'));var path=require(_0xecfb('0x4'));var fs=require('fs');var _=require(_0xecfb('0x5'));var Redis=require(_0xecfb('0x6'));var interaction=require(_0xecfb('0x7'));var qs=require(_0xecfb('0x8'));var logger=require('../../config/logger')(_0xecfb('0x9'));var config=require('../../config/environment');var db=require(_0xecfb('0xa'))['db'];config[_0xecfb('0xb')]=_['defaults'](config['redis'],{'host':_0xecfb('0xc'),'port':0x18eb});var socket=require(_0xecfb('0xd'))(new Redis(config[_0xecfb('0xb')]));require(_0xecfb('0xe'))['register'](socket);function respondWithStatusCode(_0x1e8e1a,_0x2d09be){_0x2d09be=_0x2d09be||0xcc;return function(_0x229623){if(_0x229623){return _0x1e8e1a['sendStatus'](_0x2d09be);}return _0x1e8e1a[_0xecfb('0xf')](_0x2d09be)[_0xecfb('0x10')]();};}function respondWithResult(_0x4a21c5,_0x550128){_0x550128=_0x550128||0xc8;return function(_0x3c548d){if(_0x3c548d){return _0x4a21c5[_0xecfb('0xf')](_0x550128)['json'](_0x3c548d);}};}function respondWithFilteredResult(_0x3e9d0e,_0x35e2b9){return function(_0x45778f){if(_0x45778f){var _0x2db17d=typeof _0x35e2b9[_0xecfb('0x11')]===_0xecfb('0x12')&&typeof _0x35e2b9[_0xecfb('0x13')]==='undefined';var _0x13f545=_0x45778f[_0xecfb('0x14')];var _0x5e098e=_0x2db17d?0x0:_0x35e2b9[_0xecfb('0x11')];var _0x4e09de=_0x2db17d?_0x45778f[_0xecfb('0x14')]:_0x35e2b9[_0xecfb('0x11')]+_0x35e2b9['limit'];var _0x391772;if(_0x4e09de>=_0x13f545){_0x4e09de=_0x13f545;_0x391772=0xc8;}else{_0x391772=0xce;}_0x3e9d0e[_0xecfb('0xf')](_0x391772);return _0x3e9d0e[_0xecfb('0x15')]('Content-Range',_0x5e098e+'-'+_0x4e09de+'/'+_0x13f545)[_0xecfb('0x16')](_0x45778f);}return null;};}function saveUpdates(_0x5932ce){return function(_0x49d557){if(_0x49d557){return _0x49d557['update'](_0x5932ce)[_0xecfb('0x17')](function(_0x62ebb6){return _0x62ebb6;});}return null;};}function removeEntity(_0x31ea58){return function(_0x37e655){if(_0x37e655){return _0x37e655[_0xecfb('0x18')]()[_0xecfb('0x17')](function(){_0x31ea58[_0xecfb('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1df686){return function(_0x3e1ee9){if(!_0x3e1ee9){_0x1df686[_0xecfb('0x19')](0x194);}return _0x3e1ee9;};}function handleError(_0x1f68fc,_0x1de79c){_0x1de79c=_0x1de79c||0x1f4;return function(_0x38bddc){logger[_0xecfb('0x1a')](_0x38bddc[_0xecfb('0x1b')]);if(_0x38bddc[_0xecfb('0x1c')]){delete _0x38bddc['name'];}_0x1f68fc[_0xecfb('0xf')](_0x1de79c)[_0xecfb('0x1d')](_0x38bddc);};}exports[_0xecfb('0x1e')]=function(_0x53410c,_0x38143d){var _0x17b8a6={};var _0xde2fcd=_[_0xecfb('0x1f')](db['FaxInteraction'][_0xecfb('0x20')],function(_0x1582a0){return{'name':_0x1582a0[_0xecfb('0x21')],'type':_0x1582a0[_0xecfb('0x22')]['key']};});_0x17b8a6=qs[_0xecfb('0x23')](_0xde2fcd,_0x53410c);return interaction[_0xecfb('0x24')](_0xecfb('0x25'),_0x53410c[_0xecfb('0x26')],_0x53410c[_0xecfb('0x27')],_0x17b8a6,_0xde2fcd)['then'](respondWithFilteredResult(_0x38143d,_0x17b8a6))[_0xecfb('0x28')](handleError(_0x38143d,null));};exports[_0xecfb('0x29')]=function(_0x10579f,_0x526998){var _0x2b49c8={'raw':![],'where':{'id':_0x10579f[_0xecfb('0x2a')]['id']}},_0x4a7331={};_0x4a7331['model']=_['keys'](db[_0xecfb('0x2b')][_0xecfb('0x20')]);_0x4a7331[_0xecfb('0x26')]=_[_0xecfb('0x2c')](_0x10579f[_0xecfb('0x26')]);_0x4a7331[_0xecfb('0x2d')]=_[_0xecfb('0x2e')](_0x4a7331[_0xecfb('0x2f')],_0x4a7331['query']);_0x2b49c8[_0xecfb('0x30')]=_[_0xecfb('0x2e')](_0x4a7331[_0xecfb('0x2f')],qs['fields'](_0x10579f['query'][_0xecfb('0x31')]));_0x2b49c8[_0xecfb('0x30')]=_0x2b49c8['attributes'][_0xecfb('0x32')]?_0x2b49c8[_0xecfb('0x30')]:_0x4a7331[_0xecfb('0x2f')];if(_0x10579f['query']['includeAll']){_0x2b49c8['include']=[{'all':!![]}];}_0x2b49c8=_[_0xecfb('0x33')]({},_0x2b49c8,_0x10579f['options']);return db[_0xecfb('0x2b')][_0xecfb('0x34')](_0x2b49c8)[_0xecfb('0x17')](handleEntityNotFound(_0x526998,null))['then'](respondWithResult(_0x526998,null))[_0xecfb('0x28')](handleError(_0x526998,null));};exports[_0xecfb('0x35')]=function(_0x1c6bd6,_0x1476e3){return db[_0xecfb('0x2b')]['create'](_0x1c6bd6['body'],{})[_0xecfb('0x17')](respondWithResult(_0x1476e3,0xc9))[_0xecfb('0x28')](handleError(_0x1476e3,null));};exports['update']=function(_0x344f87,_0x1c37f0){if(_0x344f87[_0xecfb('0x36')]['id']){delete _0x344f87[_0xecfb('0x36')]['id'];}return db[_0xecfb('0x2b')][_0xecfb('0x34')]({'where':{'id':_0x344f87[_0xecfb('0x2a')]['id']}})[_0xecfb('0x17')](handleEntityNotFound(_0x1c37f0,null))[_0xecfb('0x17')](saveUpdates(_0x344f87[_0xecfb('0x36')],null))[_0xecfb('0x17')](respondWithResult(_0x1c37f0,null))[_0xecfb('0x28')](handleError(_0x1c37f0,null));};exports[_0xecfb('0x18')]=function(_0x439f52,_0x2239c2){return db[_0xecfb('0x2b')][_0xecfb('0x34')]({'where':{'id':_0x439f52[_0xecfb('0x2a')]['id']}})['then'](handleEntityNotFound(_0x2239c2,null))[_0xecfb('0x17')](removeEntity(_0x2239c2,null))[_0xecfb('0x28')](handleError(_0x2239c2,null));};exports[_0xecfb('0x37')]=function(_0xd8719c,_0x13e3a0){return db['FaxInteraction'][_0xecfb('0x37')]()[_0xecfb('0x17')](respondWithResult(_0x13e3a0,null))[_0xecfb('0x28')](handleError(_0x13e3a0,null));};exports['addMessage']=function(_0xd64a6,_0x173809){return db[_0xecfb('0x38')]['find']({'where':{'id':_0xd64a6[_0xecfb('0x2a')]['id']}})['then'](handleEntityNotFound(_0x173809,null))[_0xecfb('0x17')](function(_0x68b811){if(_0x68b811){return _0x68b811[_0xecfb('0x39')](_0xd64a6['body'][_0xecfb('0x3a')],_[_0xecfb('0x3b')](_0xd64a6[_0xecfb('0x36')],[_0xecfb('0x3a'),'id'])||{});}})[_0xecfb('0x17')](respondWithResult(_0x173809,null))['catch'](handleError(_0x173809,null));};exports[_0xecfb('0x3c')]=function(_0x251dd2,_0x5e54dc){var _0x1bad1a={'raw':![],'where':{}};var _0x1988a7={};var _0x5708ed={'count':0x0,'rows':[]};return db[_0xecfb('0x2b')][_0xecfb('0x3d')]({'where':{'id':_0x251dd2[_0xecfb('0x2a')]['id']}})[_0xecfb('0x17')](handleEntityNotFound(_0x5e54dc,null))[_0xecfb('0x17')](function(_0x53ff6d){if(_0x53ff6d){_0x1988a7['model']=_[_0xecfb('0x2c')](db['FaxMessage'][_0xecfb('0x20')]);_0x1988a7[_0xecfb('0x26')]=_['keys'](_0x251dd2['query']);_0x1988a7[_0xecfb('0x2d')]=_[_0xecfb('0x2e')](_0x1988a7['model'],_0x1988a7[_0xecfb('0x26')]);_0x1bad1a['attributes']=_[_0xecfb('0x2e')](_0x1988a7['model'],qs[_0xecfb('0x31')](_0x251dd2['query'][_0xecfb('0x31')]));_0x1bad1a[_0xecfb('0x30')]=_0x1bad1a['attributes']['length']?_0x1bad1a['attributes']:_0x1988a7[_0xecfb('0x2f')];if(!_0x251dd2['query'][_0xecfb('0x3e')](_0xecfb('0x3f'))){_0x1bad1a[_0xecfb('0x13')]=qs[_0xecfb('0x13')](_0x251dd2[_0xecfb('0x26')][_0xecfb('0x13')]);_0x1bad1a[_0xecfb('0x11')]=qs[_0xecfb('0x11')](_0x251dd2[_0xecfb('0x26')][_0xecfb('0x11')]);}_0x1bad1a[_0xecfb('0x40')]=qs[_0xecfb('0x41')](_0x251dd2['query']['sort']);_0x1bad1a['where']=qs[_0xecfb('0x2d')](_['pick'](_0x251dd2[_0xecfb('0x26')],_0x1988a7[_0xecfb('0x2d')]));_0x1bad1a[_0xecfb('0x42')][_0xecfb('0x43')]=_0x53ff6d['id'];if(_0x251dd2[_0xecfb('0x26')]['filter']){_0x1bad1a['where']=_['merge'](_0x1bad1a['where'],{'$or':_[_0xecfb('0x1f')](_0x1bad1a[_0xecfb('0x30')],function(_0x9dcbe6){var _0x59fc42={};_0x59fc42[_0x9dcbe6]={'$like':'%'+_0x251dd2[_0xecfb('0x26')][_0xecfb('0x44')]+'%'};return _0x59fc42;})});}if(_0x251dd2['query'][_0xecfb('0x45')]){var _0x135586=_0x251dd2[_0xecfb('0x26')][_0xecfb('0x45')][_0xecfb('0x46')](',');var _0x11642d={};_0x11642d[_0x135586[0x0]]={'$gte':moment(_0x135586[0x1])['format'](_0xecfb('0x47'))};_0x1bad1a[_0xecfb('0x42')]=_['merge'](_0x1bad1a['where'],_0x11642d);}_0x1bad1a=_['merge']({},_0x1bad1a,_0x251dd2[_0xecfb('0x48')]);return db[_0xecfb('0x38')][_0xecfb('0x14')]({'where':_0x1bad1a[_0xecfb('0x42')]})['then'](function(_0x5d8d36){_0x5708ed[_0xecfb('0x14')]=_0x5d8d36;if(_0x251dd2[_0xecfb('0x26')][_0xecfb('0x49')]){_0x1bad1a[_0xecfb('0x4a')]=[{'all':!![]}];}return db[_0xecfb('0x38')][_0xecfb('0x24')](_0x1bad1a);})[_0xecfb('0x17')](function(_0x11e7b6){_0x5708ed['rows']=_0x11e7b6;return _0x5708ed;});}})[_0xecfb('0x17')](respondWithFilteredResult(_0x5e54dc,_0x1bad1a))[_0xecfb('0x28')](handleError(_0x5e54dc,null));};exports[_0xecfb('0x4b')]=function(_0x4a1b91,_0x47daa0){return db[_0xecfb('0x2b')][_0xecfb('0x34')]({'where':{'id':_0x4a1b91['params']['id']}})['then'](handleEntityNotFound(_0x47daa0,null))['then'](function(_0x9555d5){if(_0x9555d5){return _0x9555d5[_0xecfb('0x4c')](_0x4a1b91[_0xecfb('0x36')][_0xecfb('0x3a')],_['omit'](_0x4a1b91['body'],[_0xecfb('0x3a'),'id'])||{})[_0xecfb('0x4d')](function(){return db[_0xecfb('0x4e')][_0xecfb('0x24')]({'attributes':['id','name',_0xecfb('0x4f')],'where':{'id':_0x4a1b91['body']['ids']}});})[_0xecfb('0x17')](function(_0x531555){socket['emit'](_0xecfb('0x50'),{'id':Number(_0x4a1b91[_0xecfb('0x2a')]['id']),'tags':_0x531555||[]});return{'id':Number(_0x4a1b91[_0xecfb('0x2a')]['id']),'tags':_0x531555||[]};});}})['then'](respondWithResult(_0x47daa0,null))['catch'](handleError(_0x47daa0,null));};exports['removeTags']=function(_0x4b1d33,_0x3913b1){return db[_0xecfb('0x2b')][_0xecfb('0x34')]({'where':{'id':_0x4b1d33[_0xecfb('0x2a')]['id']}})[_0xecfb('0x17')](handleEntityNotFound(_0x3913b1,null))[_0xecfb('0x17')](function(_0x303067){if(_0x303067){return _0x303067[_0xecfb('0x51')](_0x4b1d33['query'][_0xecfb('0x3a')]);}})[_0xecfb('0x17')](respondWithStatusCode(_0x3913b1,null))['catch'](handleError(_0x3913b1,null));};exports['download']=function(_0x431e54,_0x231dad){var _0x378d49=moment()['unix']()[_0xecfb('0x52')]();var _0x272271=path['join'](config['root'],'server','files',_0xecfb('0x53'));var _0x36bbc7=path[_0xecfb('0x54')](config[_0xecfb('0x55')],'server','files',_0xecfb('0x56'));var _0x48151c=path[_0xecfb('0x54')](_0x272271,_0x378d49);var _0x56085e=util[_0xecfb('0x57')](_0xecfb('0x58'),_0x431e54[_0xecfb('0x2a')]['id'],_0x378d49);var _0x19fbf8=path[_0xecfb('0x54')](_0x272271,_0x56085e);var _0x5f22ff=[];_0x5f22ff['push']({'model':db[_0xecfb('0x59')],'as':_0xecfb('0x59'),'raw':!![]});var _0x4e6c8d=[{'model':db[_0xecfb('0x38')],'as':_0xecfb('0x5a'),'attributes':['id',_0xecfb('0x36'),_0xecfb('0x5b')],'include':_0x5f22ff}];return db[_0xecfb('0x2b')][_0xecfb('0x34')]({'where':{'id':_0x431e54['params']['id']},'include':_0x4e6c8d})[_0xecfb('0x17')](handleEntityNotFound(_0x231dad,null))[_0xecfb('0x17')](function(_0x156972){if(_0x156972&&_0x156972[_0xecfb('0x5a')]){var _0x53f9f0=_0x156972['get']({'plain':!![]});fs[_0xecfb('0x5c')](_0x48151c);for(var _0x24209e=0x0;_0x24209e<_0x53f9f0['Messages'][_0xecfb('0x32')];_0x24209e++){var _0x2cd682=_0x53f9f0[_0xecfb('0x5a')][_0x24209e]['Attachment'];if(_0x2cd682){var _0x5ad9ae=path[_0xecfb('0x54')](_0x36bbc7,_0x2cd682['basename']);if(fs[_0xecfb('0x5d')](_0x5ad9ae)){fs['createReadStream'](_0x5ad9ae)['pipe'](fs[_0xecfb('0x5e')](path[_0xecfb('0x54')](_0x48151c,_0x2cd682[_0xecfb('0x5f')])));}}}return BPromise[_0xecfb('0x60')]()['then'](function(){return new BPromise(function(_0x86113c,_0xc847b2){zipdir(_0x48151c,{'saveTo':_0x19fbf8},function(_0x4b9ac4,_0xff5edb){if(_0x4b9ac4)return _0xc847b2(_0x4b9ac4);return _0x86113c(_0xff5edb);});})[_0xecfb('0x17')](function(){return new BPromise(function(_0x2bda52,_0x3eb426){rimraf(_0x48151c,function(_0x205c12){if(_0x205c12)_0x3eb426(_0x205c12);return _0x2bda52();});});})[_0xecfb('0x17')](function(){return _0x231dad[_0xecfb('0x61')](_0x19fbf8,_0x56085e,function(_0x58091c){if(_0x58091c){console[_0xecfb('0x62')](_0xecfb('0x63'),_0x58091c);}else{fs['unlinkSync'](_0x19fbf8);}});});});}else{return _0x231dad[_0xecfb('0x19')](0xc8);}})[_0xecfb('0x28')](handleError(_0x231dad,null));};