ef639009d93547f8c6b9823acf4402f1ff8f496b
[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 _0xee35=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','status','json','limit','undefined','count','offset','Content-Range','apply','update','then','destroy','Metrics','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','AnalyticMetric','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox'];(function(_0x821901,_0x997682){var _0x477232=function(_0x541798){while(--_0x541798){_0x821901['push'](_0x821901['shift']());}};_0x477232(++_0x997682);}(_0xee35,0xa4));var _0x5ee3=function(_0x26f4a4,_0xeb0dc6){_0x26f4a4=_0x26f4a4-0x0;var _0x437404=_0xee35[_0x26f4a4];return _0x437404;};'use strict';var emlformat=require(_0x5ee3('0x0'));var rimraf=require(_0x5ee3('0x1'));var zipdir=require(_0x5ee3('0x2'));var jsonpatch=require(_0x5ee3('0x3'));var rp=require('request-promise');var moment=require(_0x5ee3('0x4'));var BPromise=require(_0x5ee3('0x5'));var Mustache=require(_0x5ee3('0x6'));var util=require(_0x5ee3('0x7'));var path=require(_0x5ee3('0x8'));var sox=require(_0x5ee3('0x9'));var csv=require(_0x5ee3('0xa'));var ejs=require(_0x5ee3('0xb'));var fs=require('fs');var fs_extra=require(_0x5ee3('0xc'));var _=require(_0x5ee3('0xd'));var squel=require(_0x5ee3('0xe'));var crypto=require(_0x5ee3('0xf'));var jsforce=require(_0x5ee3('0x10'));var deskjs=require(_0x5ee3('0x11'));var toCsv=require(_0x5ee3('0xa'));var querystring=require(_0x5ee3('0x12'));var Papa=require(_0x5ee3('0x13'));var Redis=require(_0x5ee3('0x14'));var authService=require(_0x5ee3('0x15'));var qs=require(_0x5ee3('0x16'));var as=require(_0x5ee3('0x17'));var hardwareService=require(_0x5ee3('0x18'));var logger=require(_0x5ee3('0x19'))('api');var utils=require(_0x5ee3('0x1a'));var config=require(_0x5ee3('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x238206,_0x360328){_0x360328=_0x360328||0xcc;return function(_0x52a351){if(_0x52a351){return _0x238206['sendStatus'](_0x360328);}return _0x238206[_0x5ee3('0x1c')](_0x360328)['end']();};}function respondWithResult(_0x238c3c,_0x5f3779){_0x5f3779=_0x5f3779||0xc8;return function(_0x34b573){if(_0x34b573){return _0x238c3c[_0x5ee3('0x1c')](_0x5f3779)[_0x5ee3('0x1d')](_0x34b573);}};}function respondWithFilteredResult(_0x195355,_0x2f4922){return function(_0x215597){if(_0x215597){var _0x5c3834=typeof _0x2f4922['offset']==='undefined'&&typeof _0x2f4922[_0x5ee3('0x1e')]===_0x5ee3('0x1f');var _0xa8d1a8=_0x215597[_0x5ee3('0x20')];var _0x262933=_0x5c3834?0x0:_0x2f4922[_0x5ee3('0x21')];var _0x2fb354=_0x5c3834?_0x215597['count']:_0x2f4922[_0x5ee3('0x21')]+_0x2f4922['limit'];var _0x484c6c;if(_0x2fb354>=_0xa8d1a8){_0x2fb354=_0xa8d1a8;_0x484c6c=0xc8;}else{_0x484c6c=0xce;}_0x195355[_0x5ee3('0x1c')](_0x484c6c);return _0x195355['set'](_0x5ee3('0x22'),_0x262933+'-'+_0x2fb354+'/'+_0xa8d1a8)[_0x5ee3('0x1d')](_0x215597);}return null;};}function patchUpdates(_0x500b5f){return function(_0x2c353d){try{jsonpatch[_0x5ee3('0x23')](_0x2c353d,_0x500b5f,!![]);}catch(_0x16f03f){return BPromise['reject'](_0x16f03f);}return _0x2c353d['save']();};}function saveUpdates(_0x5e7f60,_0x20451b){return function(_0x486329){if(_0x486329){return _0x486329[_0x5ee3('0x24')](_0x5e7f60)[_0x5ee3('0x25')](function(_0x53f8f3){return _0x53f8f3;});}return null;};}function removeEntity(_0x1c8015,_0x247e39){return function(_0x46ee93){if(_0x46ee93){return _0x46ee93[_0x5ee3('0x26')]()[_0x5ee3('0x25')](function(){var _0x4187de=_0x46ee93['get']({'plain':!![]});var _0x262322=_0x5ee3('0x27');return db['UserProfileResource'][_0x5ee3('0x26')]({'where':{'type':_0x262322,'resourceId':_0x4187de['id']}})[_0x5ee3('0x25')](function(){return _0x46ee93;});})[_0x5ee3('0x25')](function(){_0x1c8015[_0x5ee3('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3bbcdc,_0x3bb8e6){return function(_0xd2fdd1){if(!_0xd2fdd1){_0x3bbcdc[_0x5ee3('0x28')](0x194);}return _0xd2fdd1;};}function handleError(_0x46a1f0,_0x5306e0){_0x5306e0=_0x5306e0||0x1f4;return function(_0x2669c3){logger[_0x5ee3('0x29')](_0x2669c3[_0x5ee3('0x2a')]);if(_0x2669c3[_0x5ee3('0x2b')]){delete _0x2669c3['name'];}_0x46a1f0[_0x5ee3('0x1c')](_0x5306e0)[_0x5ee3('0x2c')](_0x2669c3);};}exports[_0x5ee3('0x2d')]=function(_0xeeca0c,_0x585fa3){var _0x111f50={},_0xabc41b={},_0x51f1e4={'count':0x0,'rows':[]};var _0x533e8f=_['map'](db['AnalyticMetric'][_0x5ee3('0x2e')],function(_0x370ae7){return{'name':_0x370ae7[_0x5ee3('0x2f')],'type':_0x370ae7[_0x5ee3('0x30')]['key']};});_0xabc41b[_0x5ee3('0x31')]=_[_0x5ee3('0x32')](_0x533e8f,_0x5ee3('0x2b'));_0xabc41b['query']=_[_0x5ee3('0x33')](_0xeeca0c[_0x5ee3('0x34')]);_0xabc41b[_0x5ee3('0x35')]=_[_0x5ee3('0x36')](_0xabc41b[_0x5ee3('0x31')],_0xabc41b['query']);_0x111f50['attributes']=_['intersection'](_0xabc41b[_0x5ee3('0x31')],qs[_0x5ee3('0x37')](_0xeeca0c[_0x5ee3('0x34')][_0x5ee3('0x37')]));_0x111f50[_0x5ee3('0x38')]=_0x111f50[_0x5ee3('0x38')][_0x5ee3('0x39')]?_0x111f50[_0x5ee3('0x38')]:_0xabc41b['model'];if(!_0xeeca0c['query'][_0x5ee3('0x3a')](_0x5ee3('0x3b'))){_0x111f50[_0x5ee3('0x1e')]=qs['limit'](_0xeeca0c['query'][_0x5ee3('0x1e')]);_0x111f50['offset']=qs[_0x5ee3('0x21')](_0xeeca0c['query'][_0x5ee3('0x21')]);}_0x111f50[_0x5ee3('0x3c')]=qs[_0x5ee3('0x3d')](_0xeeca0c[_0x5ee3('0x34')][_0x5ee3('0x3d')]);_0x111f50[_0x5ee3('0x3e')]=qs[_0x5ee3('0x35')](_[_0x5ee3('0x3f')](_0xeeca0c[_0x5ee3('0x34')],_0xabc41b[_0x5ee3('0x35')]),_0x533e8f);if(_0xeeca0c['query'][_0x5ee3('0x40')]){_0x111f50[_0x5ee3('0x3e')]=_[_0x5ee3('0x41')](_0x111f50[_0x5ee3('0x3e')],{'$or':_[_0x5ee3('0x32')](_0x533e8f,function(_0x2335e0){if(_0x2335e0[_0x5ee3('0x30')]!==_0x5ee3('0x42')){var _0x4ce5a3={};_0x4ce5a3[_0x2335e0['name']]={'$like':'%'+_0xeeca0c['query']['filter']+'%'};return _0x4ce5a3;}})});}_0x111f50=_[_0x5ee3('0x41')]({},_0x111f50,_0xeeca0c['options']);var _0x1ec766={'where':_0x111f50['where']};return db[_0x5ee3('0x43')][_0x5ee3('0x20')](_0x1ec766)[_0x5ee3('0x25')](function(_0x19721a){_0x51f1e4['count']=_0x19721a;if(_0xeeca0c[_0x5ee3('0x34')][_0x5ee3('0x44')]){_0x111f50['include']=[{'all':!![]}];}return db[_0x5ee3('0x43')][_0x5ee3('0x45')](_0x111f50);})['then'](function(_0xf79a85){_0x51f1e4[_0x5ee3('0x46')]=_0xf79a85;return _0x51f1e4;})[_0x5ee3('0x25')](respondWithFilteredResult(_0x585fa3,_0x111f50))[_0x5ee3('0x47')](handleError(_0x585fa3,null));};exports[_0x5ee3('0x48')]=function(_0x5f3302,_0x3d2fbf){var _0x45cfe5={'raw':!![],'where':{'id':_0x5f3302[_0x5ee3('0x49')]['id']}},_0x46a9ff={};_0x46a9ff[_0x5ee3('0x31')]=_['keys'](db['AnalyticMetric'][_0x5ee3('0x2e')]);_0x46a9ff[_0x5ee3('0x34')]=_[_0x5ee3('0x33')](_0x5f3302[_0x5ee3('0x34')]);_0x46a9ff[_0x5ee3('0x35')]=_[_0x5ee3('0x36')](_0x46a9ff[_0x5ee3('0x31')],_0x46a9ff['query']);_0x45cfe5[_0x5ee3('0x38')]=_[_0x5ee3('0x36')](_0x46a9ff['model'],qs['fields'](_0x5f3302[_0x5ee3('0x34')][_0x5ee3('0x37')]));_0x45cfe5[_0x5ee3('0x38')]=_0x45cfe5['attributes']['length']?_0x45cfe5[_0x5ee3('0x38')]:_0x46a9ff[_0x5ee3('0x31')];if(_0x5f3302[_0x5ee3('0x34')][_0x5ee3('0x44')]){_0x45cfe5[_0x5ee3('0x4a')]=[{'all':!![]}];}_0x45cfe5=_[_0x5ee3('0x41')]({},_0x45cfe5,_0x5f3302[_0x5ee3('0x4b')]);return db[_0x5ee3('0x43')][_0x5ee3('0x4c')](_0x45cfe5)[_0x5ee3('0x25')](handleEntityNotFound(_0x3d2fbf,null))[_0x5ee3('0x25')](respondWithResult(_0x3d2fbf,null))[_0x5ee3('0x47')](handleError(_0x3d2fbf,null));};exports[_0x5ee3('0x4d')]=function(_0x2edaad,_0x1b23f4){return db['AnalyticMetric'][_0x5ee3('0x4d')](_0x2edaad[_0x5ee3('0x4e')],{})[_0x5ee3('0x25')](function(_0x2446c8){var _0x4fd0e8=_0x2edaad[_0x5ee3('0x4f')]['get']({'plain':!![]});if(!_0x4fd0e8)throw new Error(_0x5ee3('0x50'));if(_0x4fd0e8[_0x5ee3('0x51')]===_0x5ee3('0x4f')){var _0x5edfac=_0x2446c8[_0x5ee3('0x52')]({'plain':!![]});var _0x347dc9=_0x5ee3('0x27');return db[_0x5ee3('0x53')][_0x5ee3('0x4c')]({'where':{'name':_0x347dc9,'userProfileId':_0x4fd0e8[_0x5ee3('0x54')]},'raw':!![]})[_0x5ee3('0x25')](function(_0x5dd02e){if(_0x5dd02e&&_0x5dd02e[_0x5ee3('0x55')]===0x0){return db[_0x5ee3('0x56')][_0x5ee3('0x4d')]({'name':_0x5edfac[_0x5ee3('0x2b')],'resourceId':_0x5edfac['id'],'type':_0x5dd02e[_0x5ee3('0x2b')],'sectionId':_0x5dd02e['id']},{})[_0x5ee3('0x25')](function(){return _0x2446c8;});}else{return _0x2446c8;}})[_0x5ee3('0x47')](function(_0x625430){logger[_0x5ee3('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x625430);throw _0x625430;});}return _0x2446c8;})[_0x5ee3('0x25')](respondWithResult(_0x1b23f4,0xc9))[_0x5ee3('0x47')](handleError(_0x1b23f4,null));};exports[_0x5ee3('0x24')]=function(_0x2c2d24,_0x3f8a01){if(_0x2c2d24[_0x5ee3('0x4e')]['id']){delete _0x2c2d24[_0x5ee3('0x4e')]['id'];}return db[_0x5ee3('0x43')]['find']({'where':{'id':_0x2c2d24[_0x5ee3('0x49')]['id']}})[_0x5ee3('0x25')](handleEntityNotFound(_0x3f8a01,null))['then'](saveUpdates(_0x2c2d24[_0x5ee3('0x4e')],null))[_0x5ee3('0x25')](respondWithResult(_0x3f8a01,null))['catch'](handleError(_0x3f8a01,null));};exports['destroy']=function(_0x1d6968,_0x2114a7){return db['AnalyticMetric'][_0x5ee3('0x4c')]({'where':{'id':_0x1d6968[_0x5ee3('0x49')]['id']}})['then'](handleEntityNotFound(_0x2114a7,null))[_0x5ee3('0x25')](removeEntity(_0x2114a7,null))['catch'](handleError(_0x2114a7,null));};