99ee593695e3121d9f68a4a7cf243035aa182512
[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 _0x8e23=['update','destroy','then','get','Metrics','UserProfileResource','end','name','index','map','AnalyticMetric','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','count','includeAll','include','findAll','rows','catch','show','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','Content-Range','reject'];(function(_0x13f03f,_0xc4546b){var _0x5253d0=function(_0x4d2c93){while(--_0x4d2c93){_0x13f03f['push'](_0x13f03f['shift']());}};_0x5253d0(++_0xc4546b);}(_0x8e23,0x80));var _0x38e2=function(_0xbba55c,_0x45fb1f){_0xbba55c=_0xbba55c-0x0;var _0x41aa53=_0x8e23[_0xbba55c];return _0x41aa53;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x38e2('0x0'));var rimraf=require(_0x38e2('0x1'));var zipdir=require(_0x38e2('0x2'));var jsonpatch=require(_0x38e2('0x3'));var rp=require(_0x38e2('0x4'));var moment=require('moment');var BPromise=require(_0x38e2('0x5'));var Mustache=require(_0x38e2('0x6'));var util=require(_0x38e2('0x7'));var path=require(_0x38e2('0x8'));var sox=require('sox');var csv=require(_0x38e2('0x9'));var ejs=require(_0x38e2('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x38e2('0xb'));var crypto=require('crypto');var jsforce=require(_0x38e2('0xc'));var deskjs=require(_0x38e2('0xd'));var toCsv=require(_0x38e2('0x9'));var querystring=require(_0x38e2('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x38e2('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x38e2('0x10'));var hardwareService=require(_0x38e2('0x11'));var logger=require(_0x38e2('0x12'))(_0x38e2('0x13'));var utils=require(_0x38e2('0x14'));var config=require(_0x38e2('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x38e2('0x16'))['db'];function respondWithStatusCode(_0x208f61,_0x19aac7){_0x19aac7=_0x19aac7||0xcc;return function(_0x22e4ff){if(_0x22e4ff){return _0x208f61[_0x38e2('0x17')](_0x19aac7);}return _0x208f61[_0x38e2('0x18')](_0x19aac7)['end']();};}function respondWithResult(_0x37b39b,_0x25a371){_0x25a371=_0x25a371||0xc8;return function(_0x18f62b){if(_0x18f62b){return _0x37b39b['status'](_0x25a371)[_0x38e2('0x19')](_0x18f62b);}};}function respondWithFilteredResult(_0x35d934,_0x1c15c9){return function(_0x4fd0ee){if(_0x4fd0ee){var _0x53bb6b=_0x4fd0ee['count'],_0x2414f5=_0x1c15c9[_0x38e2('0x1a')],_0x147a95=_0x1c15c9[_0x38e2('0x1a')]+_0x1c15c9[_0x38e2('0x1b')],_0x554d2a;if(_0x147a95>=_0x53bb6b){_0x147a95=_0x53bb6b;_0x554d2a=0xc8;}else{_0x554d2a=0xce;}_0x35d934['status'](_0x554d2a);return _0x35d934['set'](_0x38e2('0x1c'),_0x2414f5+'-'+_0x147a95+'/'+_0x53bb6b)[_0x38e2('0x19')](_0x4fd0ee);}return null;};}function patchUpdates(_0x22e2c1){return function(_0x4da258){try{jsonpatch['apply'](_0x4da258,_0x22e2c1,!![]);}catch(_0x2b30c0){return BPromise[_0x38e2('0x1d')](_0x2b30c0);}return _0x4da258['save']();};}function saveUpdates(_0x918c72,_0x722636){return function(_0x43ca81){if(_0x43ca81){return _0x43ca81[_0x38e2('0x1e')](_0x918c72)['then'](function(_0x464257){return _0x464257;});}return null;};}function removeEntity(_0x5481df,_0x2c18fb){return function(_0x55f5c6){if(_0x55f5c6){return _0x55f5c6[_0x38e2('0x1f')]()[_0x38e2('0x20')](function(){var _0xebb829=_0x55f5c6[_0x38e2('0x21')]({'plain':!![]});var _0x3ee082=_0x38e2('0x22');return db[_0x38e2('0x23')][_0x38e2('0x1f')]({'where':{'type':_0x3ee082,'resourceId':_0xebb829['id']}})[_0x38e2('0x20')](function(){return _0x55f5c6;});})[_0x38e2('0x20')](function(){_0x5481df[_0x38e2('0x18')](0xcc)[_0x38e2('0x24')]();});}};}function handleEntityNotFound(_0x197ec5,_0x381c91){return function(_0x1253ef){if(!_0x1253ef){_0x197ec5['sendStatus'](0x194);}return _0x1253ef;};}function handleError(_0x55901c,_0x3297b7){_0x3297b7=_0x3297b7||0x1f4;return function(_0xd69f06){logger['error'](_0xd69f06['stack']);if(_0xd69f06[_0x38e2('0x25')]){delete _0xd69f06[_0x38e2('0x25')];}_0x55901c['status'](_0x3297b7)['send'](_0xd69f06);};}exports[_0x38e2('0x26')]=function(_0x2d2731,_0x3be71c){var _0x21f2c4={},_0x2e6888={},_0x2744c7={'count':0x0,'rows':[]};var _0x81e4db=_[_0x38e2('0x27')](db[_0x38e2('0x28')][_0x38e2('0x29')],function(_0x2fd9e6){return{'name':_0x2fd9e6[_0x38e2('0x2a')],'type':_0x2fd9e6[_0x38e2('0x2b')]['key']};});_0x2e6888[_0x38e2('0x2c')]=_[_0x38e2('0x27')](_0x81e4db,_0x38e2('0x25'));_0x2e6888['query']=_[_0x38e2('0x2d')](_0x2d2731[_0x38e2('0x2e')]);_0x2e6888[_0x38e2('0x2f')]=_[_0x38e2('0x30')](_0x2e6888['model'],_0x2e6888[_0x38e2('0x2e')]);_0x21f2c4[_0x38e2('0x31')]=_[_0x38e2('0x30')](_0x2e6888['model'],qs[_0x38e2('0x32')](_0x2d2731[_0x38e2('0x2e')][_0x38e2('0x32')]));_0x21f2c4[_0x38e2('0x31')]=_0x21f2c4[_0x38e2('0x31')][_0x38e2('0x33')]?_0x21f2c4[_0x38e2('0x31')]:_0x2e6888['model'];if(!_0x2d2731[_0x38e2('0x2e')][_0x38e2('0x34')](_0x38e2('0x35'))){_0x21f2c4[_0x38e2('0x1b')]=qs[_0x38e2('0x1b')](_0x2d2731[_0x38e2('0x2e')][_0x38e2('0x1b')]);_0x21f2c4[_0x38e2('0x1a')]=qs[_0x38e2('0x1a')](_0x2d2731[_0x38e2('0x2e')][_0x38e2('0x1a')]);}_0x21f2c4[_0x38e2('0x36')]=qs[_0x38e2('0x37')](_0x2d2731[_0x38e2('0x2e')][_0x38e2('0x37')]);_0x21f2c4[_0x38e2('0x38')]=qs[_0x38e2('0x2f')](_[_0x38e2('0x39')](_0x2d2731[_0x38e2('0x2e')],_0x2e6888[_0x38e2('0x2f')]),_0x81e4db);if(_0x2d2731[_0x38e2('0x2e')]['filter']){_0x21f2c4[_0x38e2('0x38')]=_[_0x38e2('0x3a')](_0x21f2c4[_0x38e2('0x38')],{'$or':_[_0x38e2('0x27')](_0x81e4db,function(_0x249a06){if(_0x249a06[_0x38e2('0x2b')]!=='VIRTUAL'){var _0x38bd5f={};_0x38bd5f[_0x249a06['name']]={'$like':'%'+_0x2d2731[_0x38e2('0x2e')][_0x38e2('0x3b')]+'%'};return _0x38bd5f;}})});}_0x21f2c4=_[_0x38e2('0x3a')]({},_0x21f2c4,_0x2d2731[_0x38e2('0x3c')]);var _0x5d66ce={'where':_0x21f2c4[_0x38e2('0x38')]};return db[_0x38e2('0x28')][_0x38e2('0x3d')](_0x5d66ce)[_0x38e2('0x20')](function(_0x5455c9){_0x2744c7['count']=_0x5455c9;if(_0x2d2731[_0x38e2('0x2e')][_0x38e2('0x3e')]){_0x21f2c4[_0x38e2('0x3f')]=[{'all':!![]}];}return db[_0x38e2('0x28')][_0x38e2('0x40')](_0x21f2c4);})[_0x38e2('0x20')](function(_0x590059){_0x2744c7[_0x38e2('0x41')]=_0x590059;return _0x2744c7;})['then'](respondWithFilteredResult(_0x3be71c,_0x21f2c4))[_0x38e2('0x42')](handleError(_0x3be71c,null));};exports[_0x38e2('0x43')]=function(_0x2b25b2,_0x5225d7){var _0x57192c={'raw':!![],'where':{'id':_0x2b25b2['params']['id']}},_0x363ef5={};_0x363ef5['model']=_[_0x38e2('0x2d')](db[_0x38e2('0x28')][_0x38e2('0x29')]);_0x363ef5[_0x38e2('0x2e')]=_[_0x38e2('0x2d')](_0x2b25b2[_0x38e2('0x2e')]);_0x363ef5[_0x38e2('0x2f')]=_[_0x38e2('0x30')](_0x363ef5[_0x38e2('0x2c')],_0x363ef5[_0x38e2('0x2e')]);_0x57192c[_0x38e2('0x31')]=_['intersection'](_0x363ef5[_0x38e2('0x2c')],qs[_0x38e2('0x32')](_0x2b25b2[_0x38e2('0x2e')]['fields']));_0x57192c[_0x38e2('0x31')]=_0x57192c['attributes'][_0x38e2('0x33')]?_0x57192c[_0x38e2('0x31')]:_0x363ef5['model'];if(_0x2b25b2[_0x38e2('0x2e')][_0x38e2('0x3e')]){_0x57192c[_0x38e2('0x3f')]=[{'all':!![]}];}_0x57192c=_[_0x38e2('0x3a')]({},_0x57192c,_0x2b25b2[_0x38e2('0x3c')]);return db['AnalyticMetric'][_0x38e2('0x44')](_0x57192c)[_0x38e2('0x20')](handleEntityNotFound(_0x5225d7,null))[_0x38e2('0x20')](respondWithResult(_0x5225d7,null))['catch'](handleError(_0x5225d7,null));};exports[_0x38e2('0x45')]=function(_0xbaea5b,_0x3cd286){return db[_0x38e2('0x28')][_0x38e2('0x45')](_0xbaea5b[_0x38e2('0x46')],{})['then'](function(_0x17828f){var _0x1f51d2=_0xbaea5b[_0x38e2('0x47')][_0x38e2('0x21')]({'plain':!![]});if(!_0x1f51d2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f51d2[_0x38e2('0x48')]===_0x38e2('0x47')){var _0x5a7d4d=_0x17828f['get']({'plain':!![]});var _0x3ae6f9=_0x38e2('0x22');return db[_0x38e2('0x49')][_0x38e2('0x44')]({'where':{'name':_0x3ae6f9,'userProfileId':_0x1f51d2[_0x38e2('0x4a')]},'raw':!![]})[_0x38e2('0x20')](function(_0x2a2c67){if(_0x2a2c67&&_0x2a2c67[_0x38e2('0x4b')]===0x0){return db[_0x38e2('0x23')][_0x38e2('0x45')]({'name':_0x5a7d4d['name'],'resourceId':_0x5a7d4d['id'],'type':_0x2a2c67['name'],'sectionId':_0x2a2c67['id']},{})['then'](function(){return _0x17828f;});}else{return _0x17828f;}})['catch'](function(_0x108634){logger[_0x38e2('0x4c')](_0x38e2('0x4d'),_0x108634);throw _0x108634;});}return _0x17828f;})[_0x38e2('0x20')](respondWithResult(_0x3cd286,0xc9))[_0x38e2('0x42')](handleError(_0x3cd286,null));};exports[_0x38e2('0x1e')]=function(_0x442c69,_0x1e1366){if(_0x442c69['body']['id']){delete _0x442c69[_0x38e2('0x46')]['id'];}return db[_0x38e2('0x28')][_0x38e2('0x44')]({'where':{'id':_0x442c69[_0x38e2('0x4e')]['id']}})[_0x38e2('0x20')](handleEntityNotFound(_0x1e1366,null))[_0x38e2('0x20')](saveUpdates(_0x442c69[_0x38e2('0x46')],null))[_0x38e2('0x20')](respondWithResult(_0x1e1366,null))[_0x38e2('0x42')](handleError(_0x1e1366,null));};exports[_0x38e2('0x1f')]=function(_0x4d2c52,_0x59f044){return db['AnalyticMetric'][_0x38e2('0x44')]({'where':{'id':_0x4d2c52[_0x38e2('0x4e')]['id']}})[_0x38e2('0x20')](handleEntityNotFound(_0x59f044,null))[_0x38e2('0x20')](removeEntity(_0x59f044,null))[_0x38e2('0x42')](handleError(_0x59f044,null));};