b66ff534069f370e895c58c805a9cb372955ca3f
[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 _0x5cde=['length','hasOwnProperty','nolimit','sort','pick','FaxInteractionId','filter','where','merge','format','options','FaxMessage','findAll','rows','addTags','setTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','push','Attachment','Messages','createdAt','basename','existsSync','createReadStream','pipe','createWriteStream','log','err','unlinkSync','rimraf','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','sendStatus','error','name','send','map','rawAttributes','fieldName','type','key','getOptions','query','user','show','params','keys','FaxInteraction','filters','intersection','model','attributes','fields','includeAll','include','find','body','catch','addMessage','ids','omit','findOne'];(function(_0x1e29c9,_0x465a70){var _0x4baa01=function(_0xae05cc){while(--_0xae05cc){_0x1e29c9['push'](_0x1e29c9['shift']());}};_0x4baa01(++_0x465a70);}(_0x5cde,0x15d));var _0xe5cd=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0x5cde[_0x101e7b];return _0x4995c0;};'use strict';var rimraf=require(_0xe5cd('0x0'));var zipdir=require('zip-dir');var moment=require(_0xe5cd('0x1'));var BPromise=require(_0xe5cd('0x2'));var util=require('util');var path=require(_0xe5cd('0x3'));var fs=require('fs');var _=require(_0xe5cd('0x4'));var Redis=require(_0xe5cd('0x5'));var interaction=require(_0xe5cd('0x6'));var qs=require(_0xe5cd('0x7'));var logger=require(_0xe5cd('0x8'))(_0xe5cd('0x9'));var config=require('../../config/environment');var db=require(_0xe5cd('0xa'))['db'];config[_0xe5cd('0xb')]=_[_0xe5cd('0xc')](config['redis'],{'host':_0xe5cd('0xd'),'port':0x18eb});var socket=require(_0xe5cd('0xe'))(new Redis(config[_0xe5cd('0xb')]));require(_0xe5cd('0xf'))[_0xe5cd('0x10')](socket);function respondWithStatusCode(_0x58fc70,_0x7b1a5c){_0x7b1a5c=_0x7b1a5c||0xcc;return function(_0x424577){if(_0x424577){return _0x58fc70['sendStatus'](_0x7b1a5c);}return _0x58fc70[_0xe5cd('0x11')](_0x7b1a5c)[_0xe5cd('0x12')]();};}function respondWithResult(_0xcc537a,_0x50ec26){_0x50ec26=_0x50ec26||0xc8;return function(_0x1ccab4){if(_0x1ccab4){return _0xcc537a['status'](_0x50ec26)[_0xe5cd('0x13')](_0x1ccab4);}};}function respondWithFilteredResult(_0x39bab2,_0x5b41b8){return function(_0xbc9403){if(_0xbc9403){var _0x224306=typeof _0x5b41b8[_0xe5cd('0x14')]==='undefined'&&typeof _0x5b41b8[_0xe5cd('0x15')]===_0xe5cd('0x16');var _0x59151d=_0xbc9403[_0xe5cd('0x17')];var _0x4bf63d=_0x224306?0x0:_0x5b41b8[_0xe5cd('0x14')];var _0x4b04ee=_0x224306?_0xbc9403[_0xe5cd('0x17')]:_0x5b41b8[_0xe5cd('0x14')]+_0x5b41b8[_0xe5cd('0x15')];var _0x5f5d49;if(_0x4b04ee>=_0x59151d){_0x4b04ee=_0x59151d;_0x5f5d49=0xc8;}else{_0x5f5d49=0xce;}_0x39bab2['status'](_0x5f5d49);return _0x39bab2[_0xe5cd('0x18')](_0xe5cd('0x19'),_0x4bf63d+'-'+_0x4b04ee+'/'+_0x59151d)[_0xe5cd('0x13')](_0xbc9403);}return null;};}function saveUpdates(_0xd3c0ae){return function(_0x3cf55b){if(_0x3cf55b){return _0x3cf55b[_0xe5cd('0x1a')](_0xd3c0ae)[_0xe5cd('0x1b')](function(_0x3341b1){return _0x3341b1;});}return null;};}function removeEntity(_0x2487ae){return function(_0x5daa2f){if(_0x5daa2f){return _0x5daa2f[_0xe5cd('0x1c')]()['then'](function(){_0x2487ae[_0xe5cd('0x11')](0xcc)[_0xe5cd('0x12')]();});}};}function handleEntityNotFound(_0x328f3c){return function(_0x1102bc){if(!_0x1102bc){_0x328f3c[_0xe5cd('0x1d')](0x194);}return _0x1102bc;};}function handleError(_0x30708a,_0x2b8e9c){_0x2b8e9c=_0x2b8e9c||0x1f4;return function(_0x117eb2){logger[_0xe5cd('0x1e')](_0x117eb2['stack']);if(_0x117eb2[_0xe5cd('0x1f')]){delete _0x117eb2['name'];}_0x30708a['status'](_0x2b8e9c)[_0xe5cd('0x20')](_0x117eb2);};}exports['index']=function(_0x4e5ff5,_0x2eaab5){var _0x330aa8={};var _0x29e1d4=_[_0xe5cd('0x21')](db['FaxInteraction'][_0xe5cd('0x22')],function(_0x501d3a){return{'name':_0x501d3a[_0xe5cd('0x23')],'type':_0x501d3a[_0xe5cd('0x24')][_0xe5cd('0x25')]};});_0x330aa8=qs[_0xe5cd('0x26')](_0x29e1d4,_0x4e5ff5);return interaction['findAll']('fax',_0x4e5ff5[_0xe5cd('0x27')],_0x4e5ff5[_0xe5cd('0x28')],_0x330aa8,_0x29e1d4)[_0xe5cd('0x1b')](respondWithFilteredResult(_0x2eaab5,_0x330aa8))['catch'](handleError(_0x2eaab5,null));};exports[_0xe5cd('0x29')]=function(_0x375094,_0x596ec3){var _0x485ee8={'raw':![],'where':{'id':_0x375094[_0xe5cd('0x2a')]['id']}},_0x2b041b={};_0x2b041b['model']=_[_0xe5cd('0x2b')](db[_0xe5cd('0x2c')][_0xe5cd('0x22')]);_0x2b041b[_0xe5cd('0x27')]=_[_0xe5cd('0x2b')](_0x375094[_0xe5cd('0x27')]);_0x2b041b[_0xe5cd('0x2d')]=_[_0xe5cd('0x2e')](_0x2b041b[_0xe5cd('0x2f')],_0x2b041b[_0xe5cd('0x27')]);_0x485ee8[_0xe5cd('0x30')]=_['intersection'](_0x2b041b['model'],qs[_0xe5cd('0x31')](_0x375094['query'][_0xe5cd('0x31')]));_0x485ee8[_0xe5cd('0x30')]=_0x485ee8[_0xe5cd('0x30')]['length']?_0x485ee8[_0xe5cd('0x30')]:_0x2b041b[_0xe5cd('0x2f')];if(_0x375094['query'][_0xe5cd('0x32')]){_0x485ee8[_0xe5cd('0x33')]=[{'all':!![]}];}_0x485ee8=_['merge']({},_0x485ee8,_0x375094['options']);return db[_0xe5cd('0x2c')][_0xe5cd('0x34')](_0x485ee8)[_0xe5cd('0x1b')](handleEntityNotFound(_0x596ec3,null))[_0xe5cd('0x1b')](respondWithResult(_0x596ec3,null))['catch'](handleError(_0x596ec3,null));};exports['create']=function(_0x1a58c4,_0xcfdb28){return db[_0xe5cd('0x2c')]['create'](_0x1a58c4[_0xe5cd('0x35')],{})[_0xe5cd('0x1b')](respondWithResult(_0xcfdb28,0xc9))[_0xe5cd('0x36')](handleError(_0xcfdb28,null));};exports[_0xe5cd('0x1a')]=function(_0x39613,_0x332810){if(_0x39613[_0xe5cd('0x35')]['id']){delete _0x39613[_0xe5cd('0x35')]['id'];}return db['FaxInteraction'][_0xe5cd('0x34')]({'where':{'id':_0x39613[_0xe5cd('0x2a')]['id']}})[_0xe5cd('0x1b')](handleEntityNotFound(_0x332810,null))[_0xe5cd('0x1b')](saveUpdates(_0x39613['body'],null))[_0xe5cd('0x1b')](respondWithResult(_0x332810,null))[_0xe5cd('0x36')](handleError(_0x332810,null));};exports[_0xe5cd('0x1c')]=function(_0x5406db,_0x6d1d0f){return db[_0xe5cd('0x2c')]['find']({'where':{'id':_0x5406db[_0xe5cd('0x2a')]['id']}})[_0xe5cd('0x1b')](handleEntityNotFound(_0x6d1d0f,null))[_0xe5cd('0x1b')](removeEntity(_0x6d1d0f,null))[_0xe5cd('0x36')](handleError(_0x6d1d0f,null));};exports['describe']=function(_0x2dcd34,_0x591e4b){return db[_0xe5cd('0x2c')]['describe']()[_0xe5cd('0x1b')](respondWithResult(_0x591e4b,null))['catch'](handleError(_0x591e4b,null));};exports[_0xe5cd('0x37')]=function(_0x15fee8,_0x4fdc54){return db['FaxMessage'][_0xe5cd('0x34')]({'where':{'id':_0x15fee8[_0xe5cd('0x2a')]['id']}})[_0xe5cd('0x1b')](handleEntityNotFound(_0x4fdc54,null))['then'](function(_0x419e9e){if(_0x419e9e){return _0x419e9e['addMessage'](_0x15fee8[_0xe5cd('0x35')][_0xe5cd('0x38')],_[_0xe5cd('0x39')](_0x15fee8[_0xe5cd('0x35')],[_0xe5cd('0x38'),'id'])||{});}})[_0xe5cd('0x1b')](respondWithResult(_0x4fdc54,null))[_0xe5cd('0x36')](handleError(_0x4fdc54,null));};exports['getMessages']=function(_0x3ca54e,_0x2c9db1){var _0x55b681={'raw':![],'where':{}};var _0x2d05e0={};var _0x4d35f7={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xe5cd('0x3a')]({'where':{'id':_0x3ca54e[_0xe5cd('0x2a')]['id']}})[_0xe5cd('0x1b')](handleEntityNotFound(_0x2c9db1,null))[_0xe5cd('0x1b')](function(_0x18ea44){if(_0x18ea44){_0x2d05e0[_0xe5cd('0x2f')]=_[_0xe5cd('0x2b')](db['FaxMessage'][_0xe5cd('0x22')]);_0x2d05e0['query']=_[_0xe5cd('0x2b')](_0x3ca54e['query']);_0x2d05e0[_0xe5cd('0x2d')]=_['intersection'](_0x2d05e0[_0xe5cd('0x2f')],_0x2d05e0[_0xe5cd('0x27')]);_0x55b681['attributes']=_[_0xe5cd('0x2e')](_0x2d05e0['model'],qs[_0xe5cd('0x31')](_0x3ca54e[_0xe5cd('0x27')][_0xe5cd('0x31')]));_0x55b681[_0xe5cd('0x30')]=_0x55b681[_0xe5cd('0x30')][_0xe5cd('0x3b')]?_0x55b681[_0xe5cd('0x30')]:_0x2d05e0[_0xe5cd('0x2f')];if(!_0x3ca54e[_0xe5cd('0x27')][_0xe5cd('0x3c')](_0xe5cd('0x3d'))){_0x55b681['limit']=qs[_0xe5cd('0x15')](_0x3ca54e['query'][_0xe5cd('0x15')]);_0x55b681['offset']=qs['offset'](_0x3ca54e[_0xe5cd('0x27')][_0xe5cd('0x14')]);}_0x55b681['order']=qs['sort'](_0x3ca54e[_0xe5cd('0x27')][_0xe5cd('0x3e')]);_0x55b681['where']=qs[_0xe5cd('0x2d')](_[_0xe5cd('0x3f')](_0x3ca54e['query'],_0x2d05e0[_0xe5cd('0x2d')]));_0x55b681['where'][_0xe5cd('0x40')]=_0x18ea44['id'];if(_0x3ca54e[_0xe5cd('0x27')][_0xe5cd('0x41')]){_0x55b681[_0xe5cd('0x42')]=_[_0xe5cd('0x43')](_0x55b681[_0xe5cd('0x42')],{'$or':_[_0xe5cd('0x21')](_0x55b681[_0xe5cd('0x30')],function(_0x2477d0){var _0x2c9077={};_0x2c9077[_0x2477d0]={'$like':'%'+_0x3ca54e[_0xe5cd('0x27')][_0xe5cd('0x41')]+'%'};return _0x2c9077;})});}if(_0x3ca54e[_0xe5cd('0x27')]['$gte']){var _0x2a151c=_0x3ca54e[_0xe5cd('0x27')]['$gte']['split'](',');var _0xa00f9b={};_0xa00f9b[_0x2a151c[0x0]]={'$gte':moment(_0x2a151c[0x1])[_0xe5cd('0x44')]('YYYY-MM-DD\x20HH:mm:ss')};_0x55b681[_0xe5cd('0x42')]=_['merge'](_0x55b681[_0xe5cd('0x42')],_0xa00f9b);}_0x55b681=_['merge']({},_0x55b681,_0x3ca54e[_0xe5cd('0x45')]);return db[_0xe5cd('0x46')][_0xe5cd('0x17')]({'where':_0x55b681['where']})[_0xe5cd('0x1b')](function(_0xee04c4){_0x4d35f7[_0xe5cd('0x17')]=_0xee04c4;if(_0x3ca54e[_0xe5cd('0x27')][_0xe5cd('0x32')]){_0x55b681[_0xe5cd('0x33')]=[{'all':!![]}];}return db['FaxMessage'][_0xe5cd('0x47')](_0x55b681);})[_0xe5cd('0x1b')](function(_0x2ab05c){_0x4d35f7[_0xe5cd('0x48')]=_0x2ab05c;return _0x4d35f7;});}})[_0xe5cd('0x1b')](respondWithFilteredResult(_0x2c9db1,_0x55b681))[_0xe5cd('0x36')](handleError(_0x2c9db1,null));};exports[_0xe5cd('0x49')]=function(_0x1a5e8e,_0x9c5b67){return db[_0xe5cd('0x2c')][_0xe5cd('0x34')]({'where':{'id':_0x1a5e8e[_0xe5cd('0x2a')]['id']}})[_0xe5cd('0x1b')](handleEntityNotFound(_0x9c5b67,null))[_0xe5cd('0x1b')](function(_0x26d63d){if(_0x26d63d){return _0x26d63d[_0xe5cd('0x4a')](_0x1a5e8e[_0xe5cd('0x35')]['ids'],_[_0xe5cd('0x39')](_0x1a5e8e[_0xe5cd('0x35')],[_0xe5cd('0x38'),'id'])||{})[_0xe5cd('0x4b')](function(){return db[_0xe5cd('0x4c')][_0xe5cd('0x47')]({'attributes':['id',_0xe5cd('0x1f'),_0xe5cd('0x4d')],'where':{'id':_0x1a5e8e[_0xe5cd('0x35')][_0xe5cd('0x38')]}});})[_0xe5cd('0x1b')](function(_0x3a8503){socket[_0xe5cd('0x4e')](_0xe5cd('0x4f'),{'id':Number(_0x1a5e8e[_0xe5cd('0x2a')]['id']),'tags':_0x3a8503||[]});return{'id':Number(_0x1a5e8e[_0xe5cd('0x2a')]['id']),'tags':_0x3a8503||[]};});}})['then'](respondWithResult(_0x9c5b67,null))[_0xe5cd('0x36')](handleError(_0x9c5b67,null));};exports['removeTags']=function(_0x103c24,_0x2d4534){return db[_0xe5cd('0x2c')][_0xe5cd('0x34')]({'where':{'id':_0x103c24['params']['id']}})[_0xe5cd('0x1b')](handleEntityNotFound(_0x2d4534,null))[_0xe5cd('0x1b')](function(_0x3e303d){if(_0x3e303d){return _0x3e303d[_0xe5cd('0x50')](_0x103c24[_0xe5cd('0x27')][_0xe5cd('0x38')]);}})[_0xe5cd('0x1b')](respondWithStatusCode(_0x2d4534,null))[_0xe5cd('0x36')](handleError(_0x2d4534,null));};exports[_0xe5cd('0x51')]=function(_0x1cf3c4,_0x17cc5d){var _0x14ed18=moment()[_0xe5cd('0x52')]()[_0xe5cd('0x53')]();var _0x35a81d=path[_0xe5cd('0x54')](config[_0xe5cd('0x55')],_0xe5cd('0x56'),_0xe5cd('0x57'),_0xe5cd('0x58'));var _0x1bf546=path[_0xe5cd('0x54')](config[_0xe5cd('0x55')],_0xe5cd('0x56'),_0xe5cd('0x57'),_0xe5cd('0x59'));var _0x138d08=path[_0xe5cd('0x54')](_0x35a81d,_0x14ed18);var _0x2f9491=util[_0xe5cd('0x44')]('transcript-%d-%s.zip',_0x1cf3c4[_0xe5cd('0x2a')]['id'],_0x14ed18);var _0x2efbcb=path[_0xe5cd('0x54')](_0x35a81d,_0x2f9491);var _0x4d33a7=[];_0x4d33a7[_0xe5cd('0x5a')]({'model':db[_0xe5cd('0x5b')],'as':_0xe5cd('0x5b'),'raw':!![]});var _0xbf5a54=[{'model':db[_0xe5cd('0x46')],'as':_0xe5cd('0x5c'),'attributes':['id',_0xe5cd('0x35'),_0xe5cd('0x5d')],'include':_0x4d33a7}];return db[_0xe5cd('0x2c')]['find']({'where':{'id':_0x1cf3c4['params']['id']},'include':_0xbf5a54})['then'](handleEntityNotFound(_0x17cc5d,null))[_0xe5cd('0x1b')](function(_0x406807){if(_0x406807&&_0x406807['Messages']){var _0x5c90d7=_0x406807['get']({'plain':!![]});fs['mkdirSync'](_0x138d08);for(var _0x259247=0x0;_0x259247<_0x5c90d7['Messages'][_0xe5cd('0x3b')];_0x259247++){var _0x1f855f=_0x5c90d7[_0xe5cd('0x5c')][_0x259247][_0xe5cd('0x5b')];if(_0x1f855f){var _0x3ce718=path['join'](_0x1bf546,_0x1f855f[_0xe5cd('0x5e')]);if(fs[_0xe5cd('0x5f')](_0x3ce718)){fs[_0xe5cd('0x60')](_0x3ce718)[_0xe5cd('0x61')](fs[_0xe5cd('0x62')](path['join'](_0x138d08,_0x1f855f[_0xe5cd('0x5e')])));}}}return BPromise['resolve']()['then'](function(){return new BPromise(function(_0x318722,_0x2d51f8){zipdir(_0x138d08,{'saveTo':_0x2efbcb},function(_0x211553,_0x2d4f04){if(_0x211553)return _0x2d51f8(_0x211553);return _0x318722(_0x2d4f04);});})[_0xe5cd('0x1b')](function(){return new BPromise(function(_0x2cd3b1,_0x46678a){rimraf(_0x138d08,function(_0x2cad5d){if(_0x2cad5d)_0x46678a(_0x2cad5d);return _0x2cd3b1();});});})['then'](function(){return _0x17cc5d[_0xe5cd('0x51')](_0x2efbcb,_0x2f9491,function(_0xf312d1){if(_0xf312d1){console[_0xe5cd('0x63')](_0xe5cd('0x64'),_0xf312d1);}else{fs[_0xe5cd('0x65')](_0x2efbcb);}});});});}else{return _0x17cc5d[_0xe5cd('0x1d')](0xc8);}})[_0xe5cd('0x36')](handleError(_0x17cc5d,null));};