37e7cdc992f7bf36d590b2bee27fc2e0a6e8c001
[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 _0xfe75=['toString','root','files','tmp','join','server','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','pipe','createWriteStream','err','unlinkSync','rimraf','moment','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','update','then','destroy','error','name','send','rawAttributes','fieldName','type','key','getOptions','findAll','query','user','catch','model','keys','FaxInteraction','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','params','describe','addMessage','ids','omit','getMessages','findOne','FaxMessage','nolimit','limit','order','sort','where','pick','FaxInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','emit','removeTags','unix'];(function(_0x1aec02,_0x3a7f22){var _0x10a837=function(_0x42641b){while(--_0x42641b){_0x1aec02['push'](_0x1aec02['shift']());}};_0x10a837(++_0x3a7f22);}(_0xfe75,0x138));var _0x5fe7=function(_0x3f06da,_0x2767c3){_0x3f06da=_0x3f06da-0x0;var _0x338c5a=_0xfe75[_0x3f06da];return _0x338c5a;};'use strict';var rimraf=require(_0x5fe7('0x0'));var zipdir=require('zip-dir');var moment=require(_0x5fe7('0x1'));var BPromise=require('bluebird');var util=require(_0x5fe7('0x2'));var path=require(_0x5fe7('0x3'));var fs=require('fs');var _=require(_0x5fe7('0x4'));var Redis=require(_0x5fe7('0x5'));var interaction=require(_0x5fe7('0x6'));var qs=require(_0x5fe7('0x7'));var logger=require('../../config/logger')(_0x5fe7('0x8'));var config=require('../../config/environment');var db=require(_0x5fe7('0x9'))['db'];config['redis']=_[_0x5fe7('0xa')](config[_0x5fe7('0xb')],{'host':_0x5fe7('0xc'),'port':0x18eb});var socket=require(_0x5fe7('0xd'))(new Redis(config[_0x5fe7('0xb')]));require(_0x5fe7('0xe'))['register'](socket);function respondWithStatusCode(_0x493471,_0x1f9d1d){_0x1f9d1d=_0x1f9d1d||0xcc;return function(_0x3ea6f5){if(_0x3ea6f5){return _0x493471[_0x5fe7('0xf')](_0x1f9d1d);}return _0x493471[_0x5fe7('0x10')](_0x1f9d1d)[_0x5fe7('0x11')]();};}function respondWithResult(_0x28fb04,_0x3435d5){_0x3435d5=_0x3435d5||0xc8;return function(_0x2f09ae){if(_0x2f09ae){return _0x28fb04[_0x5fe7('0x10')](_0x3435d5)[_0x5fe7('0x12')](_0x2f09ae);}};}function respondWithFilteredResult(_0x48ce1a,_0x5c320a){return function(_0x53e39f){if(_0x53e39f){var _0xbe74da=typeof _0x5c320a[_0x5fe7('0x13')]===_0x5fe7('0x14')&&typeof _0x5c320a['limit']==='undefined';var _0x21f1b8=_0x53e39f[_0x5fe7('0x15')];var _0x1d9512=_0xbe74da?0x0:_0x5c320a[_0x5fe7('0x13')];var _0x2430c4=_0xbe74da?_0x53e39f[_0x5fe7('0x15')]:_0x5c320a[_0x5fe7('0x13')]+_0x5c320a['limit'];var _0x46c988;if(_0x2430c4>=_0x21f1b8){_0x2430c4=_0x21f1b8;_0x46c988=0xc8;}else{_0x46c988=0xce;}_0x48ce1a['status'](_0x46c988);return _0x48ce1a[_0x5fe7('0x16')](_0x5fe7('0x17'),_0x1d9512+'-'+_0x2430c4+'/'+_0x21f1b8)[_0x5fe7('0x12')](_0x53e39f);}return null;};}function saveUpdates(_0x4b2cdc){return function(_0x5f1ffc){if(_0x5f1ffc){return _0x5f1ffc[_0x5fe7('0x18')](_0x4b2cdc)[_0x5fe7('0x19')](function(_0x59b43e){return _0x59b43e;});}return null;};}function removeEntity(_0x51dfcb){return function(_0x3bd29f){if(_0x3bd29f){return _0x3bd29f[_0x5fe7('0x1a')]()[_0x5fe7('0x19')](function(){_0x51dfcb[_0x5fe7('0x10')](0xcc)[_0x5fe7('0x11')]();});}};}function handleEntityNotFound(_0x1fab85){return function(_0x500528){if(!_0x500528){_0x1fab85[_0x5fe7('0xf')](0x194);}return _0x500528;};}function handleError(_0x4c8f89,_0x54ed31){_0x54ed31=_0x54ed31||0x1f4;return function(_0x58a3f7){logger[_0x5fe7('0x1b')](_0x58a3f7['stack']);if(_0x58a3f7[_0x5fe7('0x1c')]){delete _0x58a3f7[_0x5fe7('0x1c')];}_0x4c8f89[_0x5fe7('0x10')](_0x54ed31)[_0x5fe7('0x1d')](_0x58a3f7);};}exports['index']=function(_0x574405,_0xb0e605){var _0x58c2a7={};var _0x58250d=_['map'](db['FaxInteraction'][_0x5fe7('0x1e')],function(_0x2d5cbb){return{'name':_0x2d5cbb[_0x5fe7('0x1f')],'type':_0x2d5cbb[_0x5fe7('0x20')][_0x5fe7('0x21')]};});_0x58c2a7=qs[_0x5fe7('0x22')](_0x58250d,_0x574405);return interaction[_0x5fe7('0x23')]('fax',_0x574405[_0x5fe7('0x24')],_0x574405[_0x5fe7('0x25')],_0x58c2a7,_0x58250d)[_0x5fe7('0x19')](respondWithFilteredResult(_0xb0e605,_0x58c2a7))[_0x5fe7('0x26')](handleError(_0xb0e605,null));};exports['show']=function(_0x7cf3fa,_0x4795d6){var _0x1c69ef={'raw':![],'where':{'id':_0x7cf3fa['params']['id']}},_0x20ecae={};_0x20ecae[_0x5fe7('0x27')]=_[_0x5fe7('0x28')](db[_0x5fe7('0x29')][_0x5fe7('0x1e')]);_0x20ecae[_0x5fe7('0x24')]=_[_0x5fe7('0x28')](_0x7cf3fa['query']);_0x20ecae[_0x5fe7('0x2a')]=_[_0x5fe7('0x2b')](_0x20ecae[_0x5fe7('0x27')],_0x20ecae[_0x5fe7('0x24')]);_0x1c69ef[_0x5fe7('0x2c')]=_['intersection'](_0x20ecae[_0x5fe7('0x27')],qs[_0x5fe7('0x2d')](_0x7cf3fa[_0x5fe7('0x24')][_0x5fe7('0x2d')]));_0x1c69ef[_0x5fe7('0x2c')]=_0x1c69ef[_0x5fe7('0x2c')][_0x5fe7('0x2e')]?_0x1c69ef[_0x5fe7('0x2c')]:_0x20ecae[_0x5fe7('0x27')];if(_0x7cf3fa[_0x5fe7('0x24')][_0x5fe7('0x2f')]){_0x1c69ef[_0x5fe7('0x30')]=[{'all':!![]}];}_0x1c69ef=_[_0x5fe7('0x31')]({},_0x1c69ef,_0x7cf3fa[_0x5fe7('0x32')]);return db[_0x5fe7('0x29')][_0x5fe7('0x33')](_0x1c69ef)['then'](handleEntityNotFound(_0x4795d6,null))[_0x5fe7('0x19')](respondWithResult(_0x4795d6,null))['catch'](handleError(_0x4795d6,null));};exports['create']=function(_0x1bd4e2,_0x14d03e){return db[_0x5fe7('0x29')][_0x5fe7('0x34')](_0x1bd4e2[_0x5fe7('0x35')],{})['then'](respondWithResult(_0x14d03e,0xc9))[_0x5fe7('0x26')](handleError(_0x14d03e,null));};exports['update']=function(_0x5a30ec,_0x3110e7){if(_0x5a30ec[_0x5fe7('0x35')]['id']){delete _0x5a30ec[_0x5fe7('0x35')]['id'];}return db[_0x5fe7('0x29')][_0x5fe7('0x33')]({'where':{'id':_0x5a30ec[_0x5fe7('0x36')]['id']}})[_0x5fe7('0x19')](handleEntityNotFound(_0x3110e7,null))[_0x5fe7('0x19')](saveUpdates(_0x5a30ec[_0x5fe7('0x35')],null))[_0x5fe7('0x19')](respondWithResult(_0x3110e7,null))[_0x5fe7('0x26')](handleError(_0x3110e7,null));};exports[_0x5fe7('0x1a')]=function(_0x3f4779,_0x35a1c7){return db[_0x5fe7('0x29')][_0x5fe7('0x33')]({'where':{'id':_0x3f4779[_0x5fe7('0x36')]['id']}})[_0x5fe7('0x19')](handleEntityNotFound(_0x35a1c7,null))[_0x5fe7('0x19')](removeEntity(_0x35a1c7,null))[_0x5fe7('0x26')](handleError(_0x35a1c7,null));};exports[_0x5fe7('0x37')]=function(_0xdf0dd3,_0x1b6f49){return db['FaxInteraction'][_0x5fe7('0x37')]()[_0x5fe7('0x19')](respondWithResult(_0x1b6f49,null))['catch'](handleError(_0x1b6f49,null));};exports['addMessage']=function(_0x59d37f,_0x4211db){return db['FaxMessage'][_0x5fe7('0x33')]({'where':{'id':_0x59d37f[_0x5fe7('0x36')]['id']}})[_0x5fe7('0x19')](handleEntityNotFound(_0x4211db,null))[_0x5fe7('0x19')](function(_0x5e098d){if(_0x5e098d){return _0x5e098d[_0x5fe7('0x38')](_0x59d37f[_0x5fe7('0x35')][_0x5fe7('0x39')],_[_0x5fe7('0x3a')](_0x59d37f[_0x5fe7('0x35')],['ids','id'])||{});}})[_0x5fe7('0x19')](respondWithResult(_0x4211db,null))[_0x5fe7('0x26')](handleError(_0x4211db,null));};exports[_0x5fe7('0x3b')]=function(_0x20f1a4,_0x18c157){var _0x475ed0={'raw':![],'where':{}};var _0x39fd0d={};var _0x8d46af={'count':0x0,'rows':[]};return db[_0x5fe7('0x29')][_0x5fe7('0x3c')]({'where':{'id':_0x20f1a4[_0x5fe7('0x36')]['id']}})[_0x5fe7('0x19')](handleEntityNotFound(_0x18c157,null))['then'](function(_0xebd326){if(_0xebd326){_0x39fd0d['model']=_[_0x5fe7('0x28')](db[_0x5fe7('0x3d')]['rawAttributes']);_0x39fd0d[_0x5fe7('0x24')]=_['keys'](_0x20f1a4[_0x5fe7('0x24')]);_0x39fd0d[_0x5fe7('0x2a')]=_[_0x5fe7('0x2b')](_0x39fd0d[_0x5fe7('0x27')],_0x39fd0d[_0x5fe7('0x24')]);_0x475ed0['attributes']=_['intersection'](_0x39fd0d[_0x5fe7('0x27')],qs['fields'](_0x20f1a4['query'][_0x5fe7('0x2d')]));_0x475ed0[_0x5fe7('0x2c')]=_0x475ed0[_0x5fe7('0x2c')][_0x5fe7('0x2e')]?_0x475ed0['attributes']:_0x39fd0d['model'];if(!_0x20f1a4[_0x5fe7('0x24')]['hasOwnProperty'](_0x5fe7('0x3e'))){_0x475ed0[_0x5fe7('0x3f')]=qs[_0x5fe7('0x3f')](_0x20f1a4[_0x5fe7('0x24')][_0x5fe7('0x3f')]);_0x475ed0[_0x5fe7('0x13')]=qs['offset'](_0x20f1a4['query']['offset']);}_0x475ed0[_0x5fe7('0x40')]=qs[_0x5fe7('0x41')](_0x20f1a4['query'][_0x5fe7('0x41')]);_0x475ed0[_0x5fe7('0x42')]=qs['filters'](_[_0x5fe7('0x43')](_0x20f1a4['query'],_0x39fd0d[_0x5fe7('0x2a')]));_0x475ed0[_0x5fe7('0x42')][_0x5fe7('0x44')]=_0xebd326['id'];if(_0x20f1a4[_0x5fe7('0x24')][_0x5fe7('0x45')]){_0x475ed0['where']=_[_0x5fe7('0x31')](_0x475ed0[_0x5fe7('0x42')],{'$or':_['map'](_0x475ed0[_0x5fe7('0x2c')],function(_0x22207c){var _0xfad104={};_0xfad104[_0x22207c]={'$like':'%'+_0x20f1a4[_0x5fe7('0x24')][_0x5fe7('0x45')]+'%'};return _0xfad104;})});}if(_0x20f1a4['query'][_0x5fe7('0x46')]){var _0x535369=_0x20f1a4[_0x5fe7('0x24')]['$gte']['split'](',');var _0x5ca264={};_0x5ca264[_0x535369[0x0]]={'$gte':moment(_0x535369[0x1])[_0x5fe7('0x47')](_0x5fe7('0x48'))};_0x475ed0[_0x5fe7('0x42')]=_['merge'](_0x475ed0[_0x5fe7('0x42')],_0x5ca264);}_0x475ed0=_[_0x5fe7('0x31')]({},_0x475ed0,_0x20f1a4[_0x5fe7('0x32')]);return db['FaxMessage'][_0x5fe7('0x15')]({'where':_0x475ed0['where']})[_0x5fe7('0x19')](function(_0x2a8157){_0x8d46af[_0x5fe7('0x15')]=_0x2a8157;if(_0x20f1a4[_0x5fe7('0x24')][_0x5fe7('0x2f')]){_0x475ed0[_0x5fe7('0x30')]=[{'all':!![]}];}return db[_0x5fe7('0x3d')][_0x5fe7('0x23')](_0x475ed0);})[_0x5fe7('0x19')](function(_0x4a90eb){_0x8d46af['rows']=_0x4a90eb;return _0x8d46af;});}})[_0x5fe7('0x19')](respondWithFilteredResult(_0x18c157,_0x475ed0))[_0x5fe7('0x26')](handleError(_0x18c157,null));};exports[_0x5fe7('0x49')]=function(_0x211866,_0xf5a07f){return db[_0x5fe7('0x29')][_0x5fe7('0x33')]({'where':{'id':_0x211866['params']['id']}})[_0x5fe7('0x19')](handleEntityNotFound(_0xf5a07f,null))['then'](function(_0x3e923b){if(_0x3e923b){return _0x3e923b[_0x5fe7('0x4a')](_0x211866['body']['ids'],_[_0x5fe7('0x3a')](_0x211866['body'],['ids','id'])||{})[_0x5fe7('0x4b')](function(){return db[_0x5fe7('0x4c')][_0x5fe7('0x23')]({'attributes':['id',_0x5fe7('0x1c'),'color'],'where':{'id':_0x211866['body'][_0x5fe7('0x39')]}});})[_0x5fe7('0x19')](function(_0x1ef962){socket[_0x5fe7('0x4d')]('faxInteractionTags:save',{'id':Number(_0x211866['params']['id']),'tags':_0x1ef962||[]});return{'id':Number(_0x211866[_0x5fe7('0x36')]['id']),'tags':_0x1ef962||[]};});}})[_0x5fe7('0x19')](respondWithResult(_0xf5a07f,null))['catch'](handleError(_0xf5a07f,null));};exports[_0x5fe7('0x4e')]=function(_0xcc5595,_0x2f6d57){return db[_0x5fe7('0x29')]['find']({'where':{'id':_0xcc5595[_0x5fe7('0x36')]['id']}})[_0x5fe7('0x19')](handleEntityNotFound(_0x2f6d57,null))[_0x5fe7('0x19')](function(_0x31a6ff){if(_0x31a6ff){return _0x31a6ff[_0x5fe7('0x4e')](_0xcc5595[_0x5fe7('0x24')][_0x5fe7('0x39')]);}})[_0x5fe7('0x19')](respondWithStatusCode(_0x2f6d57,null))[_0x5fe7('0x26')](handleError(_0x2f6d57,null));};exports['download']=function(_0x332af8,_0x21116b){var _0x138198=moment()[_0x5fe7('0x4f')]()[_0x5fe7('0x50')]();var _0x78f1a3=path['join'](config[_0x5fe7('0x51')],'server',_0x5fe7('0x52'),_0x5fe7('0x53'));var _0x263387=path[_0x5fe7('0x54')](config['root'],_0x5fe7('0x55'),'files','attachments');var _0x312a0f=path[_0x5fe7('0x54')](_0x78f1a3,_0x138198);var _0x59e9c5=util[_0x5fe7('0x47')](_0x5fe7('0x56'),_0x332af8[_0x5fe7('0x36')]['id'],_0x138198);var _0x199dd1=path[_0x5fe7('0x54')](_0x78f1a3,_0x59e9c5);var _0x3b58c8=[];_0x3b58c8['push']({'model':db[_0x5fe7('0x57')],'as':_0x5fe7('0x57'),'raw':!![]});var _0x174645=[{'model':db[_0x5fe7('0x3d')],'as':_0x5fe7('0x58'),'attributes':['id',_0x5fe7('0x35'),_0x5fe7('0x59')],'include':_0x3b58c8}];return db[_0x5fe7('0x29')][_0x5fe7('0x33')]({'where':{'id':_0x332af8[_0x5fe7('0x36')]['id']},'include':_0x174645})['then'](handleEntityNotFound(_0x21116b,null))[_0x5fe7('0x19')](function(_0xd95e46){if(_0xd95e46&&_0xd95e46[_0x5fe7('0x58')]){var _0x475a15=_0xd95e46[_0x5fe7('0x5a')]({'plain':!![]});fs[_0x5fe7('0x5b')](_0x312a0f);for(var _0x15744c=0x0;_0x15744c<_0x475a15[_0x5fe7('0x58')]['length'];_0x15744c++){var _0x1f3d53=_0x475a15[_0x5fe7('0x58')][_0x15744c][_0x5fe7('0x57')];if(_0x1f3d53){var _0x477286=path[_0x5fe7('0x54')](_0x263387,_0x1f3d53[_0x5fe7('0x5c')]);if(fs[_0x5fe7('0x5d')](_0x477286)){fs['createReadStream'](_0x477286)[_0x5fe7('0x5e')](fs[_0x5fe7('0x5f')](path[_0x5fe7('0x54')](_0x312a0f,_0x1f3d53[_0x5fe7('0x5c')])));}}}return BPromise['resolve']()[_0x5fe7('0x19')](function(){return new BPromise(function(_0x186a71,_0xd989ce){zipdir(_0x312a0f,{'saveTo':_0x199dd1},function(_0x77a62e,_0x3c9002){if(_0x77a62e)return _0xd989ce(_0x77a62e);return _0x186a71(_0x3c9002);});})[_0x5fe7('0x19')](function(){return new BPromise(function(_0x398991,_0xf06367){rimraf(_0x312a0f,function(_0x5720a0){if(_0x5720a0)_0xf06367(_0x5720a0);return _0x398991();});});})[_0x5fe7('0x19')](function(){return _0x21116b['download'](_0x199dd1,_0x59e9c5,function(_0x33c460){if(_0x33c460){console['log'](_0x5fe7('0x60'),_0x33c460);}else{fs[_0x5fe7('0x61')](_0x199dd1);}});});});}else{return _0x21116b[_0x5fe7('0xf')](0xc8);}})[_0x5fe7('0x26')](handleError(_0x21116b,null));};