450991c61816581b63e8c5033b2fd4cfe15bd378
[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 _0x4b43=['join','server','tmp','files','attachments','transcript-%d-%s.zip','push','Messages','createdAt','get','basename','pipe','createWriteStream','resolve','err','unlinkSync','sendStatus','rimraf','zip-dir','moment','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','status','end','json','limit','offset','count','set','Content-Range','then','destroy','error','stack','name','index','map','FaxInteraction','rawAttributes','key','getOptions','fax','query','user','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','catch','update','describe','addMessage','ids','omit','getMessages','findOne','FaxMessage','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','spread','Tag','color','emit','faxInteractionTags:save','download','unix'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4b43,0x140));var _0x34b4=function(_0xbcd694,_0x48a003){_0xbcd694=_0xbcd694-0x0;var _0x342528=_0x4b43[_0xbcd694];return _0x342528;};'use strict';var rimraf=require(_0x34b4('0x0'));var zipdir=require(_0x34b4('0x1'));var moment=require(_0x34b4('0x2'));var BPromise=require('bluebird');var util=require(_0x34b4('0x3'));var path=require(_0x34b4('0x4'));var fs=require('fs');var _=require(_0x34b4('0x5'));var Redis=require(_0x34b4('0x6'));var interaction=require(_0x34b4('0x7'));var qs=require(_0x34b4('0x8'));var logger=require('../../config/logger')(_0x34b4('0x9'));var config=require(_0x34b4('0xa'));var db=require(_0x34b4('0xb'))['db'];config[_0x34b4('0xc')]=_['defaults'](config[_0x34b4('0xc')],{'host':_0x34b4('0xd'),'port':0x18eb});var socket=require(_0x34b4('0xe'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0x34b4('0xf')](socket);function respondWithStatusCode(_0x1c68d1,_0x2bd357){_0x2bd357=_0x2bd357||0xcc;return function(_0x2ee152){if(_0x2ee152){return _0x1c68d1['sendStatus'](_0x2bd357);}return _0x1c68d1[_0x34b4('0x10')](_0x2bd357)[_0x34b4('0x11')]();};}function respondWithResult(_0x8aa852,_0x521efc){_0x521efc=_0x521efc||0xc8;return function(_0x334bca){if(_0x334bca){return _0x8aa852['status'](_0x521efc)[_0x34b4('0x12')](_0x334bca);}};}function respondWithFilteredResult(_0x1e1ef5,_0x10fdf7){return function(_0x9d4c39){if(_0x9d4c39){var _0x20ea41=typeof _0x10fdf7['offset']==='undefined'&&typeof _0x10fdf7[_0x34b4('0x13')]==='undefined';var _0x18a25e=_0x9d4c39['count'];var _0x57ba60=_0x20ea41?0x0:_0x10fdf7[_0x34b4('0x14')];var _0x40077e=_0x20ea41?_0x9d4c39[_0x34b4('0x15')]:_0x10fdf7['offset']+_0x10fdf7[_0x34b4('0x13')];var _0x9c3ea3;if(_0x40077e>=_0x18a25e){_0x40077e=_0x18a25e;_0x9c3ea3=0xc8;}else{_0x9c3ea3=0xce;}_0x1e1ef5[_0x34b4('0x10')](_0x9c3ea3);return _0x1e1ef5[_0x34b4('0x16')](_0x34b4('0x17'),_0x57ba60+'-'+_0x40077e+'/'+_0x18a25e)[_0x34b4('0x12')](_0x9d4c39);}return null;};}function saveUpdates(_0x58fcf1){return function(_0x457e51){if(_0x457e51){return _0x457e51['update'](_0x58fcf1)[_0x34b4('0x18')](function(_0x3891dd){return _0x3891dd;});}return null;};}function removeEntity(_0x56f20f){return function(_0x55deec){if(_0x55deec){return _0x55deec[_0x34b4('0x19')]()[_0x34b4('0x18')](function(){_0x56f20f['status'](0xcc)[_0x34b4('0x11')]();});}};}function handleEntityNotFound(_0x23232d){return function(_0x3d63a4){if(!_0x3d63a4){_0x23232d['sendStatus'](0x194);}return _0x3d63a4;};}function handleError(_0x4aa479,_0x11344c){_0x11344c=_0x11344c||0x1f4;return function(_0x32bd10){logger[_0x34b4('0x1a')](_0x32bd10[_0x34b4('0x1b')]);if(_0x32bd10[_0x34b4('0x1c')]){delete _0x32bd10[_0x34b4('0x1c')];}_0x4aa479['status'](_0x11344c)['send'](_0x32bd10);};}exports[_0x34b4('0x1d')]=function(_0x5e405b,_0x31d681){var _0x4769cb={};var _0x44869d=_[_0x34b4('0x1e')](db[_0x34b4('0x1f')][_0x34b4('0x20')],function(_0x127b07){return{'name':_0x127b07['fieldName'],'type':_0x127b07['type'][_0x34b4('0x21')]};});_0x4769cb=qs[_0x34b4('0x22')](_0x44869d,_0x5e405b);return interaction['findAll'](_0x34b4('0x23'),_0x5e405b[_0x34b4('0x24')],_0x5e405b[_0x34b4('0x25')],_0x4769cb,_0x44869d)[_0x34b4('0x18')](respondWithFilteredResult(_0x31d681,_0x4769cb))['catch'](handleError(_0x31d681,null));};exports[_0x34b4('0x26')]=function(_0x22542f,_0x5277fd){var _0x3a8b1a={'raw':![],'where':{'id':_0x22542f[_0x34b4('0x27')]['id']}},_0x8932bb={};_0x8932bb[_0x34b4('0x28')]=_[_0x34b4('0x29')](db[_0x34b4('0x1f')]['rawAttributes']);_0x8932bb[_0x34b4('0x24')]=_[_0x34b4('0x29')](_0x22542f[_0x34b4('0x24')]);_0x8932bb[_0x34b4('0x2a')]=_[_0x34b4('0x2b')](_0x8932bb[_0x34b4('0x28')],_0x8932bb[_0x34b4('0x24')]);_0x3a8b1a[_0x34b4('0x2c')]=_[_0x34b4('0x2b')](_0x8932bb[_0x34b4('0x28')],qs[_0x34b4('0x2d')](_0x22542f[_0x34b4('0x24')]['fields']));_0x3a8b1a[_0x34b4('0x2c')]=_0x3a8b1a[_0x34b4('0x2c')][_0x34b4('0x2e')]?_0x3a8b1a['attributes']:_0x8932bb['model'];if(_0x22542f[_0x34b4('0x24')][_0x34b4('0x2f')]){_0x3a8b1a[_0x34b4('0x30')]=[{'all':!![]}];}_0x3a8b1a=_[_0x34b4('0x31')]({},_0x3a8b1a,_0x22542f[_0x34b4('0x32')]);return db[_0x34b4('0x1f')][_0x34b4('0x33')](_0x3a8b1a)[_0x34b4('0x18')](handleEntityNotFound(_0x5277fd,null))[_0x34b4('0x18')](respondWithResult(_0x5277fd,null))['catch'](handleError(_0x5277fd,null));};exports[_0x34b4('0x34')]=function(_0x58595c,_0x5f0f08){return db[_0x34b4('0x1f')][_0x34b4('0x34')](_0x58595c[_0x34b4('0x35')],{})['then'](respondWithResult(_0x5f0f08,0xc9))[_0x34b4('0x36')](handleError(_0x5f0f08,null));};exports[_0x34b4('0x37')]=function(_0x40132a,_0x258fdf){if(_0x40132a[_0x34b4('0x35')]['id']){delete _0x40132a[_0x34b4('0x35')]['id'];}return db[_0x34b4('0x1f')][_0x34b4('0x33')]({'where':{'id':_0x40132a[_0x34b4('0x27')]['id']}})['then'](handleEntityNotFound(_0x258fdf,null))[_0x34b4('0x18')](saveUpdates(_0x40132a['body'],null))['then'](respondWithResult(_0x258fdf,null))[_0x34b4('0x36')](handleError(_0x258fdf,null));};exports[_0x34b4('0x19')]=function(_0x2bedb4,_0x28302b){return db[_0x34b4('0x1f')]['find']({'where':{'id':_0x2bedb4[_0x34b4('0x27')]['id']}})['then'](handleEntityNotFound(_0x28302b,null))[_0x34b4('0x18')](removeEntity(_0x28302b,null))[_0x34b4('0x36')](handleError(_0x28302b,null));};exports[_0x34b4('0x38')]=function(_0x49f8af,_0x3e75c9){return db[_0x34b4('0x1f')][_0x34b4('0x38')]()['then'](respondWithResult(_0x3e75c9,null))[_0x34b4('0x36')](handleError(_0x3e75c9,null));};exports[_0x34b4('0x39')]=function(_0x50eeb8,_0x13157f){return db['FaxMessage'][_0x34b4('0x33')]({'where':{'id':_0x50eeb8[_0x34b4('0x27')]['id']}})[_0x34b4('0x18')](handleEntityNotFound(_0x13157f,null))[_0x34b4('0x18')](function(_0xc60498){if(_0xc60498){return _0xc60498[_0x34b4('0x39')](_0x50eeb8[_0x34b4('0x35')][_0x34b4('0x3a')],_[_0x34b4('0x3b')](_0x50eeb8[_0x34b4('0x35')],[_0x34b4('0x3a'),'id'])||{});}})[_0x34b4('0x18')](respondWithResult(_0x13157f,null))[_0x34b4('0x36')](handleError(_0x13157f,null));};exports[_0x34b4('0x3c')]=function(_0x53c8a8,_0x3cb340){var _0x538773={'raw':![],'where':{}};var _0x326a5f={};var _0x50d1be={'count':0x0,'rows':[]};return db['FaxInteraction'][_0x34b4('0x3d')]({'where':{'id':_0x53c8a8[_0x34b4('0x27')]['id']}})['then'](handleEntityNotFound(_0x3cb340,null))[_0x34b4('0x18')](function(_0x58ff21){if(_0x58ff21){_0x326a5f[_0x34b4('0x28')]=_[_0x34b4('0x29')](db[_0x34b4('0x3e')][_0x34b4('0x20')]);_0x326a5f['query']=_['keys'](_0x53c8a8['query']);_0x326a5f[_0x34b4('0x2a')]=_[_0x34b4('0x2b')](_0x326a5f['model'],_0x326a5f['query']);_0x538773['attributes']=_[_0x34b4('0x2b')](_0x326a5f['model'],qs['fields'](_0x53c8a8[_0x34b4('0x24')]['fields']));_0x538773[_0x34b4('0x2c')]=_0x538773[_0x34b4('0x2c')][_0x34b4('0x2e')]?_0x538773[_0x34b4('0x2c')]:_0x326a5f['model'];if(!_0x53c8a8[_0x34b4('0x24')]['hasOwnProperty'](_0x34b4('0x3f'))){_0x538773[_0x34b4('0x13')]=qs['limit'](_0x53c8a8[_0x34b4('0x24')][_0x34b4('0x13')]);_0x538773[_0x34b4('0x14')]=qs[_0x34b4('0x14')](_0x53c8a8[_0x34b4('0x24')][_0x34b4('0x14')]);}_0x538773[_0x34b4('0x40')]=qs['sort'](_0x53c8a8['query'][_0x34b4('0x41')]);_0x538773[_0x34b4('0x42')]=qs[_0x34b4('0x2a')](_[_0x34b4('0x43')](_0x53c8a8['query'],_0x326a5f[_0x34b4('0x2a')]));_0x538773[_0x34b4('0x42')][_0x34b4('0x44')]=_0x58ff21['id'];if(_0x53c8a8['query'][_0x34b4('0x45')]){_0x538773[_0x34b4('0x42')]=_[_0x34b4('0x31')](_0x538773['where'],{'$or':_[_0x34b4('0x1e')](_0x538773[_0x34b4('0x2c')],function(_0x5b1770){var _0x1bdc2b={};_0x1bdc2b[_0x5b1770]={'$like':'%'+_0x53c8a8[_0x34b4('0x24')][_0x34b4('0x45')]+'%'};return _0x1bdc2b;})});}if(_0x53c8a8['query'][_0x34b4('0x46')]){var _0x33b92b=_0x53c8a8['query'][_0x34b4('0x46')][_0x34b4('0x47')](',');var _0x5d1132={};_0x5d1132[_0x33b92b[0x0]]={'$gte':moment(_0x33b92b[0x1])[_0x34b4('0x48')](_0x34b4('0x49'))};_0x538773['where']=_[_0x34b4('0x31')](_0x538773[_0x34b4('0x42')],_0x5d1132);}_0x538773=_['merge']({},_0x538773,_0x53c8a8[_0x34b4('0x32')]);return db['FaxMessage']['count']({'where':_0x538773[_0x34b4('0x42')]})[_0x34b4('0x18')](function(_0x1c349c){_0x50d1be[_0x34b4('0x15')]=_0x1c349c;if(_0x53c8a8['query'][_0x34b4('0x2f')]){_0x538773[_0x34b4('0x30')]=[{'all':!![]}];}return db['FaxMessage'][_0x34b4('0x4a')](_0x538773);})[_0x34b4('0x18')](function(_0xee98fb){_0x50d1be[_0x34b4('0x4b')]=_0xee98fb;return _0x50d1be;});}})[_0x34b4('0x18')](respondWithFilteredResult(_0x3cb340,_0x538773))[_0x34b4('0x36')](handleError(_0x3cb340,null));};exports[_0x34b4('0x4c')]=function(_0x4d5739,_0x1f3979){return db[_0x34b4('0x1f')][_0x34b4('0x33')]({'where':{'id':_0x4d5739[_0x34b4('0x27')]['id']}})[_0x34b4('0x18')](handleEntityNotFound(_0x1f3979,null))[_0x34b4('0x18')](function(_0x99ae50){if(_0x99ae50){return _0x99ae50['setTags'](_0x4d5739['body'][_0x34b4('0x3a')],_[_0x34b4('0x3b')](_0x4d5739[_0x34b4('0x35')],['ids','id'])||{})[_0x34b4('0x4d')](function(){return db[_0x34b4('0x4e')][_0x34b4('0x4a')]({'attributes':['id','name',_0x34b4('0x4f')],'where':{'id':_0x4d5739[_0x34b4('0x35')][_0x34b4('0x3a')]}});})[_0x34b4('0x18')](function(_0x2c7c62){socket[_0x34b4('0x50')](_0x34b4('0x51'),{'id':Number(_0x4d5739[_0x34b4('0x27')]['id']),'tags':_0x2c7c62||[]});return{'id':Number(_0x4d5739['params']['id']),'tags':_0x2c7c62||[]};});}})['then'](respondWithResult(_0x1f3979,null))[_0x34b4('0x36')](handleError(_0x1f3979,null));};exports['removeTags']=function(_0x76f34f,_0x38dfcc){return db[_0x34b4('0x1f')][_0x34b4('0x33')]({'where':{'id':_0x76f34f[_0x34b4('0x27')]['id']}})[_0x34b4('0x18')](handleEntityNotFound(_0x38dfcc,null))[_0x34b4('0x18')](function(_0x49b4e3){if(_0x49b4e3){return _0x49b4e3['removeTags'](_0x76f34f[_0x34b4('0x24')][_0x34b4('0x3a')]);}})[_0x34b4('0x18')](respondWithStatusCode(_0x38dfcc,null))['catch'](handleError(_0x38dfcc,null));};exports[_0x34b4('0x52')]=function(_0x4015aa,_0x52fc17){var _0x5a1d7d=moment()[_0x34b4('0x53')]()['toString']();var _0x54b610=path[_0x34b4('0x54')](config['root'],_0x34b4('0x55'),'files',_0x34b4('0x56'));var _0x44313f=path[_0x34b4('0x54')](config['root'],_0x34b4('0x55'),_0x34b4('0x57'),_0x34b4('0x58'));var _0x3ef13b=path[_0x34b4('0x54')](_0x54b610,_0x5a1d7d);var _0x572495=util['format'](_0x34b4('0x59'),_0x4015aa[_0x34b4('0x27')]['id'],_0x5a1d7d);var _0x4b1fc8=path[_0x34b4('0x54')](_0x54b610,_0x572495);var _0x2c734b=[];_0x2c734b[_0x34b4('0x5a')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});var _0x5db907=[{'model':db[_0x34b4('0x3e')],'as':_0x34b4('0x5b'),'attributes':['id',_0x34b4('0x35'),_0x34b4('0x5c')],'include':_0x2c734b}];return db[_0x34b4('0x1f')][_0x34b4('0x33')]({'where':{'id':_0x4015aa[_0x34b4('0x27')]['id']},'include':_0x5db907})[_0x34b4('0x18')](handleEntityNotFound(_0x52fc17,null))['then'](function(_0x429c5a){if(_0x429c5a&&_0x429c5a[_0x34b4('0x5b')]){var _0x5d6a17=_0x429c5a[_0x34b4('0x5d')]({'plain':!![]});fs['mkdirSync'](_0x3ef13b);for(var _0x1d9e01=0x0;_0x1d9e01<_0x5d6a17['Messages']['length'];_0x1d9e01++){var _0x30e08e=_0x5d6a17[_0x34b4('0x5b')][_0x1d9e01]['Attachment'];if(_0x30e08e){var _0x3f9512=path[_0x34b4('0x54')](_0x44313f,_0x30e08e[_0x34b4('0x5e')]);if(fs['existsSync'](_0x3f9512)){fs['createReadStream'](_0x3f9512)[_0x34b4('0x5f')](fs[_0x34b4('0x60')](path[_0x34b4('0x54')](_0x3ef13b,_0x30e08e[_0x34b4('0x5e')])));}}}return BPromise[_0x34b4('0x61')]()[_0x34b4('0x18')](function(){return new BPromise(function(_0x4b63af,_0x1b4fa2){zipdir(_0x3ef13b,{'saveTo':_0x4b1fc8},function(_0x203f03,_0x5df3bc){if(_0x203f03)return _0x1b4fa2(_0x203f03);return _0x4b63af(_0x5df3bc);});})[_0x34b4('0x18')](function(){return new BPromise(function(_0x12968a,_0x53ec8d){rimraf(_0x3ef13b,function(_0xd06e15){if(_0xd06e15)_0x53ec8d(_0xd06e15);return _0x12968a();});});})['then'](function(){return _0x52fc17[_0x34b4('0x52')](_0x4b1fc8,_0x572495,function(_0x21c61c){if(_0x21c61c){console['log'](_0x34b4('0x62'),_0x21c61c);}else{fs[_0x34b4('0x63')](_0x4b1fc8);}});});});}else{return _0x52fc17[_0x34b4('0x64')](0xc8);}})[_0x34b4('0x36')](handleError(_0x52fc17,null));};