32c18a800eadf0d36e8b61294e00b8b6540dfd52
[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 _0x1e83=['name','send','index','map','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','options','AnalyticMetric','includeAll','include','findAll','rows','show','params','keys','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','sendStatus','end','status','json','count','set','Content-Range','save','update','then','destroy','get','Metrics','UserProfileResource','error','stack'];(function(_0x42e4d7,_0x4bd202){var _0x346cd8=function(_0x36c0f6){while(--_0x36c0f6){_0x42e4d7['push'](_0x42e4d7['shift']());}};_0x346cd8(++_0x4bd202);}(_0x1e83,0x1b5));var _0x31e8=function(_0x2b3de6,_0x25da1f){_0x2b3de6=_0x2b3de6-0x0;var _0xb990ce=_0x1e83[_0x2b3de6];return _0xb990ce;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x31e8('0x0'));var rimraf=require(_0x31e8('0x1'));var zipdir=require(_0x31e8('0x2'));var jsonpatch=require(_0x31e8('0x3'));var rp=require(_0x31e8('0x4'));var moment=require(_0x31e8('0x5'));var BPromise=require(_0x31e8('0x6'));var Mustache=require(_0x31e8('0x7'));var util=require(_0x31e8('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x31e8('0x9'));var ejs=require(_0x31e8('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x31e8('0xb'));var crypto=require(_0x31e8('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x31e8('0xd'));var Redis=require(_0x31e8('0xe'));var authService=require(_0x31e8('0xf'));var qs=require(_0x31e8('0x10'));var as=require(_0x31e8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x31e8('0x12'));var utils=require(_0x31e8('0x13'));var config=require(_0x31e8('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33a9dc,_0x5607e2){_0x5607e2=_0x5607e2||0xcc;return function(_0x5f1b37){if(_0x5f1b37){return _0x33a9dc[_0x31e8('0x15')](_0x5607e2);}return _0x33a9dc['status'](_0x5607e2)[_0x31e8('0x16')]();};}function respondWithResult(_0x585210,_0x2a743c){_0x2a743c=_0x2a743c||0xc8;return function(_0x26aa46){if(_0x26aa46){return _0x585210[_0x31e8('0x17')](_0x2a743c)[_0x31e8('0x18')](_0x26aa46);}};}function respondWithFilteredResult(_0x55ffdf,_0x234f64){return function(_0x4ba4c9){if(_0x4ba4c9){var _0x8fcfda=_0x4ba4c9[_0x31e8('0x19')],_0x52c184=_0x234f64['offset'],_0x1730c4=_0x234f64['offset']+_0x234f64['limit'],_0x4dbe23;if(_0x1730c4>=_0x8fcfda){_0x1730c4=_0x8fcfda;_0x4dbe23=0xc8;}else{_0x4dbe23=0xce;}_0x55ffdf[_0x31e8('0x17')](_0x4dbe23);return _0x55ffdf[_0x31e8('0x1a')](_0x31e8('0x1b'),_0x52c184+'-'+_0x1730c4+'/'+_0x8fcfda)['json'](_0x4ba4c9);}return null;};}function patchUpdates(_0x536b09){return function(_0x2f8533){try{jsonpatch['apply'](_0x2f8533,_0x536b09,!![]);}catch(_0x3915b6){return BPromise['reject'](_0x3915b6);}return _0x2f8533[_0x31e8('0x1c')]();};}function saveUpdates(_0x4c9c22,_0x5248ff){return function(_0x2db6c3){if(_0x2db6c3){return _0x2db6c3[_0x31e8('0x1d')](_0x4c9c22)[_0x31e8('0x1e')](function(_0x4827a5){return _0x4827a5;});}return null;};}function removeEntity(_0x452953,_0x158fc9){return function(_0x521449){if(_0x521449){return _0x521449[_0x31e8('0x1f')]()[_0x31e8('0x1e')](function(){var _0x39a127=_0x521449[_0x31e8('0x20')]({'plain':!![]});var _0x575fc2=_0x31e8('0x21');return db[_0x31e8('0x22')]['destroy']({'where':{'type':_0x575fc2,'resourceId':_0x39a127['id']}})['then'](function(){return _0x521449;});})['then'](function(){_0x452953[_0x31e8('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a382b,_0x24d697){return function(_0x27b1a0){if(!_0x27b1a0){_0x2a382b[_0x31e8('0x15')](0x194);}return _0x27b1a0;};}function handleError(_0x564e11,_0x391cb6){_0x391cb6=_0x391cb6||0x1f4;return function(_0x58ffc2){logger[_0x31e8('0x23')](_0x58ffc2[_0x31e8('0x24')]);if(_0x58ffc2[_0x31e8('0x25')]){delete _0x58ffc2[_0x31e8('0x25')];}_0x564e11[_0x31e8('0x17')](_0x391cb6)[_0x31e8('0x26')](_0x58ffc2);};}exports[_0x31e8('0x27')]=function(_0x9b5ea9,_0x170993){var _0x3bbd31={},_0x2de680={},_0x3285e0={'count':0x0,'rows':[]};var _0x29d969=_[_0x31e8('0x28')](db['AnalyticMetric']['rawAttributes'],function(_0x5c1b37){return{'name':_0x5c1b37[_0x31e8('0x29')],'type':_0x5c1b37[_0x31e8('0x2a')][_0x31e8('0x2b')]};});_0x2de680[_0x31e8('0x2c')]=_[_0x31e8('0x28')](_0x29d969,'name');_0x2de680[_0x31e8('0x2d')]=_['keys'](_0x9b5ea9[_0x31e8('0x2d')]);_0x2de680[_0x31e8('0x2e')]=_['intersection'](_0x2de680[_0x31e8('0x2c')],_0x2de680['query']);_0x3bbd31[_0x31e8('0x2f')]=_[_0x31e8('0x30')](_0x2de680[_0x31e8('0x2c')],qs[_0x31e8('0x31')](_0x9b5ea9['query'][_0x31e8('0x31')]));_0x3bbd31[_0x31e8('0x2f')]=_0x3bbd31[_0x31e8('0x2f')][_0x31e8('0x32')]?_0x3bbd31[_0x31e8('0x2f')]:_0x2de680[_0x31e8('0x2c')];if(!_0x9b5ea9[_0x31e8('0x2d')][_0x31e8('0x33')](_0x31e8('0x34'))){_0x3bbd31['limit']=qs['limit'](_0x9b5ea9[_0x31e8('0x2d')]['limit']);_0x3bbd31[_0x31e8('0x35')]=qs['offset'](_0x9b5ea9['query'][_0x31e8('0x35')]);}_0x3bbd31[_0x31e8('0x36')]=qs[_0x31e8('0x37')](_0x9b5ea9[_0x31e8('0x2d')][_0x31e8('0x37')]);_0x3bbd31[_0x31e8('0x38')]=qs['filters'](_[_0x31e8('0x39')](_0x9b5ea9['query'],_0x2de680[_0x31e8('0x2e')]),_0x29d969);if(_0x9b5ea9['query'][_0x31e8('0x3a')]){_0x3bbd31[_0x31e8('0x38')]=_[_0x31e8('0x3b')](_0x3bbd31[_0x31e8('0x38')],{'$or':_['map'](_0x29d969,function(_0x33adb4){if(_0x33adb4[_0x31e8('0x2a')]!=='VIRTUAL'){var _0x413839={};_0x413839[_0x33adb4[_0x31e8('0x25')]]={'$like':'%'+_0x9b5ea9[_0x31e8('0x2d')][_0x31e8('0x3a')]+'%'};return _0x413839;}})});}_0x3bbd31=_[_0x31e8('0x3b')]({},_0x3bbd31,_0x9b5ea9[_0x31e8('0x3c')]);var _0x20eb2d={'where':_0x3bbd31['where']};return db[_0x31e8('0x3d')]['count'](_0x20eb2d)['then'](function(_0x43ac71){_0x3285e0[_0x31e8('0x19')]=_0x43ac71;if(_0x9b5ea9[_0x31e8('0x2d')][_0x31e8('0x3e')]){_0x3bbd31[_0x31e8('0x3f')]=[{'all':!![]}];}return db[_0x31e8('0x3d')][_0x31e8('0x40')](_0x3bbd31);})[_0x31e8('0x1e')](function(_0x52358c){_0x3285e0[_0x31e8('0x41')]=_0x52358c;return _0x3285e0;})[_0x31e8('0x1e')](respondWithFilteredResult(_0x170993,_0x3bbd31))['catch'](handleError(_0x170993,null));};exports[_0x31e8('0x42')]=function(_0x40416a,_0x5e7852){var _0x362fa3={'raw':!![],'where':{'id':_0x40416a[_0x31e8('0x43')]['id']}},_0x10e97d={};_0x10e97d[_0x31e8('0x2c')]=_[_0x31e8('0x44')](db['AnalyticMetric']['rawAttributes']);_0x10e97d['query']=_[_0x31e8('0x44')](_0x40416a[_0x31e8('0x2d')]);_0x10e97d[_0x31e8('0x2e')]=_[_0x31e8('0x30')](_0x10e97d[_0x31e8('0x2c')],_0x10e97d[_0x31e8('0x2d')]);_0x362fa3[_0x31e8('0x2f')]=_[_0x31e8('0x30')](_0x10e97d[_0x31e8('0x2c')],qs[_0x31e8('0x31')](_0x40416a['query'][_0x31e8('0x31')]));_0x362fa3['attributes']=_0x362fa3[_0x31e8('0x2f')]['length']?_0x362fa3[_0x31e8('0x2f')]:_0x10e97d[_0x31e8('0x2c')];if(_0x40416a['query'][_0x31e8('0x3e')]){_0x362fa3['include']=[{'all':!![]}];}_0x362fa3=_[_0x31e8('0x3b')]({},_0x362fa3,_0x40416a[_0x31e8('0x3c')]);return db[_0x31e8('0x3d')][_0x31e8('0x45')](_0x362fa3)['then'](handleEntityNotFound(_0x5e7852,null))[_0x31e8('0x1e')](respondWithResult(_0x5e7852,null))[_0x31e8('0x46')](handleError(_0x5e7852,null));};exports[_0x31e8('0x47')]=function(_0x4646ea,_0x4cd52f){return db[_0x31e8('0x3d')][_0x31e8('0x47')](_0x4646ea['body'],{})['then'](function(_0x4935d1){var _0x2c903f=_0x4646ea[_0x31e8('0x48')]['get']({'plain':!![]});if(!_0x2c903f)throw new Error(_0x31e8('0x49'));if(_0x2c903f['role']===_0x31e8('0x48')){var _0x1a27c9=_0x4935d1[_0x31e8('0x20')]({'plain':!![]});var _0x2f74f5='Metrics';return db[_0x31e8('0x4a')][_0x31e8('0x45')]({'where':{'name':_0x2f74f5,'userProfileId':_0x2c903f[_0x31e8('0x4b')]},'raw':!![]})['then'](function(_0x21f630){if(_0x21f630&&_0x21f630[_0x31e8('0x4c')]===0x0){return db['UserProfileResource'][_0x31e8('0x47')]({'name':_0x1a27c9[_0x31e8('0x25')],'resourceId':_0x1a27c9['id'],'type':_0x21f630[_0x31e8('0x25')],'sectionId':_0x21f630['id']},{})[_0x31e8('0x1e')](function(){return _0x4935d1;});}else{return _0x4935d1;}})[_0x31e8('0x46')](function(_0x3c65d2){logger['error'](_0x31e8('0x4d'),_0x3c65d2);throw _0x3c65d2;});}return _0x4935d1;})[_0x31e8('0x1e')](respondWithResult(_0x4cd52f,0xc9))[_0x31e8('0x46')](handleError(_0x4cd52f,null));};exports[_0x31e8('0x1d')]=function(_0x140e5c,_0xb8937c){if(_0x140e5c['body']['id']){delete _0x140e5c[_0x31e8('0x4e')]['id'];}return db[_0x31e8('0x3d')]['find']({'where':{'id':_0x140e5c['params']['id']}})[_0x31e8('0x1e')](handleEntityNotFound(_0xb8937c,null))[_0x31e8('0x1e')](saveUpdates(_0x140e5c[_0x31e8('0x4e')],null))['then'](respondWithResult(_0xb8937c,null))['catch'](handleError(_0xb8937c,null));};exports['destroy']=function(_0x2fe787,_0x48f478){return db[_0x31e8('0x3d')][_0x31e8('0x45')]({'where':{'id':_0x2fe787[_0x31e8('0x43')]['id']}})['then'](handleEntityNotFound(_0x48f478,null))[_0x31e8('0x1e')](removeEntity(_0x48f478,null))['catch'](handleError(_0x48f478,null));};