caa926a0549c5c64842d897246ec663e9cb5c3cc
[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 _0xca4c=['AnalyticMetric','rawAttributes','type','model','query','filters','attributes','intersection','fields','nolimit','limit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','keys','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','html-pdf','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','error','name','send','index','map'];(function(_0x19c6ed,_0x45860d){var _0xb36e60=function(_0x154391){while(--_0x154391){_0x19c6ed['push'](_0x19c6ed['shift']());}};_0xb36e60(++_0x45860d);}(_0xca4c,0x70));var _0xcca4=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xca4c[_0x30ae5e];return _0x1f2e93;};'use strict';var pdf=require(_0xcca4('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xcca4('0x1'));var zipdir=require(_0xcca4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcca4('0x3'));var moment=require(_0xcca4('0x4'));var BPromise=require(_0xcca4('0x5'));var Mustache=require(_0xcca4('0x6'));var util=require(_0xcca4('0x7'));var path=require(_0xcca4('0x8'));var sox=require(_0xcca4('0x9'));var csv=require(_0xcca4('0xa'));var ejs=require(_0xcca4('0xb'));var fs=require('fs');var _=require(_0xcca4('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcca4('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcca4('0xe'));var qs=require(_0xcca4('0xf'));var as=require(_0xcca4('0x10'));var hardwareService=require(_0xcca4('0x11'));var logger=require(_0xcca4('0x12'))(_0xcca4('0x13'));var utils=require('../../config/utils');var config=require(_0xcca4('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xcca4('0x15'))['db'];function respondWithStatusCode(_0x123b14,_0xd39fb5){_0xd39fb5=_0xd39fb5||0xcc;return function(_0x3aa56e){if(_0x3aa56e){return _0x123b14['sendStatus'](_0xd39fb5);}return _0x123b14[_0xcca4('0x16')](_0xd39fb5)[_0xcca4('0x17')]();};}function respondWithResult(_0x3154ab,_0xc19644){_0xc19644=_0xc19644||0xc8;return function(_0x5f2dc6){if(_0x5f2dc6){return _0x3154ab['status'](_0xc19644)[_0xcca4('0x18')](_0x5f2dc6);}};}function respondWithFilteredResult(_0x3b1136,_0x54f45c){return function(_0x3f2afa){if(_0x3f2afa){var _0x2b6789=_0x3f2afa[_0xcca4('0x19')],_0x303822=_0x54f45c[_0xcca4('0x1a')],_0x25aaeb=_0x54f45c[_0xcca4('0x1a')]+_0x54f45c['limit'],_0x186708;if(_0x25aaeb>=_0x2b6789){_0x25aaeb=_0x2b6789;_0x186708=0xc8;}else{_0x186708=0xce;}_0x3b1136[_0xcca4('0x16')](_0x186708);return _0x3b1136[_0xcca4('0x1b')](_0xcca4('0x1c'),_0x303822+'-'+_0x25aaeb+'/'+_0x2b6789)[_0xcca4('0x18')](_0x3f2afa);}return null;};}function patchUpdates(_0xe4b798){return function(_0x427247){try{jsonpatch[_0xcca4('0x1d')](_0x427247,_0xe4b798,!![]);}catch(_0x25e0d2){return BPromise[_0xcca4('0x1e')](_0x25e0d2);}return _0x427247[_0xcca4('0x1f')]();};}function saveUpdates(_0x45e486,_0x16e0f0){return function(_0x3a41d1){if(_0x3a41d1){return _0x3a41d1[_0xcca4('0x20')](_0x45e486)[_0xcca4('0x21')](function(_0x3bb1d3){return _0x3bb1d3;});}return null;};}function removeEntity(_0x31235a,_0x3a841b){return function(_0x4a2be9){if(_0x4a2be9){return _0x4a2be9[_0xcca4('0x22')]()[_0xcca4('0x21')](function(){var _0x5f40e0=_0x4a2be9[_0xcca4('0x23')]({'plain':!![]});var _0x47ff3b=_0xcca4('0x24');return db[_0xcca4('0x25')][_0xcca4('0x22')]({'where':{'type':_0x47ff3b,'resourceId':_0x5f40e0['id']}})[_0xcca4('0x21')](function(){return _0x4a2be9;});})[_0xcca4('0x21')](function(){_0x31235a[_0xcca4('0x16')](0xcc)[_0xcca4('0x17')]();});}};}function handleEntityNotFound(_0x3dfe00,_0x257ec5){return function(_0x3270fc){if(!_0x3270fc){_0x3dfe00[_0xcca4('0x26')](0x194);}return _0x3270fc;};}function handleError(_0x4a86b8,_0x147fbb){_0x147fbb=_0x147fbb||0x1f4;return function(_0x389ff7){logger[_0xcca4('0x27')](_0x389ff7['stack']);if(_0x389ff7[_0xcca4('0x28')]){delete _0x389ff7[_0xcca4('0x28')];}_0x4a86b8[_0xcca4('0x16')](_0x147fbb)[_0xcca4('0x29')](_0x389ff7);};}exports[_0xcca4('0x2a')]=function(_0x1a4f08,_0x1d599e){var _0x18fc1a={},_0x38a36f={},_0x1ad684={'count':0x0,'rows':[]};var _0x301fae=_[_0xcca4('0x2b')](db[_0xcca4('0x2c')][_0xcca4('0x2d')],function(_0x3d79fd){return{'name':_0x3d79fd['fieldName'],'type':_0x3d79fd[_0xcca4('0x2e')]['key']};});_0x38a36f[_0xcca4('0x2f')]=_[_0xcca4('0x2b')](_0x301fae,'name');_0x38a36f[_0xcca4('0x30')]=_['keys'](_0x1a4f08[_0xcca4('0x30')]);_0x38a36f[_0xcca4('0x31')]=_['intersection'](_0x38a36f[_0xcca4('0x2f')],_0x38a36f['query']);_0x18fc1a[_0xcca4('0x32')]=_[_0xcca4('0x33')](_0x38a36f['model'],qs[_0xcca4('0x34')](_0x1a4f08['query'][_0xcca4('0x34')]));_0x18fc1a[_0xcca4('0x32')]=_0x18fc1a['attributes']['length']?_0x18fc1a['attributes']:_0x38a36f[_0xcca4('0x2f')];if(!_0x1a4f08['query']['hasOwnProperty'](_0xcca4('0x35'))){_0x18fc1a['limit']=qs['limit'](_0x1a4f08['query'][_0xcca4('0x36')]);_0x18fc1a[_0xcca4('0x1a')]=qs[_0xcca4('0x1a')](_0x1a4f08[_0xcca4('0x30')][_0xcca4('0x1a')]);}_0x18fc1a[_0xcca4('0x37')]=qs['sort'](_0x1a4f08[_0xcca4('0x30')][_0xcca4('0x38')]);_0x18fc1a[_0xcca4('0x39')]=qs[_0xcca4('0x31')](_['pick'](_0x1a4f08[_0xcca4('0x30')],_0x38a36f[_0xcca4('0x31')]),_0x301fae);if(_0x1a4f08['query']['filter']){_0x18fc1a['where']=_[_0xcca4('0x3a')](_0x18fc1a[_0xcca4('0x39')],{'$or':_[_0xcca4('0x2b')](_0x301fae,function(_0x6fbc9c){if(_0x6fbc9c[_0xcca4('0x2e')]!==_0xcca4('0x3b')){var _0x4db985={};_0x4db985[_0x6fbc9c['name']]={'$like':'%'+_0x1a4f08['query'][_0xcca4('0x3c')]+'%'};return _0x4db985;}})});}_0x18fc1a=_[_0xcca4('0x3a')]({},_0x18fc1a,_0x1a4f08[_0xcca4('0x3d')]);var _0x1e3636={'where':_0x18fc1a['where']};return db[_0xcca4('0x2c')]['count'](_0x1e3636)[_0xcca4('0x21')](function(_0x41f96b){_0x1ad684[_0xcca4('0x19')]=_0x41f96b;if(_0x1a4f08['query'][_0xcca4('0x3e')]){_0x18fc1a[_0xcca4('0x3f')]=[{'all':!![]}];}return db['AnalyticMetric'][_0xcca4('0x40')](_0x18fc1a);})[_0xcca4('0x21')](function(_0x443f45){_0x1ad684['rows']=_0x443f45;return _0x1ad684;})[_0xcca4('0x21')](respondWithFilteredResult(_0x1d599e,_0x18fc1a))[_0xcca4('0x41')](handleError(_0x1d599e,null));};exports[_0xcca4('0x42')]=function(_0x339a89,_0x37f74a){var _0x121dac={'raw':!![],'where':{'id':_0x339a89[_0xcca4('0x43')]['id']}},_0x4be3fd={};_0x4be3fd[_0xcca4('0x2f')]=_[_0xcca4('0x44')](db['AnalyticMetric'][_0xcca4('0x2d')]);_0x4be3fd[_0xcca4('0x30')]=_['keys'](_0x339a89[_0xcca4('0x30')]);_0x4be3fd[_0xcca4('0x31')]=_[_0xcca4('0x33')](_0x4be3fd[_0xcca4('0x2f')],_0x4be3fd[_0xcca4('0x30')]);_0x121dac['attributes']=_[_0xcca4('0x33')](_0x4be3fd['model'],qs['fields'](_0x339a89[_0xcca4('0x30')][_0xcca4('0x34')]));_0x121dac[_0xcca4('0x32')]=_0x121dac[_0xcca4('0x32')][_0xcca4('0x45')]?_0x121dac[_0xcca4('0x32')]:_0x4be3fd[_0xcca4('0x2f')];if(_0x339a89[_0xcca4('0x30')][_0xcca4('0x3e')]){_0x121dac[_0xcca4('0x3f')]=[{'all':!![]}];}_0x121dac=_['merge']({},_0x121dac,_0x339a89[_0xcca4('0x3d')]);return db[_0xcca4('0x2c')][_0xcca4('0x46')](_0x121dac)[_0xcca4('0x21')](handleEntityNotFound(_0x37f74a,null))[_0xcca4('0x21')](respondWithResult(_0x37f74a,null))[_0xcca4('0x41')](handleError(_0x37f74a,null));};exports[_0xcca4('0x47')]=function(_0x3b9be3,_0x24d3a4){return db[_0xcca4('0x2c')][_0xcca4('0x47')](_0x3b9be3[_0xcca4('0x48')],{})[_0xcca4('0x21')](function(_0x35ffe5){var _0x362d0a=_0x3b9be3['user'][_0xcca4('0x23')]({'plain':!![]});if(!_0x362d0a)throw new Error(_0xcca4('0x49'));if(_0x362d0a[_0xcca4('0x4a')]==='user'){var _0x1ac3e1=_0x35ffe5[_0xcca4('0x23')]({'plain':!![]});var _0x3b3a9d=_0xcca4('0x24');return db[_0xcca4('0x4b')][_0xcca4('0x46')]({'where':{'name':_0x3b3a9d,'userProfileId':_0x362d0a['userProfileId']},'raw':!![]})[_0xcca4('0x21')](function(_0x300641){if(_0x300641&&_0x300641[_0xcca4('0x4c')]===0x0){return db[_0xcca4('0x25')][_0xcca4('0x47')]({'name':_0x1ac3e1[_0xcca4('0x28')],'resourceId':_0x1ac3e1['id'],'type':_0x300641[_0xcca4('0x28')],'sectionId':_0x300641['id']},{})[_0xcca4('0x21')](function(){return _0x35ffe5;});}else{return _0x35ffe5;}})[_0xcca4('0x41')](function(_0x4d9fe8){logger[_0xcca4('0x27')](_0xcca4('0x4d'),_0x4d9fe8);throw _0x4d9fe8;});}return _0x35ffe5;})[_0xcca4('0x21')](respondWithResult(_0x24d3a4,0xc9))[_0xcca4('0x41')](handleError(_0x24d3a4,null));};exports[_0xcca4('0x20')]=function(_0x54588d,_0x3d5de2){if(_0x54588d[_0xcca4('0x48')]['id']){delete _0x54588d[_0xcca4('0x48')]['id'];}return db[_0xcca4('0x2c')]['find']({'where':{'id':_0x54588d['params']['id']}})['then'](handleEntityNotFound(_0x3d5de2,null))['then'](saveUpdates(_0x54588d[_0xcca4('0x48')],null))[_0xcca4('0x21')](respondWithResult(_0x3d5de2,null))[_0xcca4('0x41')](handleError(_0x3d5de2,null));};exports[_0xcca4('0x22')]=function(_0x19c32c,_0x46b8cc){return db['AnalyticMetric'][_0xcca4('0x46')]({'where':{'id':_0x19c32c['params']['id']}})[_0xcca4('0x21')](handleEntityNotFound(_0x46b8cc,null))[_0xcca4('0x21')](removeEntity(_0x46b8cc,null))['catch'](handleError(_0x46b8cc,null));};