2304875356716ba9a3e0761f820cdb00a2b84500
[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 _0x943e=['user','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','merge','find','catch','create','body','describe','FaxMessage','addMessage','ids','omit','getMessages','findOne','order','sort','where','FaxInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','include','addTags','setTags','spread','color','emit','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','format','Attachment','createdAt','get','mkdirSync','Messages','existsSync','createReadStream','pipe','createWriteStream','basename','log','err','rimraf','zip-dir','moment','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxInteraction.socket','sendStatus','status','json','undefined','limit','count','offset','set','update','then','destroy','error','name','map','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','fax','query'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x943e,0x102));var _0xe943=function(_0x1bf059,_0x34a4ff){_0x1bf059=_0x1bf059-0x0;var _0x52b9ac=_0x943e[_0x1bf059];return _0x52b9ac;};'use strict';var rimraf=require(_0xe943('0x0'));var zipdir=require(_0xe943('0x1'));var moment=require(_0xe943('0x2'));var BPromise=require('bluebird');var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xe943('0x3'));var Redis=require(_0xe943('0x4'));var interaction=require(_0xe943('0x5'));var qs=require(_0xe943('0x6'));var logger=require('../../config/logger')(_0xe943('0x7'));var config=require(_0xe943('0x8'));var db=require(_0xe943('0x9'))['db'];config[_0xe943('0xa')]=_[_0xe943('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe943('0xc'))(new Redis(config[_0xe943('0xa')]));require(_0xe943('0xd'))['register'](socket);function respondWithStatusCode(_0x4d4404,_0x5096e5){_0x5096e5=_0x5096e5||0xcc;return function(_0x632c2c){if(_0x632c2c){return _0x4d4404[_0xe943('0xe')](_0x5096e5);}return _0x4d4404['status'](_0x5096e5)['end']();};}function respondWithResult(_0x12c72c,_0x5a3961){_0x5a3961=_0x5a3961||0xc8;return function(_0x3bd62b){if(_0x3bd62b){return _0x12c72c[_0xe943('0xf')](_0x5a3961)[_0xe943('0x10')](_0x3bd62b);}};}function respondWithFilteredResult(_0x1cfd64,_0x3207f5){return function(_0x29af5b){if(_0x29af5b){var _0x4c8df0=typeof _0x3207f5['offset']===_0xe943('0x11')&&typeof _0x3207f5[_0xe943('0x12')]===_0xe943('0x11');var _0x2037d5=_0x29af5b[_0xe943('0x13')];var _0x1ff89e=_0x4c8df0?0x0:_0x3207f5[_0xe943('0x14')];var _0x27b9e1=_0x4c8df0?_0x29af5b[_0xe943('0x13')]:_0x3207f5['offset']+_0x3207f5['limit'];var _0x2ea7ff;if(_0x27b9e1>=_0x2037d5){_0x27b9e1=_0x2037d5;_0x2ea7ff=0xc8;}else{_0x2ea7ff=0xce;}_0x1cfd64[_0xe943('0xf')](_0x2ea7ff);return _0x1cfd64[_0xe943('0x15')]('Content-Range',_0x1ff89e+'-'+_0x27b9e1+'/'+_0x2037d5)[_0xe943('0x10')](_0x29af5b);}return null;};}function saveUpdates(_0x3e89a0){return function(_0x49de0e){if(_0x49de0e){return _0x49de0e[_0xe943('0x16')](_0x3e89a0)[_0xe943('0x17')](function(_0x58fac1){return _0x58fac1;});}return null;};}function removeEntity(_0x1dced3){return function(_0x58e676){if(_0x58e676){return _0x58e676[_0xe943('0x18')]()['then'](function(){_0x1dced3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x475ba9){return function(_0x4787a8){if(!_0x4787a8){_0x475ba9[_0xe943('0xe')](0x194);}return _0x4787a8;};}function handleError(_0x32a225,_0x2ac198){_0x2ac198=_0x2ac198||0x1f4;return function(_0xb2710a){logger[_0xe943('0x19')](_0xb2710a['stack']);if(_0xb2710a['name']){delete _0xb2710a[_0xe943('0x1a')];}_0x32a225['status'](_0x2ac198)['send'](_0xb2710a);};}exports['index']=function(_0x28358a,_0x2a6248){var _0x43d31e={};var _0x448abc=_[_0xe943('0x1b')](db[_0xe943('0x1c')][_0xe943('0x1d')],function(_0x580709){return{'name':_0x580709[_0xe943('0x1e')],'type':_0x580709[_0xe943('0x1f')]['key']};});_0x43d31e=qs[_0xe943('0x20')](_0x448abc,_0x28358a);return interaction[_0xe943('0x21')](_0xe943('0x22'),_0x28358a[_0xe943('0x23')],_0x28358a[_0xe943('0x24')],_0x43d31e,_0x448abc)[_0xe943('0x17')](respondWithFilteredResult(_0x2a6248,_0x43d31e))['catch'](handleError(_0x2a6248,null));};exports[_0xe943('0x25')]=function(_0x19f559,_0x2a453a){var _0x590cd6={'raw':![],'where':{'id':_0x19f559[_0xe943('0x26')]['id']}},_0x561b38={};_0x561b38[_0xe943('0x27')]=_[_0xe943('0x28')](db[_0xe943('0x1c')][_0xe943('0x1d')]);_0x561b38[_0xe943('0x23')]=_[_0xe943('0x28')](_0x19f559['query']);_0x561b38[_0xe943('0x29')]=_[_0xe943('0x2a')](_0x561b38[_0xe943('0x27')],_0x561b38[_0xe943('0x23')]);_0x590cd6[_0xe943('0x2b')]=_['intersection'](_0x561b38[_0xe943('0x27')],qs[_0xe943('0x2c')](_0x19f559['query'][_0xe943('0x2c')]));_0x590cd6[_0xe943('0x2b')]=_0x590cd6['attributes'][_0xe943('0x2d')]?_0x590cd6[_0xe943('0x2b')]:_0x561b38[_0xe943('0x27')];if(_0x19f559[_0xe943('0x23')][_0xe943('0x2e')]){_0x590cd6['include']=[{'all':!![]}];}_0x590cd6=_[_0xe943('0x2f')]({},_0x590cd6,_0x19f559['options']);return db[_0xe943('0x1c')][_0xe943('0x30')](_0x590cd6)['then'](handleEntityNotFound(_0x2a453a,null))['then'](respondWithResult(_0x2a453a,null))[_0xe943('0x31')](handleError(_0x2a453a,null));};exports['create']=function(_0x9196c6,_0x44fec3){return db['FaxInteraction'][_0xe943('0x32')](_0x9196c6['body'],{})[_0xe943('0x17')](respondWithResult(_0x44fec3,0xc9))[_0xe943('0x31')](handleError(_0x44fec3,null));};exports[_0xe943('0x16')]=function(_0x30e499,_0x10a50f){if(_0x30e499[_0xe943('0x33')]['id']){delete _0x30e499[_0xe943('0x33')]['id'];}return db[_0xe943('0x1c')][_0xe943('0x30')]({'where':{'id':_0x30e499[_0xe943('0x26')]['id']}})[_0xe943('0x17')](handleEntityNotFound(_0x10a50f,null))[_0xe943('0x17')](saveUpdates(_0x30e499[_0xe943('0x33')],null))['then'](respondWithResult(_0x10a50f,null))['catch'](handleError(_0x10a50f,null));};exports[_0xe943('0x18')]=function(_0x409420,_0x229c49){return db[_0xe943('0x1c')][_0xe943('0x30')]({'where':{'id':_0x409420[_0xe943('0x26')]['id']}})['then'](handleEntityNotFound(_0x229c49,null))[_0xe943('0x17')](removeEntity(_0x229c49,null))[_0xe943('0x31')](handleError(_0x229c49,null));};exports[_0xe943('0x34')]=function(_0x347880,_0x14bdc5){return db['FaxInteraction'][_0xe943('0x34')]()['then'](respondWithResult(_0x14bdc5,null))[_0xe943('0x31')](handleError(_0x14bdc5,null));};exports['addMessage']=function(_0x578901,_0x542c4b){return db[_0xe943('0x35')][_0xe943('0x30')]({'where':{'id':_0x578901['params']['id']}})[_0xe943('0x17')](handleEntityNotFound(_0x542c4b,null))[_0xe943('0x17')](function(_0x165bda){if(_0x165bda){return _0x165bda[_0xe943('0x36')](_0x578901[_0xe943('0x33')][_0xe943('0x37')],_[_0xe943('0x38')](_0x578901[_0xe943('0x33')],['ids','id'])||{});}})[_0xe943('0x17')](respondWithResult(_0x542c4b,null))[_0xe943('0x31')](handleError(_0x542c4b,null));};exports[_0xe943('0x39')]=function(_0x2f8fdd,_0x58a36e){var _0x56ee8d={'raw':![],'where':{}};var _0x3c8034={};var _0x538a58={'count':0x0,'rows':[]};return db[_0xe943('0x1c')][_0xe943('0x3a')]({'where':{'id':_0x2f8fdd[_0xe943('0x26')]['id']}})['then'](handleEntityNotFound(_0x58a36e,null))[_0xe943('0x17')](function(_0x13c292){if(_0x13c292){_0x3c8034[_0xe943('0x27')]=_['keys'](db[_0xe943('0x35')][_0xe943('0x1d')]);_0x3c8034[_0xe943('0x23')]=_[_0xe943('0x28')](_0x2f8fdd[_0xe943('0x23')]);_0x3c8034[_0xe943('0x29')]=_[_0xe943('0x2a')](_0x3c8034[_0xe943('0x27')],_0x3c8034['query']);_0x56ee8d['attributes']=_[_0xe943('0x2a')](_0x3c8034[_0xe943('0x27')],qs['fields'](_0x2f8fdd[_0xe943('0x23')]['fields']));_0x56ee8d[_0xe943('0x2b')]=_0x56ee8d[_0xe943('0x2b')][_0xe943('0x2d')]?_0x56ee8d[_0xe943('0x2b')]:_0x3c8034[_0xe943('0x27')];if(!_0x2f8fdd[_0xe943('0x23')]['hasOwnProperty']('nolimit')){_0x56ee8d[_0xe943('0x12')]=qs[_0xe943('0x12')](_0x2f8fdd[_0xe943('0x23')][_0xe943('0x12')]);_0x56ee8d[_0xe943('0x14')]=qs[_0xe943('0x14')](_0x2f8fdd['query'][_0xe943('0x14')]);}_0x56ee8d[_0xe943('0x3b')]=qs['sort'](_0x2f8fdd[_0xe943('0x23')][_0xe943('0x3c')]);_0x56ee8d[_0xe943('0x3d')]=qs['filters'](_['pick'](_0x2f8fdd[_0xe943('0x23')],_0x3c8034['filters']));_0x56ee8d[_0xe943('0x3d')][_0xe943('0x3e')]=_0x13c292['id'];if(_0x2f8fdd[_0xe943('0x23')]['filter']){_0x56ee8d[_0xe943('0x3d')]=_[_0xe943('0x2f')](_0x56ee8d[_0xe943('0x3d')],{'$or':_[_0xe943('0x1b')](_0x56ee8d['attributes'],function(_0x39e343){var _0x15a4cb={};_0x15a4cb[_0x39e343]={'$like':'%'+_0x2f8fdd[_0xe943('0x23')][_0xe943('0x3f')]+'%'};return _0x15a4cb;})});}if(_0x2f8fdd[_0xe943('0x23')][_0xe943('0x40')]){var _0x10b525=_0x2f8fdd[_0xe943('0x23')][_0xe943('0x40')][_0xe943('0x41')](',');var _0x354b8c={};_0x354b8c[_0x10b525[0x0]]={'$gte':moment(_0x10b525[0x1])['format'](_0xe943('0x42'))};_0x56ee8d[_0xe943('0x3d')]=_[_0xe943('0x2f')](_0x56ee8d['where'],_0x354b8c);}_0x56ee8d=_['merge']({},_0x56ee8d,_0x2f8fdd[_0xe943('0x43')]);return db[_0xe943('0x35')][_0xe943('0x13')]({'where':_0x56ee8d['where']})[_0xe943('0x17')](function(_0x124e6a){_0x538a58['count']=_0x124e6a;if(_0x2f8fdd['query']['includeAll']){_0x56ee8d[_0xe943('0x44')]=[{'all':!![]}];}return db['FaxMessage'][_0xe943('0x21')](_0x56ee8d);})['then'](function(_0x204fb9){_0x538a58['rows']=_0x204fb9;return _0x538a58;});}})[_0xe943('0x17')](respondWithFilteredResult(_0x58a36e,_0x56ee8d))[_0xe943('0x31')](handleError(_0x58a36e,null));};exports[_0xe943('0x45')]=function(_0xbae61e,_0x4675c3){return db[_0xe943('0x1c')][_0xe943('0x30')]({'where':{'id':_0xbae61e['params']['id']}})[_0xe943('0x17')](handleEntityNotFound(_0x4675c3,null))['then'](function(_0x5eb501){if(_0x5eb501){return _0x5eb501[_0xe943('0x46')](_0xbae61e[_0xe943('0x33')]['ids'],_['omit'](_0xbae61e[_0xe943('0x33')],[_0xe943('0x37'),'id'])||{})[_0xe943('0x47')](function(){return db['Tag']['findAll']({'attributes':['id',_0xe943('0x1a'),_0xe943('0x48')],'where':{'id':_0xbae61e[_0xe943('0x33')][_0xe943('0x37')]}});})[_0xe943('0x17')](function(_0x1e8891){socket[_0xe943('0x49')](_0xe943('0x4a'),{'id':Number(_0xbae61e['params']['id']),'tags':_0x1e8891||[]});return{'id':Number(_0xbae61e[_0xe943('0x26')]['id']),'tags':_0x1e8891||[]};});}})['then'](respondWithResult(_0x4675c3,null))['catch'](handleError(_0x4675c3,null));};exports[_0xe943('0x4b')]=function(_0x1d3634,_0x3b7829){return db[_0xe943('0x1c')][_0xe943('0x30')]({'where':{'id':_0x1d3634[_0xe943('0x26')]['id']}})[_0xe943('0x17')](handleEntityNotFound(_0x3b7829,null))['then'](function(_0x4c59d8){if(_0x4c59d8){return _0x4c59d8['removeTags'](_0x1d3634[_0xe943('0x23')][_0xe943('0x37')]);}})[_0xe943('0x17')](respondWithStatusCode(_0x3b7829,null))[_0xe943('0x31')](handleError(_0x3b7829,null));};exports[_0xe943('0x4c')]=function(_0x189639,_0x2e90a0){var _0x2f60cc=moment()[_0xe943('0x4d')]()[_0xe943('0x4e')]();var _0x16cd15=path[_0xe943('0x4f')](config[_0xe943('0x50')],_0xe943('0x51'),_0xe943('0x52'),_0xe943('0x53'));var _0x2c7b24=path[_0xe943('0x4f')](config[_0xe943('0x50')],_0xe943('0x51'),_0xe943('0x52'),_0xe943('0x54'));var _0x560944=path[_0xe943('0x4f')](_0x16cd15,_0x2f60cc);var _0x10d215=util[_0xe943('0x55')]('transcript-%d-%s.zip',_0x189639[_0xe943('0x26')]['id'],_0x2f60cc);var _0x8a65d8=path[_0xe943('0x4f')](_0x16cd15,_0x10d215);var _0x11d697=[];_0x11d697['push']({'model':db[_0xe943('0x56')],'as':_0xe943('0x56'),'raw':!![]});var _0x813210=[{'model':db[_0xe943('0x35')],'as':'Messages','attributes':['id',_0xe943('0x33'),_0xe943('0x57')],'include':_0x11d697}];return db[_0xe943('0x1c')][_0xe943('0x30')]({'where':{'id':_0x189639[_0xe943('0x26')]['id']},'include':_0x813210})[_0xe943('0x17')](handleEntityNotFound(_0x2e90a0,null))[_0xe943('0x17')](function(_0x92abb7){if(_0x92abb7&&_0x92abb7['Messages']){var _0x5a80a6=_0x92abb7[_0xe943('0x58')]({'plain':!![]});fs[_0xe943('0x59')](_0x560944);for(var _0x1316d0=0x0;_0x1316d0<_0x5a80a6[_0xe943('0x5a')][_0xe943('0x2d')];_0x1316d0++){var _0x10320d=_0x5a80a6['Messages'][_0x1316d0][_0xe943('0x56')];if(_0x10320d){var _0x4044fb=path[_0xe943('0x4f')](_0x2c7b24,_0x10320d['basename']);if(fs[_0xe943('0x5b')](_0x4044fb)){fs[_0xe943('0x5c')](_0x4044fb)[_0xe943('0x5d')](fs[_0xe943('0x5e')](path[_0xe943('0x4f')](_0x560944,_0x10320d[_0xe943('0x5f')])));}}}return BPromise['resolve']()[_0xe943('0x17')](function(){return new BPromise(function(_0x2008d8,_0x43ffb1){zipdir(_0x560944,{'saveTo':_0x8a65d8},function(_0x205e93,_0x3431af){if(_0x205e93)return _0x43ffb1(_0x205e93);return _0x2008d8(_0x3431af);});})[_0xe943('0x17')](function(){return new BPromise(function(_0x687982,_0x18c34e){rimraf(_0x560944,function(_0x5ec6f7){if(_0x5ec6f7)_0x18c34e(_0x5ec6f7);return _0x687982();});});})[_0xe943('0x17')](function(){return _0x2e90a0[_0xe943('0x4c')](_0x8a65d8,_0x10d215,function(_0x3bb570){if(_0x3bb570){console[_0xe943('0x60')](_0xe943('0x61'),_0x3bb570);}else{fs['unlinkSync'](_0x8a65d8);}});});});}else{return _0x2e90a0[_0xe943('0xe')](0xc8);}})[_0xe943('0x31')](handleError(_0x2e90a0,null));};