9d20d5d6fe3ac2075bd260e4154610f6733fcb9a
[motion2.git] / server / api / analyticMetric / analyticMetric.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 _0x03c0=['findAll','rows','catch','show','params','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','set','Content-Range','apply','reject','update','then','destroy','get','Metrics','UserProfileResource','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0x03c0,0x10d));var _0x003c=function(_0x2c4aef,_0x116fe2){_0x2c4aef=_0x2c4aef-0x0;var _0x3deaed=_0x03c0[_0x2c4aef];return _0x3deaed;};'use strict';var emlformat=require(_0x003c('0x0'));var rimraf=require(_0x003c('0x1'));var zipdir=require(_0x003c('0x2'));var jsonpatch=require(_0x003c('0x3'));var rp=require(_0x003c('0x4'));var moment=require(_0x003c('0x5'));var BPromise=require(_0x003c('0x6'));var Mustache=require(_0x003c('0x7'));var util=require(_0x003c('0x8'));var path=require('path');var sox=require(_0x003c('0x9'));var csv=require(_0x003c('0xa'));var ejs=require(_0x003c('0xb'));var fs=require('fs');var fs_extra=require(_0x003c('0xc'));var _=require(_0x003c('0xd'));var squel=require(_0x003c('0xe'));var crypto=require(_0x003c('0xf'));var jsforce=require(_0x003c('0x10'));var deskjs=require(_0x003c('0x11'));var toCsv=require(_0x003c('0xa'));var querystring=require(_0x003c('0x12'));var Papa=require('papaparse');var Redis=require(_0x003c('0x13'));var authService=require(_0x003c('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x003c('0x15'));var hardwareService=require(_0x003c('0x16'));var logger=require(_0x003c('0x17'))(_0x003c('0x18'));var utils=require('../../config/utils');var config=require(_0x003c('0x19'));var licenseUtil=require(_0x003c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ace5d,_0x13f93a){_0x13f93a=_0x13f93a||0xcc;return function(_0x5cbc44){if(_0x5cbc44){return _0x3ace5d[_0x003c('0x1b')](_0x13f93a);}return _0x3ace5d[_0x003c('0x1c')](_0x13f93a)[_0x003c('0x1d')]();};}function respondWithResult(_0x58e180,_0x521038){_0x521038=_0x521038||0xc8;return function(_0x3de169){if(_0x3de169){return _0x58e180[_0x003c('0x1c')](_0x521038)[_0x003c('0x1e')](_0x3de169);}};}function respondWithFilteredResult(_0x3c4430,_0x111e22){return function(_0x2c4fb5){if(_0x2c4fb5){var _0x59e9bf=_0x2c4fb5['count'],_0x52c079=_0x111e22[_0x003c('0x1f')],_0x31dea6=_0x111e22[_0x003c('0x1f')]+_0x111e22['limit'],_0x20df8f;if(_0x31dea6>=_0x59e9bf){_0x31dea6=_0x59e9bf;_0x20df8f=0xc8;}else{_0x20df8f=0xce;}_0x3c4430[_0x003c('0x1c')](_0x20df8f);return _0x3c4430[_0x003c('0x20')](_0x003c('0x21'),_0x52c079+'-'+_0x31dea6+'/'+_0x59e9bf)['json'](_0x2c4fb5);}return null;};}function patchUpdates(_0x4960ad){return function(_0x18f69b){try{jsonpatch[_0x003c('0x22')](_0x18f69b,_0x4960ad,!![]);}catch(_0x285ba){return BPromise[_0x003c('0x23')](_0x285ba);}return _0x18f69b['save']();};}function saveUpdates(_0x5b0b78,_0x382560){return function(_0x1c1983){if(_0x1c1983){return _0x1c1983[_0x003c('0x24')](_0x5b0b78)[_0x003c('0x25')](function(_0x3de7dd){return _0x3de7dd;});}return null;};}function removeEntity(_0x16a20d,_0x27af02){return function(_0x17b1c3){if(_0x17b1c3){return _0x17b1c3[_0x003c('0x26')]()[_0x003c('0x25')](function(){var _0x40f468=_0x17b1c3[_0x003c('0x27')]({'plain':!![]});var _0x3883d5=_0x003c('0x28');return db[_0x003c('0x29')][_0x003c('0x26')]({'where':{'type':_0x3883d5,'resourceId':_0x40f468['id']}})[_0x003c('0x25')](function(){return _0x17b1c3;});})[_0x003c('0x25')](function(){_0x16a20d[_0x003c('0x1c')](0xcc)[_0x003c('0x1d')]();});}};}function handleEntityNotFound(_0xc1541,_0x2e9171){return function(_0x190229){if(!_0x190229){_0xc1541[_0x003c('0x1b')](0x194);}return _0x190229;};}function handleError(_0x44679f,_0x2adeb7){_0x2adeb7=_0x2adeb7||0x1f4;return function(_0x334618){logger[_0x003c('0x2a')](_0x334618[_0x003c('0x2b')]);if(_0x334618[_0x003c('0x2c')]){delete _0x334618[_0x003c('0x2c')];}_0x44679f[_0x003c('0x1c')](_0x2adeb7)[_0x003c('0x2d')](_0x334618);};}exports[_0x003c('0x2e')]=function(_0x4ada14,_0x58aa65){var _0x188ae4={},_0x485637={},_0x596cca={'count':0x0,'rows':[]};var _0x3cb8db=_[_0x003c('0x2f')](db[_0x003c('0x30')][_0x003c('0x31')],function(_0x47a676){return{'name':_0x47a676['fieldName'],'type':_0x47a676[_0x003c('0x32')][_0x003c('0x33')]};});_0x485637[_0x003c('0x34')]=_['map'](_0x3cb8db,_0x003c('0x2c'));_0x485637['query']=_[_0x003c('0x35')](_0x4ada14[_0x003c('0x36')]);_0x485637[_0x003c('0x37')]=_[_0x003c('0x38')](_0x485637[_0x003c('0x34')],_0x485637['query']);_0x188ae4['attributes']=_['intersection'](_0x485637[_0x003c('0x34')],qs[_0x003c('0x39')](_0x4ada14[_0x003c('0x36')][_0x003c('0x39')]));_0x188ae4[_0x003c('0x3a')]=_0x188ae4[_0x003c('0x3a')]['length']?_0x188ae4[_0x003c('0x3a')]:_0x485637['model'];if(!_0x4ada14[_0x003c('0x36')][_0x003c('0x3b')](_0x003c('0x3c'))){_0x188ae4[_0x003c('0x3d')]=qs['limit'](_0x4ada14[_0x003c('0x36')][_0x003c('0x3d')]);_0x188ae4['offset']=qs['offset'](_0x4ada14[_0x003c('0x36')][_0x003c('0x1f')]);}_0x188ae4['order']=qs['sort'](_0x4ada14[_0x003c('0x36')][_0x003c('0x3e')]);_0x188ae4[_0x003c('0x3f')]=qs[_0x003c('0x37')](_['pick'](_0x4ada14[_0x003c('0x36')],_0x485637['filters']),_0x3cb8db);if(_0x4ada14[_0x003c('0x36')][_0x003c('0x40')]){_0x188ae4['where']=_[_0x003c('0x41')](_0x188ae4[_0x003c('0x3f')],{'$or':_[_0x003c('0x2f')](_0x3cb8db,function(_0x1b7b45){if(_0x1b7b45['type']!==_0x003c('0x42')){var _0x16ac42={};_0x16ac42[_0x1b7b45[_0x003c('0x2c')]]={'$like':'%'+_0x4ada14[_0x003c('0x36')][_0x003c('0x40')]+'%'};return _0x16ac42;}})});}_0x188ae4=_[_0x003c('0x41')]({},_0x188ae4,_0x4ada14[_0x003c('0x43')]);var _0x387ad7={'where':_0x188ae4[_0x003c('0x3f')]};return db[_0x003c('0x30')][_0x003c('0x44')](_0x387ad7)[_0x003c('0x25')](function(_0x4b33c4){_0x596cca['count']=_0x4b33c4;if(_0x4ada14[_0x003c('0x36')][_0x003c('0x45')]){_0x188ae4[_0x003c('0x46')]=[{'all':!![]}];}return db[_0x003c('0x30')][_0x003c('0x47')](_0x188ae4);})[_0x003c('0x25')](function(_0x335575){_0x596cca[_0x003c('0x48')]=_0x335575;return _0x596cca;})[_0x003c('0x25')](respondWithFilteredResult(_0x58aa65,_0x188ae4))[_0x003c('0x49')](handleError(_0x58aa65,null));};exports[_0x003c('0x4a')]=function(_0x4cd210,_0x18b768){var _0x27f196={'raw':!![],'where':{'id':_0x4cd210[_0x003c('0x4b')]['id']}},_0x3686fb={};_0x3686fb[_0x003c('0x34')]=_[_0x003c('0x35')](db[_0x003c('0x30')][_0x003c('0x31')]);_0x3686fb[_0x003c('0x36')]=_[_0x003c('0x35')](_0x4cd210[_0x003c('0x36')]);_0x3686fb[_0x003c('0x37')]=_[_0x003c('0x38')](_0x3686fb[_0x003c('0x34')],_0x3686fb[_0x003c('0x36')]);_0x27f196[_0x003c('0x3a')]=_[_0x003c('0x38')](_0x3686fb[_0x003c('0x34')],qs[_0x003c('0x39')](_0x4cd210['query'][_0x003c('0x39')]));_0x27f196[_0x003c('0x3a')]=_0x27f196[_0x003c('0x3a')][_0x003c('0x4c')]?_0x27f196[_0x003c('0x3a')]:_0x3686fb[_0x003c('0x34')];if(_0x4cd210['query'][_0x003c('0x45')]){_0x27f196[_0x003c('0x46')]=[{'all':!![]}];}_0x27f196=_[_0x003c('0x41')]({},_0x27f196,_0x4cd210['options']);return db[_0x003c('0x30')][_0x003c('0x4d')](_0x27f196)[_0x003c('0x25')](handleEntityNotFound(_0x18b768,null))[_0x003c('0x25')](respondWithResult(_0x18b768,null))['catch'](handleError(_0x18b768,null));};exports[_0x003c('0x4e')]=function(_0x2db00d,_0x493664){return db[_0x003c('0x30')][_0x003c('0x4e')](_0x2db00d[_0x003c('0x4f')],{})[_0x003c('0x25')](function(_0x103358){var _0x4cf6f9=_0x2db00d['user']['get']({'plain':!![]});if(!_0x4cf6f9)throw new Error(_0x003c('0x50'));if(_0x4cf6f9[_0x003c('0x51')]==='user'){var _0x327937=_0x103358[_0x003c('0x27')]({'plain':!![]});var _0x26a9f2='Metrics';return db[_0x003c('0x52')][_0x003c('0x4d')]({'where':{'name':_0x26a9f2,'userProfileId':_0x4cf6f9[_0x003c('0x53')]},'raw':!![]})[_0x003c('0x25')](function(_0x3b19ba){if(_0x3b19ba&&_0x3b19ba[_0x003c('0x54')]===0x0){return db['UserProfileResource'][_0x003c('0x4e')]({'name':_0x327937[_0x003c('0x2c')],'resourceId':_0x327937['id'],'type':_0x3b19ba[_0x003c('0x2c')],'sectionId':_0x3b19ba['id']},{})['then'](function(){return _0x103358;});}else{return _0x103358;}})[_0x003c('0x49')](function(_0x22c669){logger[_0x003c('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x22c669);throw _0x22c669;});}return _0x103358;})[_0x003c('0x25')](respondWithResult(_0x493664,0xc9))[_0x003c('0x49')](handleError(_0x493664,null));};exports[_0x003c('0x24')]=function(_0x4b21ae,_0x836d1b){if(_0x4b21ae[_0x003c('0x4f')]['id']){delete _0x4b21ae[_0x003c('0x4f')]['id'];}return db[_0x003c('0x30')][_0x003c('0x4d')]({'where':{'id':_0x4b21ae['params']['id']}})['then'](handleEntityNotFound(_0x836d1b,null))['then'](saveUpdates(_0x4b21ae[_0x003c('0x4f')],null))[_0x003c('0x25')](respondWithResult(_0x836d1b,null))['catch'](handleError(_0x836d1b,null));};exports[_0x003c('0x26')]=function(_0x3609c2,_0x19fe6c){return db[_0x003c('0x30')]['find']({'where':{'id':_0x3609c2[_0x003c('0x4b')]['id']}})[_0x003c('0x25')](handleEntityNotFound(_0x19fe6c,null))['then'](removeEntity(_0x19fe6c,null))[_0x003c('0x49')](handleError(_0x19fe6c,null));};