Built motion from commit f0b1811d.|2.6.6
[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 _0x8885=['fieldName','type','key','findAll','fax','user','catch','params','keys','query','model','attributes','intersection','fields','length','includeAll','include','merge','find','create','body','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','filters','FaxInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','rows','addTags','setTags','spread','color','emit','removeTags','unix','toString','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','download','err','rimraf','zip-dir','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','limit','count','offset','set','update','then','error','stack','name','send','map','FaxInteraction','rawAttributes'];(function(_0x39397a,_0x43fe11){var _0x4377ba=function(_0xa02798){while(--_0xa02798){_0x39397a['push'](_0x39397a['shift']());}};_0x4377ba(++_0x43fe11);}(_0x8885,0xad));var _0x5888=function(_0x535c39,_0xfcfe16){_0x535c39=_0x535c39-0x0;var _0x46b1f3=_0x8885[_0x535c39];return _0x46b1f3;};'use strict';var rimraf=require(_0x5888('0x0'));var zipdir=require(_0x5888('0x1'));var moment=require(_0x5888('0x2'));var BPromise=require(_0x5888('0x3'));var util=require('util');var path=require(_0x5888('0x4'));var fs=require('fs');var _=require(_0x5888('0x5'));var Redis=require(_0x5888('0x6'));var interaction=require(_0x5888('0x7'));var qs=require(_0x5888('0x8'));var logger=require('../../config/logger')('api');var config=require('../../config/environment');var db=require(_0x5888('0x9'))['db'];config[_0x5888('0xa')]=_[_0x5888('0xb')](config[_0x5888('0xa')],{'host':_0x5888('0xc'),'port':0x18eb});var socket=require(_0x5888('0xd'))(new Redis(config[_0x5888('0xa')]));require('./faxInteraction.socket')[_0x5888('0xe')](socket);function respondWithStatusCode(_0x233354,_0x4ec684){_0x4ec684=_0x4ec684||0xcc;return function(_0x1b2706){if(_0x1b2706){return _0x233354[_0x5888('0xf')](_0x4ec684);}return _0x233354[_0x5888('0x10')](_0x4ec684)[_0x5888('0x11')]();};}function respondWithResult(_0x18f571,_0x4a96cf){_0x4a96cf=_0x4a96cf||0xc8;return function(_0x14a896){if(_0x14a896){return _0x18f571['status'](_0x4a96cf)[_0x5888('0x12')](_0x14a896);}};}function respondWithFilteredResult(_0x56c656,_0x451cde){return function(_0x3d4a21){if(_0x3d4a21){var _0x8dc02c=typeof _0x451cde['offset']===_0x5888('0x13')&&typeof _0x451cde[_0x5888('0x14')]===_0x5888('0x13');var _0x3c6bbf=_0x3d4a21[_0x5888('0x15')];var _0x417933=_0x8dc02c?0x0:_0x451cde['offset'];var _0x25c87e=_0x8dc02c?_0x3d4a21[_0x5888('0x15')]:_0x451cde[_0x5888('0x16')]+_0x451cde[_0x5888('0x14')];var _0x42299e;if(_0x25c87e>=_0x3c6bbf){_0x25c87e=_0x3c6bbf;_0x42299e=0xc8;}else{_0x42299e=0xce;}_0x56c656[_0x5888('0x10')](_0x42299e);return _0x56c656[_0x5888('0x17')]('Content-Range',_0x417933+'-'+_0x25c87e+'/'+_0x3c6bbf)[_0x5888('0x12')](_0x3d4a21);}return null;};}function saveUpdates(_0x5167f4){return function(_0xd0f578){if(_0xd0f578){return _0xd0f578[_0x5888('0x18')](_0x5167f4)[_0x5888('0x19')](function(_0x3f54f9){return _0x3f54f9;});}return null;};}function removeEntity(_0x297986){return function(_0x1b8305){if(_0x1b8305){return _0x1b8305['destroy']()[_0x5888('0x19')](function(){_0x297986[_0x5888('0x10')](0xcc)[_0x5888('0x11')]();});}};}function handleEntityNotFound(_0x42f18b){return function(_0x397ed6){if(!_0x397ed6){_0x42f18b['sendStatus'](0x194);}return _0x397ed6;};}function handleError(_0x5ec7b6,_0x527974){_0x527974=_0x527974||0x1f4;return function(_0x562b89){logger[_0x5888('0x1a')](_0x562b89[_0x5888('0x1b')]);if(_0x562b89['name']){delete _0x562b89[_0x5888('0x1c')];}_0x5ec7b6['status'](_0x527974)[_0x5888('0x1d')](_0x562b89);};}exports['index']=function(_0x297cdd,_0x4f6b1f){var _0x470737={};var _0x315b5a=_[_0x5888('0x1e')](db[_0x5888('0x1f')][_0x5888('0x20')],function(_0x2b698c){return{'name':_0x2b698c[_0x5888('0x21')],'type':_0x2b698c[_0x5888('0x22')][_0x5888('0x23')]};});_0x470737=qs['getOptions'](_0x315b5a,_0x297cdd);return interaction[_0x5888('0x24')](_0x5888('0x25'),_0x297cdd['query'],_0x297cdd[_0x5888('0x26')],_0x470737,_0x315b5a)[_0x5888('0x19')](respondWithFilteredResult(_0x4f6b1f,_0x470737))[_0x5888('0x27')](handleError(_0x4f6b1f,null));};exports['show']=function(_0x3dbc18,_0x4735d6){var _0x120ce8={'raw':![],'where':{'id':_0x3dbc18[_0x5888('0x28')]['id']}},_0x378dc6={};_0x378dc6['model']=_['keys'](db['FaxInteraction'][_0x5888('0x20')]);_0x378dc6['query']=_[_0x5888('0x29')](_0x3dbc18[_0x5888('0x2a')]);_0x378dc6['filters']=_['intersection'](_0x378dc6[_0x5888('0x2b')],_0x378dc6[_0x5888('0x2a')]);_0x120ce8[_0x5888('0x2c')]=_[_0x5888('0x2d')](_0x378dc6['model'],qs[_0x5888('0x2e')](_0x3dbc18[_0x5888('0x2a')][_0x5888('0x2e')]));_0x120ce8['attributes']=_0x120ce8[_0x5888('0x2c')][_0x5888('0x2f')]?_0x120ce8['attributes']:_0x378dc6[_0x5888('0x2b')];if(_0x3dbc18[_0x5888('0x2a')][_0x5888('0x30')]){_0x120ce8[_0x5888('0x31')]=[{'all':!![]}];}_0x120ce8=_[_0x5888('0x32')]({},_0x120ce8,_0x3dbc18['options']);return db[_0x5888('0x1f')][_0x5888('0x33')](_0x120ce8)[_0x5888('0x19')](handleEntityNotFound(_0x4735d6,null))[_0x5888('0x19')](respondWithResult(_0x4735d6,null))[_0x5888('0x27')](handleError(_0x4735d6,null));};exports[_0x5888('0x34')]=function(_0x4a5e0c,_0x5f0404){return db[_0x5888('0x1f')][_0x5888('0x34')](_0x4a5e0c['body'],{})[_0x5888('0x19')](respondWithResult(_0x5f0404,0xc9))['catch'](handleError(_0x5f0404,null));};exports['update']=function(_0xf6166f,_0x1a0b39){if(_0xf6166f[_0x5888('0x35')]['id']){delete _0xf6166f[_0x5888('0x35')]['id'];}return db[_0x5888('0x1f')][_0x5888('0x33')]({'where':{'id':_0xf6166f['params']['id']}})['then'](handleEntityNotFound(_0x1a0b39,null))['then'](saveUpdates(_0xf6166f[_0x5888('0x35')],null))[_0x5888('0x19')](respondWithResult(_0x1a0b39,null))[_0x5888('0x27')](handleError(_0x1a0b39,null));};exports['destroy']=function(_0x489b40,_0x2c1ad5){return db[_0x5888('0x1f')]['find']({'where':{'id':_0x489b40['params']['id']}})[_0x5888('0x19')](handleEntityNotFound(_0x2c1ad5,null))[_0x5888('0x19')](removeEntity(_0x2c1ad5,null))[_0x5888('0x27')](handleError(_0x2c1ad5,null));};exports[_0x5888('0x36')]=function(_0x50055d,_0x5734df){return db[_0x5888('0x1f')]['describe']()['then'](respondWithResult(_0x5734df,null))[_0x5888('0x27')](handleError(_0x5734df,null));};exports[_0x5888('0x37')]=function(_0x2b8181,_0x50b833){return db[_0x5888('0x38')][_0x5888('0x33')]({'where':{'id':_0x2b8181[_0x5888('0x28')]['id']}})['then'](handleEntityNotFound(_0x50b833,null))[_0x5888('0x19')](function(_0x578987){if(_0x578987){return _0x578987[_0x5888('0x37')](_0x2b8181[_0x5888('0x35')][_0x5888('0x39')],_[_0x5888('0x3a')](_0x2b8181[_0x5888('0x35')],['ids','id'])||{});}})['then'](respondWithResult(_0x50b833,null))[_0x5888('0x27')](handleError(_0x50b833,null));};exports[_0x5888('0x3b')]=function(_0x31ecde,_0x2c241a){var _0x259300={'raw':![],'where':{}};var _0x3c2693={};var _0x2dec9e={'count':0x0,'rows':[]};return db[_0x5888('0x1f')][_0x5888('0x3c')]({'where':{'id':_0x31ecde[_0x5888('0x28')]['id']}})[_0x5888('0x19')](handleEntityNotFound(_0x2c241a,null))[_0x5888('0x19')](function(_0x52507d){if(_0x52507d){_0x3c2693[_0x5888('0x2b')]=_['keys'](db[_0x5888('0x38')][_0x5888('0x20')]);_0x3c2693[_0x5888('0x2a')]=_['keys'](_0x31ecde[_0x5888('0x2a')]);_0x3c2693['filters']=_[_0x5888('0x2d')](_0x3c2693[_0x5888('0x2b')],_0x3c2693['query']);_0x259300[_0x5888('0x2c')]=_[_0x5888('0x2d')](_0x3c2693[_0x5888('0x2b')],qs[_0x5888('0x2e')](_0x31ecde[_0x5888('0x2a')][_0x5888('0x2e')]));_0x259300[_0x5888('0x2c')]=_0x259300[_0x5888('0x2c')][_0x5888('0x2f')]?_0x259300[_0x5888('0x2c')]:_0x3c2693[_0x5888('0x2b')];if(!_0x31ecde[_0x5888('0x2a')][_0x5888('0x3d')](_0x5888('0x3e'))){_0x259300[_0x5888('0x14')]=qs[_0x5888('0x14')](_0x31ecde[_0x5888('0x2a')][_0x5888('0x14')]);_0x259300[_0x5888('0x16')]=qs[_0x5888('0x16')](_0x31ecde[_0x5888('0x2a')][_0x5888('0x16')]);}_0x259300[_0x5888('0x3f')]=qs['sort'](_0x31ecde['query'][_0x5888('0x40')]);_0x259300[_0x5888('0x41')]=qs[_0x5888('0x42')](_['pick'](_0x31ecde[_0x5888('0x2a')],_0x3c2693[_0x5888('0x42')]));_0x259300['where'][_0x5888('0x43')]=_0x52507d['id'];if(_0x31ecde[_0x5888('0x2a')][_0x5888('0x44')]){_0x259300['where']=_['merge'](_0x259300[_0x5888('0x41')],{'$or':_['map'](_0x259300[_0x5888('0x2c')],function(_0x24df96){var _0x59f10d={};_0x59f10d[_0x24df96]={'$like':'%'+_0x31ecde[_0x5888('0x2a')]['filter']+'%'};return _0x59f10d;})});}if(_0x31ecde[_0x5888('0x2a')][_0x5888('0x45')]){var _0x34a77b=_0x31ecde[_0x5888('0x2a')][_0x5888('0x45')][_0x5888('0x46')](',');var _0xa294e2={};_0xa294e2[_0x34a77b[0x0]]={'$gte':moment(_0x34a77b[0x1])['format'](_0x5888('0x47'))};_0x259300[_0x5888('0x41')]=_[_0x5888('0x32')](_0x259300['where'],_0xa294e2);}_0x259300=_['merge']({},_0x259300,_0x31ecde[_0x5888('0x48')]);return db['FaxMessage'][_0x5888('0x15')]({'where':_0x259300[_0x5888('0x41')]})['then'](function(_0x547198){_0x2dec9e[_0x5888('0x15')]=_0x547198;if(_0x31ecde[_0x5888('0x2a')]['includeAll']){_0x259300[_0x5888('0x31')]=[{'all':!![]}];}return db[_0x5888('0x38')][_0x5888('0x24')](_0x259300);})['then'](function(_0x5d1fcf){_0x2dec9e[_0x5888('0x49')]=_0x5d1fcf;return _0x2dec9e;});}})['then'](respondWithFilteredResult(_0x2c241a,_0x259300))['catch'](handleError(_0x2c241a,null));};exports[_0x5888('0x4a')]=function(_0x3dcce8,_0x53eaa7){return db[_0x5888('0x1f')][_0x5888('0x33')]({'where':{'id':_0x3dcce8[_0x5888('0x28')]['id']}})['then'](handleEntityNotFound(_0x53eaa7,null))[_0x5888('0x19')](function(_0x1cfeec){if(_0x1cfeec){return _0x1cfeec[_0x5888('0x4b')](_0x3dcce8[_0x5888('0x35')][_0x5888('0x39')],_[_0x5888('0x3a')](_0x3dcce8['body'],[_0x5888('0x39'),'id'])||{})[_0x5888('0x4c')](function(){return db['Tag'][_0x5888('0x24')]({'attributes':['id','name',_0x5888('0x4d')],'where':{'id':_0x3dcce8['body'][_0x5888('0x39')]}});})['then'](function(_0x52e0bd){socket[_0x5888('0x4e')]('faxInteractionTags:save',{'id':Number(_0x3dcce8['params']['id']),'tags':_0x52e0bd||[]});return{'id':Number(_0x3dcce8[_0x5888('0x28')]['id']),'tags':_0x52e0bd||[]};});}})[_0x5888('0x19')](respondWithResult(_0x53eaa7,null))[_0x5888('0x27')](handleError(_0x53eaa7,null));};exports[_0x5888('0x4f')]=function(_0x4c0e07,_0x3af76d){return db[_0x5888('0x1f')]['find']({'where':{'id':_0x4c0e07['params']['id']}})[_0x5888('0x19')](handleEntityNotFound(_0x3af76d,null))['then'](function(_0xe4b4d3){if(_0xe4b4d3){return _0xe4b4d3[_0x5888('0x4f')](_0x4c0e07[_0x5888('0x2a')][_0x5888('0x39')]);}})['then'](respondWithStatusCode(_0x3af76d,null))[_0x5888('0x27')](handleError(_0x3af76d,null));};exports['download']=function(_0x5173aa,_0x4f73ab){var _0x25c759=moment()[_0x5888('0x50')]()[_0x5888('0x51')]();var _0x26a863=path[_0x5888('0x52')](config[_0x5888('0x53')],_0x5888('0x54'),_0x5888('0x55'),_0x5888('0x56'));var _0x43c5f4=path[_0x5888('0x52')](config[_0x5888('0x53')],_0x5888('0x54'),_0x5888('0x55'),_0x5888('0x57'));var _0x105665=path['join'](_0x26a863,_0x25c759);var _0x164684=util[_0x5888('0x58')](_0x5888('0x59'),_0x5173aa['params']['id'],_0x25c759);var _0x4fd84b=path[_0x5888('0x52')](_0x26a863,_0x164684);var _0x2b986e=[];_0x2b986e[_0x5888('0x5a')]({'model':db[_0x5888('0x5b')],'as':_0x5888('0x5b'),'raw':!![]});var _0x4a14d7=[{'model':db[_0x5888('0x38')],'as':_0x5888('0x5c'),'attributes':['id',_0x5888('0x35'),_0x5888('0x5d')],'include':_0x2b986e}];return db['FaxInteraction'][_0x5888('0x33')]({'where':{'id':_0x5173aa[_0x5888('0x28')]['id']},'include':_0x4a14d7})[_0x5888('0x19')](handleEntityNotFound(_0x4f73ab,null))['then'](function(_0x3c83ea){if(_0x3c83ea&&_0x3c83ea['Messages']){var _0x197396=_0x3c83ea[_0x5888('0x5e')]({'plain':!![]});fs['mkdirSync'](_0x105665);for(var _0x5665d4=0x0;_0x5665d4<_0x197396[_0x5888('0x5c')][_0x5888('0x2f')];_0x5665d4++){var _0xdf1122=_0x197396[_0x5888('0x5c')][_0x5665d4][_0x5888('0x5b')];if(_0xdf1122){var _0x217d62=path[_0x5888('0x52')](_0x43c5f4,_0xdf1122[_0x5888('0x5f')]);if(fs[_0x5888('0x60')](_0x217d62)){fs[_0x5888('0x61')](_0x217d62)[_0x5888('0x62')](fs[_0x5888('0x63')](path['join'](_0x105665,_0xdf1122[_0x5888('0x5f')])));}}}return BPromise[_0x5888('0x64')]()[_0x5888('0x19')](function(){return new BPromise(function(_0x4b37ad,_0x5de855){zipdir(_0x105665,{'saveTo':_0x4fd84b},function(_0x59a120,_0x485e86){if(_0x59a120)return _0x5de855(_0x59a120);return _0x4b37ad(_0x485e86);});})[_0x5888('0x19')](function(){return new BPromise(function(_0x27f58e,_0x544c9a){rimraf(_0x105665,function(_0x4af43d){if(_0x4af43d)_0x544c9a(_0x4af43d);return _0x27f58e();});});})['then'](function(){return _0x4f73ab[_0x5888('0x65')](_0x4fd84b,_0x164684,function(_0x741a25){if(_0x741a25){console['log'](_0x5888('0x66'),_0x741a25);}else{fs['unlinkSync'](_0x4fd84b);}});});});}else{return _0x4f73ab[_0x5888('0xf')](0xc8);}})['catch'](handleError(_0x4f73ab,null));};