66396b56ec74e92bfbf81920797ace02054b1323
[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 _0xa5b0=['limit','set','Content-Range','json','reject','update','then','destroy','get','Metrics','end','sendStatus','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','query','keys','model','intersection','fields','attributes','length','order','sort','filters','where','merge','VIRTUAL','filter','count','include','findAll','catch','show','params','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','html-pdf','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','offset'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xa5b0,0xcd));var _0x0a5b=function(_0x3cf7df,_0x43b053){_0x3cf7df=_0x3cf7df-0x0;var _0x52ca51=_0xa5b0[_0x3cf7df];return _0x52ca51;};'use strict';var pdf=require(_0x0a5b('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x0a5b('0x1'));var zipdir=require(_0x0a5b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0a5b('0x3'));var moment=require(_0x0a5b('0x4'));var BPromise=require(_0x0a5b('0x5'));var Mustache=require(_0x0a5b('0x6'));var util=require(_0x0a5b('0x7'));var path=require(_0x0a5b('0x8'));var sox=require('sox');var csv=require(_0x0a5b('0x9'));var ejs=require(_0x0a5b('0xa'));var fs=require('fs');var _=require(_0x0a5b('0xb'));var squel=require('squel');var crypto=require(_0x0a5b('0xc'));var jsforce=require(_0x0a5b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0a5b('0x9'));var querystring=require(_0x0a5b('0xe'));var Papa=require(_0x0a5b('0xf'));var Redis=require('ioredis');var authService=require(_0x0a5b('0x10'));var qs=require(_0x0a5b('0x11'));var as=require(_0x0a5b('0x12'));var hardwareService=require(_0x0a5b('0x13'));var logger=require(_0x0a5b('0x14'))(_0x0a5b('0x15'));var utils=require('../../config/utils');var config=require(_0x0a5b('0x16'));var licenseUtil=require(_0x0a5b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x44933c,_0x213ee7){_0x213ee7=_0x213ee7||0xcc;return function(_0x146072){if(_0x146072){return _0x44933c['sendStatus'](_0x213ee7);}return _0x44933c[_0x0a5b('0x18')](_0x213ee7)['end']();};}function respondWithResult(_0x5bd914,_0x311923){_0x311923=_0x311923||0xc8;return function(_0x12afe9){if(_0x12afe9){return _0x5bd914[_0x0a5b('0x18')](_0x311923)['json'](_0x12afe9);}};}function respondWithFilteredResult(_0x5d0fad,_0x395838){return function(_0x1204f5){if(_0x1204f5){var _0x4ec92b=_0x1204f5['count'],_0x4e1b41=_0x395838[_0x0a5b('0x19')],_0x1a97c9=_0x395838[_0x0a5b('0x19')]+_0x395838[_0x0a5b('0x1a')],_0x2630fb;if(_0x1a97c9>=_0x4ec92b){_0x1a97c9=_0x4ec92b;_0x2630fb=0xc8;}else{_0x2630fb=0xce;}_0x5d0fad['status'](_0x2630fb);return _0x5d0fad[_0x0a5b('0x1b')](_0x0a5b('0x1c'),_0x4e1b41+'-'+_0x1a97c9+'/'+_0x4ec92b)[_0x0a5b('0x1d')](_0x1204f5);}return null;};}function patchUpdates(_0x11987b){return function(_0x1e1398){try{jsonpatch['apply'](_0x1e1398,_0x11987b,!![]);}catch(_0x50ebe2){return BPromise[_0x0a5b('0x1e')](_0x50ebe2);}return _0x1e1398['save']();};}function saveUpdates(_0x1fe6b5,_0x4d3fd1){return function(_0x5df369){if(_0x5df369){return _0x5df369[_0x0a5b('0x1f')](_0x1fe6b5)[_0x0a5b('0x20')](function(_0x165ee2){return _0x165ee2;});}return null;};}function removeEntity(_0x192a90,_0x2c103e){return function(_0x433275){if(_0x433275){return _0x433275[_0x0a5b('0x21')]()[_0x0a5b('0x20')](function(){var _0x912d58=_0x433275[_0x0a5b('0x22')]({'plain':!![]});var _0x30906c=_0x0a5b('0x23');return db['UserProfileResource'][_0x0a5b('0x21')]({'where':{'type':_0x30906c,'resourceId':_0x912d58['id']}})['then'](function(){return _0x433275;});})[_0x0a5b('0x20')](function(){_0x192a90[_0x0a5b('0x18')](0xcc)[_0x0a5b('0x24')]();});}};}function handleEntityNotFound(_0x479871,_0x4066dd){return function(_0x3de486){if(!_0x3de486){_0x479871[_0x0a5b('0x25')](0x194);}return _0x3de486;};}function handleError(_0x2d9831,_0x49cd2d){_0x49cd2d=_0x49cd2d||0x1f4;return function(_0x12c1d5){logger[_0x0a5b('0x26')](_0x12c1d5[_0x0a5b('0x27')]);if(_0x12c1d5[_0x0a5b('0x28')]){delete _0x12c1d5[_0x0a5b('0x28')];}_0x2d9831['status'](_0x49cd2d)[_0x0a5b('0x29')](_0x12c1d5);};}exports[_0x0a5b('0x2a')]=function(_0x4df548,_0x878133){var _0x5c3ce0={},_0x3551b3={},_0x2e8ffc={'count':0x0,'rows':[]};var _0xbf79e3=_[_0x0a5b('0x2b')](db[_0x0a5b('0x2c')][_0x0a5b('0x2d')],function(_0x12a0d5){return{'name':_0x12a0d5[_0x0a5b('0x2e')],'type':_0x12a0d5[_0x0a5b('0x2f')]['key']};});_0x3551b3['model']=_[_0x0a5b('0x2b')](_0xbf79e3,_0x0a5b('0x28'));_0x3551b3[_0x0a5b('0x30')]=_[_0x0a5b('0x31')](_0x4df548[_0x0a5b('0x30')]);_0x3551b3['filters']=_['intersection'](_0x3551b3[_0x0a5b('0x32')],_0x3551b3['query']);_0x5c3ce0['attributes']=_[_0x0a5b('0x33')](_0x3551b3[_0x0a5b('0x32')],qs[_0x0a5b('0x34')](_0x4df548[_0x0a5b('0x30')]['fields']));_0x5c3ce0[_0x0a5b('0x35')]=_0x5c3ce0[_0x0a5b('0x35')][_0x0a5b('0x36')]?_0x5c3ce0[_0x0a5b('0x35')]:_0x3551b3[_0x0a5b('0x32')];if(!_0x4df548[_0x0a5b('0x30')]['hasOwnProperty']('nolimit')){_0x5c3ce0[_0x0a5b('0x1a')]=qs[_0x0a5b('0x1a')](_0x4df548[_0x0a5b('0x30')]['limit']);_0x5c3ce0[_0x0a5b('0x19')]=qs['offset'](_0x4df548[_0x0a5b('0x30')][_0x0a5b('0x19')]);}_0x5c3ce0[_0x0a5b('0x37')]=qs[_0x0a5b('0x38')](_0x4df548[_0x0a5b('0x30')]['sort']);_0x5c3ce0['where']=qs[_0x0a5b('0x39')](_['pick'](_0x4df548[_0x0a5b('0x30')],_0x3551b3[_0x0a5b('0x39')]),_0xbf79e3);if(_0x4df548[_0x0a5b('0x30')]['filter']){_0x5c3ce0[_0x0a5b('0x3a')]=_[_0x0a5b('0x3b')](_0x5c3ce0['where'],{'$or':_[_0x0a5b('0x2b')](_0xbf79e3,function(_0xfa035e){if(_0xfa035e['type']!==_0x0a5b('0x3c')){var _0x592f29={};_0x592f29[_0xfa035e[_0x0a5b('0x28')]]={'$like':'%'+_0x4df548[_0x0a5b('0x30')][_0x0a5b('0x3d')]+'%'};return _0x592f29;}})});}_0x5c3ce0=_[_0x0a5b('0x3b')]({},_0x5c3ce0,_0x4df548['options']);var _0x4202dd={'where':_0x5c3ce0[_0x0a5b('0x3a')]};return db[_0x0a5b('0x2c')][_0x0a5b('0x3e')](_0x4202dd)[_0x0a5b('0x20')](function(_0x3722f3){_0x2e8ffc[_0x0a5b('0x3e')]=_0x3722f3;if(_0x4df548[_0x0a5b('0x30')]['includeAll']){_0x5c3ce0[_0x0a5b('0x3f')]=[{'all':!![]}];}return db[_0x0a5b('0x2c')][_0x0a5b('0x40')](_0x5c3ce0);})[_0x0a5b('0x20')](function(_0x528478){_0x2e8ffc['rows']=_0x528478;return _0x2e8ffc;})[_0x0a5b('0x20')](respondWithFilteredResult(_0x878133,_0x5c3ce0))[_0x0a5b('0x41')](handleError(_0x878133,null));};exports[_0x0a5b('0x42')]=function(_0x550f0c,_0x5d4454){var _0x50e0ff={'raw':!![],'where':{'id':_0x550f0c[_0x0a5b('0x43')]['id']}},_0x5b8f48={};_0x5b8f48['model']=_[_0x0a5b('0x31')](db['AnalyticMetric'][_0x0a5b('0x2d')]);_0x5b8f48[_0x0a5b('0x30')]=_[_0x0a5b('0x31')](_0x550f0c[_0x0a5b('0x30')]);_0x5b8f48[_0x0a5b('0x39')]=_['intersection'](_0x5b8f48[_0x0a5b('0x32')],_0x5b8f48['query']);_0x50e0ff[_0x0a5b('0x35')]=_[_0x0a5b('0x33')](_0x5b8f48['model'],qs[_0x0a5b('0x34')](_0x550f0c[_0x0a5b('0x30')][_0x0a5b('0x34')]));_0x50e0ff[_0x0a5b('0x35')]=_0x50e0ff['attributes']['length']?_0x50e0ff[_0x0a5b('0x35')]:_0x5b8f48[_0x0a5b('0x32')];if(_0x550f0c[_0x0a5b('0x30')][_0x0a5b('0x44')]){_0x50e0ff[_0x0a5b('0x3f')]=[{'all':!![]}];}_0x50e0ff=_['merge']({},_0x50e0ff,_0x550f0c[_0x0a5b('0x45')]);return db['AnalyticMetric'][_0x0a5b('0x46')](_0x50e0ff)['then'](handleEntityNotFound(_0x5d4454,null))['then'](respondWithResult(_0x5d4454,null))[_0x0a5b('0x41')](handleError(_0x5d4454,null));};exports[_0x0a5b('0x47')]=function(_0x3abd30,_0x35ab80){return db[_0x0a5b('0x2c')][_0x0a5b('0x47')](_0x3abd30[_0x0a5b('0x48')],{})[_0x0a5b('0x20')](function(_0x28e437){var _0x1a906d=_0x3abd30[_0x0a5b('0x49')][_0x0a5b('0x22')]({'plain':!![]});if(!_0x1a906d)throw new Error(_0x0a5b('0x4a'));if(_0x1a906d['role']==='user'){var _0x10b126=_0x28e437['get']({'plain':!![]});var _0xd50996=_0x0a5b('0x23');return db[_0x0a5b('0x4b')][_0x0a5b('0x46')]({'where':{'name':_0xd50996,'userProfileId':_0x1a906d[_0x0a5b('0x4c')]},'raw':!![]})[_0x0a5b('0x20')](function(_0x4f5126){if(_0x4f5126&&_0x4f5126['autoAssociation']===0x0){return db['UserProfileResource'][_0x0a5b('0x47')]({'name':_0x10b126[_0x0a5b('0x28')],'resourceId':_0x10b126['id'],'type':_0x4f5126[_0x0a5b('0x28')],'sectionId':_0x4f5126['id']},{})['then'](function(){return _0x28e437;});}else{return _0x28e437;}})['catch'](function(_0x506f1b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x506f1b);throw _0x506f1b;});}return _0x28e437;})['then'](respondWithResult(_0x35ab80,0xc9))[_0x0a5b('0x41')](handleError(_0x35ab80,null));};exports['update']=function(_0xfb14c2,_0x64a36d){if(_0xfb14c2[_0x0a5b('0x48')]['id']){delete _0xfb14c2[_0x0a5b('0x48')]['id'];}return db[_0x0a5b('0x2c')][_0x0a5b('0x46')]({'where':{'id':_0xfb14c2[_0x0a5b('0x43')]['id']}})['then'](handleEntityNotFound(_0x64a36d,null))[_0x0a5b('0x20')](saveUpdates(_0xfb14c2[_0x0a5b('0x48')],null))['then'](respondWithResult(_0x64a36d,null))[_0x0a5b('0x41')](handleError(_0x64a36d,null));};exports['destroy']=function(_0x10f7c5,_0xae9176){return db['AnalyticMetric']['find']({'where':{'id':_0x10f7c5['params']['id']}})[_0x0a5b('0x20')](handleEntityNotFound(_0xae9176,null))[_0x0a5b('0x20')](removeEntity(_0xae9176,null))[_0x0a5b('0x41')](handleError(_0xae9176,null));};