f976969f4be676d9d98fb9ae410757e3fd522d89
[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 _0xb9bc=['download','err','unlinkSync','rimraf','zip-dir','util','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','undefined','limit','count','set','json','update','then','destroy','error','stack','name','send','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','fax','query','catch','model','intersection','fields','attributes','length','includeAll','include','merge','options','create','body','find','params','describe','addMessage','FaxMessage','ids','omit','getMessages','keys','filters','hasOwnProperty','nolimit','offset','order','sort','where','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','unix','toString','join','root','tmp','files','attachments','push','Attachment','Messages','createdAt','get','mkdirSync','basename','createReadStream','pipe','resolve'];(function(_0x12f3b3,_0x31a429){var _0xd8cd5b=function(_0x5e6444){while(--_0x5e6444){_0x12f3b3['push'](_0x12f3b3['shift']());}};_0xd8cd5b(++_0x31a429);}(_0xb9bc,0x197));var _0xcb9b=function(_0x502953,_0x28de83){_0x502953=_0x502953-0x0;var _0x2fa32d=_0xb9bc[_0x502953];return _0x2fa32d;};'use strict';var rimraf=require(_0xcb9b('0x0'));var zipdir=require(_0xcb9b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xcb9b('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var Redis=require(_0xcb9b('0x3'));var interaction=require('../../components/interaction/service');var qs=require(_0xcb9b('0x4'));var logger=require('../../config/logger')('api');var config=require(_0xcb9b('0x5'));var db=require(_0xcb9b('0x6'))['db'];config[_0xcb9b('0x7')]=_[_0xcb9b('0x8')](config[_0xcb9b('0x7')],{'host':_0xcb9b('0x9'),'port':0x18eb});var socket=require(_0xcb9b('0xa'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0xcb9b('0xb')](socket);function respondWithStatusCode(_0x2fa10b,_0x18e111){_0x18e111=_0x18e111||0xcc;return function(_0x5bde24){if(_0x5bde24){return _0x2fa10b[_0xcb9b('0xc')](_0x18e111);}return _0x2fa10b[_0xcb9b('0xd')](_0x18e111)[_0xcb9b('0xe')]();};}function respondWithResult(_0x6829fe,_0x109341){_0x109341=_0x109341||0xc8;return function(_0x3c6040){if(_0x3c6040){return _0x6829fe[_0xcb9b('0xd')](_0x109341)['json'](_0x3c6040);}};}function respondWithFilteredResult(_0x12095b,_0x53fd12){return function(_0x530b58){if(_0x530b58){var _0xd9631a=typeof _0x53fd12['offset']===_0xcb9b('0xf')&&typeof _0x53fd12[_0xcb9b('0x10')]===_0xcb9b('0xf');var _0x57716a=_0x530b58[_0xcb9b('0x11')];var _0x265c3f=_0xd9631a?0x0:_0x53fd12['offset'];var _0x39fb01=_0xd9631a?_0x530b58[_0xcb9b('0x11')]:_0x53fd12['offset']+_0x53fd12[_0xcb9b('0x10')];var _0x5d2a9e;if(_0x39fb01>=_0x57716a){_0x39fb01=_0x57716a;_0x5d2a9e=0xc8;}else{_0x5d2a9e=0xce;}_0x12095b[_0xcb9b('0xd')](_0x5d2a9e);return _0x12095b[_0xcb9b('0x12')]('Content-Range',_0x265c3f+'-'+_0x39fb01+'/'+_0x57716a)[_0xcb9b('0x13')](_0x530b58);}return null;};}function saveUpdates(_0x2a52ea){return function(_0x232ea2){if(_0x232ea2){return _0x232ea2[_0xcb9b('0x14')](_0x2a52ea)[_0xcb9b('0x15')](function(_0xe6255c){return _0xe6255c;});}return null;};}function removeEntity(_0x140013){return function(_0x10ff73){if(_0x10ff73){return _0x10ff73[_0xcb9b('0x16')]()['then'](function(){_0x140013['status'](0xcc)[_0xcb9b('0xe')]();});}};}function handleEntityNotFound(_0x24a727){return function(_0x2b2e0b){if(!_0x2b2e0b){_0x24a727[_0xcb9b('0xc')](0x194);}return _0x2b2e0b;};}function handleError(_0x44a951,_0x43738e){_0x43738e=_0x43738e||0x1f4;return function(_0x41097d){logger[_0xcb9b('0x17')](_0x41097d[_0xcb9b('0x18')]);if(_0x41097d[_0xcb9b('0x19')]){delete _0x41097d[_0xcb9b('0x19')];}_0x44a951['status'](_0x43738e)[_0xcb9b('0x1a')](_0x41097d);};}exports[_0xcb9b('0x1b')]=function(_0x15e369,_0x30b138){var _0x957d77={};var _0xba3bd9=_[_0xcb9b('0x1c')](db[_0xcb9b('0x1d')][_0xcb9b('0x1e')],function(_0x110f2b){return{'name':_0x110f2b[_0xcb9b('0x1f')],'type':_0x110f2b[_0xcb9b('0x20')][_0xcb9b('0x21')]};});_0x957d77=qs[_0xcb9b('0x22')](_0xba3bd9,_0x15e369);return interaction['findAll'](_0xcb9b('0x23'),_0x15e369[_0xcb9b('0x24')],_0x15e369['user'],_0x957d77,_0xba3bd9)[_0xcb9b('0x15')](respondWithFilteredResult(_0x30b138,_0x957d77))[_0xcb9b('0x25')](handleError(_0x30b138,null));};exports['show']=function(_0x90ddc4,_0x503b0c){var _0x28bfc9={'raw':![],'where':{'id':_0x90ddc4['params']['id']}},_0x3632ae={};_0x3632ae[_0xcb9b('0x26')]=_['keys'](db['FaxInteraction']['rawAttributes']);_0x3632ae[_0xcb9b('0x24')]=_['keys'](_0x90ddc4['query']);_0x3632ae['filters']=_['intersection'](_0x3632ae[_0xcb9b('0x26')],_0x3632ae[_0xcb9b('0x24')]);_0x28bfc9['attributes']=_[_0xcb9b('0x27')](_0x3632ae[_0xcb9b('0x26')],qs['fields'](_0x90ddc4[_0xcb9b('0x24')][_0xcb9b('0x28')]));_0x28bfc9[_0xcb9b('0x29')]=_0x28bfc9['attributes'][_0xcb9b('0x2a')]?_0x28bfc9[_0xcb9b('0x29')]:_0x3632ae['model'];if(_0x90ddc4[_0xcb9b('0x24')][_0xcb9b('0x2b')]){_0x28bfc9[_0xcb9b('0x2c')]=[{'all':!![]}];}_0x28bfc9=_[_0xcb9b('0x2d')]({},_0x28bfc9,_0x90ddc4[_0xcb9b('0x2e')]);return db['FaxInteraction']['find'](_0x28bfc9)[_0xcb9b('0x15')](handleEntityNotFound(_0x503b0c,null))['then'](respondWithResult(_0x503b0c,null))[_0xcb9b('0x25')](handleError(_0x503b0c,null));};exports[_0xcb9b('0x2f')]=function(_0x4b7c14,_0x141c35){return db[_0xcb9b('0x1d')][_0xcb9b('0x2f')](_0x4b7c14[_0xcb9b('0x30')],{})[_0xcb9b('0x15')](respondWithResult(_0x141c35,0xc9))[_0xcb9b('0x25')](handleError(_0x141c35,null));};exports[_0xcb9b('0x14')]=function(_0x2d7308,_0x23498e){if(_0x2d7308[_0xcb9b('0x30')]['id']){delete _0x2d7308[_0xcb9b('0x30')]['id'];}return db[_0xcb9b('0x1d')][_0xcb9b('0x31')]({'where':{'id':_0x2d7308[_0xcb9b('0x32')]['id']}})[_0xcb9b('0x15')](handleEntityNotFound(_0x23498e,null))['then'](saveUpdates(_0x2d7308[_0xcb9b('0x30')],null))[_0xcb9b('0x15')](respondWithResult(_0x23498e,null))[_0xcb9b('0x25')](handleError(_0x23498e,null));};exports[_0xcb9b('0x16')]=function(_0x2f8fcd,_0x45601a){return db['FaxInteraction'][_0xcb9b('0x31')]({'where':{'id':_0x2f8fcd[_0xcb9b('0x32')]['id']}})[_0xcb9b('0x15')](handleEntityNotFound(_0x45601a,null))[_0xcb9b('0x15')](removeEntity(_0x45601a,null))['catch'](handleError(_0x45601a,null));};exports[_0xcb9b('0x33')]=function(_0x4db17a,_0x14e98a){return db['FaxInteraction']['describe']()[_0xcb9b('0x15')](respondWithResult(_0x14e98a,null))[_0xcb9b('0x25')](handleError(_0x14e98a,null));};exports[_0xcb9b('0x34')]=function(_0x4fb8f9,_0x107ee1){return db[_0xcb9b('0x35')][_0xcb9b('0x31')]({'where':{'id':_0x4fb8f9[_0xcb9b('0x32')]['id']}})[_0xcb9b('0x15')](handleEntityNotFound(_0x107ee1,null))['then'](function(_0x3a17bc){if(_0x3a17bc){return _0x3a17bc[_0xcb9b('0x34')](_0x4fb8f9[_0xcb9b('0x30')][_0xcb9b('0x36')],_[_0xcb9b('0x37')](_0x4fb8f9['body'],['ids','id'])||{});}})[_0xcb9b('0x15')](respondWithResult(_0x107ee1,null))[_0xcb9b('0x25')](handleError(_0x107ee1,null));};exports[_0xcb9b('0x38')]=function(_0x5b8cdc,_0x48a436){var _0x232a49={'raw':![],'where':{}};var _0x2b07c9={};var _0x1b3a99={'count':0x0,'rows':[]};return db[_0xcb9b('0x1d')]['findOne']({'where':{'id':_0x5b8cdc['params']['id']}})['then'](handleEntityNotFound(_0x48a436,null))[_0xcb9b('0x15')](function(_0x13056f){if(_0x13056f){_0x2b07c9[_0xcb9b('0x26')]=_[_0xcb9b('0x39')](db[_0xcb9b('0x35')][_0xcb9b('0x1e')]);_0x2b07c9['query']=_[_0xcb9b('0x39')](_0x5b8cdc[_0xcb9b('0x24')]);_0x2b07c9[_0xcb9b('0x3a')]=_[_0xcb9b('0x27')](_0x2b07c9[_0xcb9b('0x26')],_0x2b07c9['query']);_0x232a49['attributes']=_[_0xcb9b('0x27')](_0x2b07c9[_0xcb9b('0x26')],qs[_0xcb9b('0x28')](_0x5b8cdc[_0xcb9b('0x24')][_0xcb9b('0x28')]));_0x232a49[_0xcb9b('0x29')]=_0x232a49[_0xcb9b('0x29')]['length']?_0x232a49[_0xcb9b('0x29')]:_0x2b07c9[_0xcb9b('0x26')];if(!_0x5b8cdc[_0xcb9b('0x24')][_0xcb9b('0x3b')](_0xcb9b('0x3c'))){_0x232a49[_0xcb9b('0x10')]=qs[_0xcb9b('0x10')](_0x5b8cdc[_0xcb9b('0x24')]['limit']);_0x232a49[_0xcb9b('0x3d')]=qs[_0xcb9b('0x3d')](_0x5b8cdc[_0xcb9b('0x24')]['offset']);}_0x232a49[_0xcb9b('0x3e')]=qs[_0xcb9b('0x3f')](_0x5b8cdc['query'][_0xcb9b('0x3f')]);_0x232a49[_0xcb9b('0x40')]=qs[_0xcb9b('0x3a')](_['pick'](_0x5b8cdc[_0xcb9b('0x24')],_0x2b07c9['filters']));_0x232a49[_0xcb9b('0x40')][_0xcb9b('0x41')]=_0x13056f['id'];if(_0x5b8cdc[_0xcb9b('0x24')][_0xcb9b('0x42')]){_0x232a49[_0xcb9b('0x40')]=_[_0xcb9b('0x2d')](_0x232a49['where'],{'$or':_[_0xcb9b('0x1c')](_0x232a49[_0xcb9b('0x29')],function(_0x247e3c){var _0x617f78={};_0x617f78[_0x247e3c]={'$like':'%'+_0x5b8cdc[_0xcb9b('0x24')][_0xcb9b('0x42')]+'%'};return _0x617f78;})});}if(_0x5b8cdc[_0xcb9b('0x24')][_0xcb9b('0x43')]){var _0x14d1da=_0x5b8cdc[_0xcb9b('0x24')]['$gte'][_0xcb9b('0x44')](',');var _0x327476={};_0x327476[_0x14d1da[0x0]]={'$gte':moment(_0x14d1da[0x1])[_0xcb9b('0x45')](_0xcb9b('0x46'))};_0x232a49[_0xcb9b('0x40')]=_[_0xcb9b('0x2d')](_0x232a49[_0xcb9b('0x40')],_0x327476);}_0x232a49=_[_0xcb9b('0x2d')]({},_0x232a49,_0x5b8cdc[_0xcb9b('0x2e')]);return db[_0xcb9b('0x35')][_0xcb9b('0x11')]({'where':_0x232a49[_0xcb9b('0x40')]})['then'](function(_0x2b6f09){_0x1b3a99['count']=_0x2b6f09;if(_0x5b8cdc[_0xcb9b('0x24')][_0xcb9b('0x2b')]){_0x232a49['include']=[{'all':!![]}];}return db[_0xcb9b('0x35')][_0xcb9b('0x47')](_0x232a49);})['then'](function(_0x1dce1a){_0x1b3a99[_0xcb9b('0x48')]=_0x1dce1a;return _0x1b3a99;});}})[_0xcb9b('0x15')](respondWithFilteredResult(_0x48a436,_0x232a49))[_0xcb9b('0x25')](handleError(_0x48a436,null));};exports[_0xcb9b('0x49')]=function(_0x172768,_0x2b13bc){return db[_0xcb9b('0x1d')][_0xcb9b('0x31')]({'where':{'id':_0x172768[_0xcb9b('0x32')]['id']}})[_0xcb9b('0x15')](handleEntityNotFound(_0x2b13bc,null))[_0xcb9b('0x15')](function(_0x3829e2){if(_0x3829e2){return _0x3829e2[_0xcb9b('0x4a')](_0x172768[_0xcb9b('0x30')][_0xcb9b('0x36')],_[_0xcb9b('0x37')](_0x172768[_0xcb9b('0x30')],[_0xcb9b('0x36'),'id'])||{})[_0xcb9b('0x4b')](function(){return db[_0xcb9b('0x4c')][_0xcb9b('0x47')]({'attributes':['id',_0xcb9b('0x19'),_0xcb9b('0x4d')],'where':{'id':_0x172768['body']['ids']}});})[_0xcb9b('0x15')](function(_0x1e42aa){socket[_0xcb9b('0x4e')](_0xcb9b('0x4f'),{'id':Number(_0x172768[_0xcb9b('0x32')]['id']),'tags':_0x1e42aa||[]});return{'id':Number(_0x172768[_0xcb9b('0x32')]['id']),'tags':_0x1e42aa||[]};});}})['then'](respondWithResult(_0x2b13bc,null))[_0xcb9b('0x25')](handleError(_0x2b13bc,null));};exports[_0xcb9b('0x50')]=function(_0x7ed531,_0x1596f3){return db[_0xcb9b('0x1d')][_0xcb9b('0x31')]({'where':{'id':_0x7ed531['params']['id']}})['then'](handleEntityNotFound(_0x1596f3,null))[_0xcb9b('0x15')](function(_0xc50126){if(_0xc50126){return _0xc50126[_0xcb9b('0x50')](_0x7ed531[_0xcb9b('0x24')][_0xcb9b('0x36')]);}})[_0xcb9b('0x15')](respondWithStatusCode(_0x1596f3,null))['catch'](handleError(_0x1596f3,null));};exports['download']=function(_0x3acd09,_0x1f1346){var _0x57dc20=moment()[_0xcb9b('0x51')]()[_0xcb9b('0x52')]();var _0x1a9646=path[_0xcb9b('0x53')](config[_0xcb9b('0x54')],'server','files',_0xcb9b('0x55'));var _0x598a24=path['join'](config['root'],'server',_0xcb9b('0x56'),_0xcb9b('0x57'));var _0x8a5e27=path[_0xcb9b('0x53')](_0x1a9646,_0x57dc20);var _0x2be47f=util['format']('transcript-%d-%s.zip',_0x3acd09[_0xcb9b('0x32')]['id'],_0x57dc20);var _0x47ea5c=path[_0xcb9b('0x53')](_0x1a9646,_0x2be47f);var _0x201ffb=[];_0x201ffb[_0xcb9b('0x58')]({'model':db[_0xcb9b('0x59')],'as':_0xcb9b('0x59'),'raw':!![]});var _0x2fa965=[{'model':db['FaxMessage'],'as':_0xcb9b('0x5a'),'attributes':['id',_0xcb9b('0x30'),_0xcb9b('0x5b')],'include':_0x201ffb}];return db[_0xcb9b('0x1d')]['find']({'where':{'id':_0x3acd09[_0xcb9b('0x32')]['id']},'include':_0x2fa965})[_0xcb9b('0x15')](handleEntityNotFound(_0x1f1346,null))[_0xcb9b('0x15')](function(_0x2b50f9){if(_0x2b50f9&&_0x2b50f9[_0xcb9b('0x5a')]){var _0x2971cc=_0x2b50f9[_0xcb9b('0x5c')]({'plain':!![]});fs[_0xcb9b('0x5d')](_0x8a5e27);for(var _0x31d981=0x0;_0x31d981<_0x2971cc[_0xcb9b('0x5a')][_0xcb9b('0x2a')];_0x31d981++){var _0x1910b1=_0x2971cc[_0xcb9b('0x5a')][_0x31d981][_0xcb9b('0x59')];if(_0x1910b1){var _0x493f23=path[_0xcb9b('0x53')](_0x598a24,_0x1910b1[_0xcb9b('0x5e')]);if(fs['existsSync'](_0x493f23)){fs[_0xcb9b('0x5f')](_0x493f23)[_0xcb9b('0x60')](fs['createWriteStream'](path['join'](_0x8a5e27,_0x1910b1['basename'])));}}}return BPromise[_0xcb9b('0x61')]()[_0xcb9b('0x15')](function(){return new BPromise(function(_0x1594c7,_0x1ec517){zipdir(_0x8a5e27,{'saveTo':_0x47ea5c},function(_0x59143e,_0x1890de){if(_0x59143e)return _0x1ec517(_0x59143e);return _0x1594c7(_0x1890de);});})[_0xcb9b('0x15')](function(){return new BPromise(function(_0x30f24f,_0x4820f9){rimraf(_0x8a5e27,function(_0xd4403a){if(_0xd4403a)_0x4820f9(_0xd4403a);return _0x30f24f();});});})[_0xcb9b('0x15')](function(){return _0x1f1346[_0xcb9b('0x62')](_0x47ea5c,_0x2be47f,function(_0x353c75){if(_0x353c75){console['log'](_0xcb9b('0x63'),_0x353c75);}else{fs[_0xcb9b('0x64')](_0x47ea5c);}});});});}else{return _0x1f1346['sendStatus'](0xc8);}})[_0xcb9b('0x25')](handleError(_0x1f1346,null));};