3433bf7927007d7a9498137295d7d146e22b46f1
[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 _0x48d0=['account','index','AnalyticMetric','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','findAll','rows','catch','show','include','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','find','userProfileId','autoAssociation','params','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','set','apply','update','then','Metrics','UserProfileResource','destroy','status','name','send','render','merge','body','message','agent'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x48d0,0xd3));var _0x048d=function(_0x1b8039,_0x5e3d9c){_0x1b8039=_0x1b8039-0x0;var _0x2bb4cc=_0x48d0[_0x1b8039];return _0x2bb4cc;};'use strict';var emlformat=require(_0x048d('0x0'));var rimraf=require(_0x048d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x048d('0x2'));var rp=require(_0x048d('0x3'));var moment=require(_0x048d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x048d('0x5'));var util=require(_0x048d('0x6'));var path=require('path');var sox=require(_0x048d('0x7'));var csv=require(_0x048d('0x8'));var ejs=require(_0x048d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x048d('0xa'));var squel=require(_0x048d('0xb'));var crypto=require('crypto');var jsforce=require(_0x048d('0xc'));var deskjs=require(_0x048d('0xd'));var toCsv=require(_0x048d('0x8'));var querystring=require(_0x048d('0xe'));var Papa=require(_0x048d('0xf'));var Redis=require(_0x048d('0x10'));var authService=require(_0x048d('0x11'));var qs=require(_0x048d('0x12'));var as=require(_0x048d('0x13'));var hardwareService=require(_0x048d('0x14'));var logger=require(_0x048d('0x15'))(_0x048d('0x16'));var utils=require('../../config/utils');var config=require(_0x048d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x048d('0x18'))['db'];function respondWithStatusCode(_0x240804,_0x1e535c){_0x1e535c=_0x1e535c||0xcc;return function(_0x5e6f72){if(_0x5e6f72){return _0x240804[_0x048d('0x19')](_0x1e535c);}return _0x240804['status'](_0x1e535c)[_0x048d('0x1a')]();};}function respondWithResult(_0x459864,_0x553b00){_0x553b00=_0x553b00||0xc8;return function(_0xaaa80a){if(_0xaaa80a){return _0x459864['status'](_0x553b00)[_0x048d('0x1b')](_0xaaa80a);}};}function respondWithFilteredResult(_0x245e10,_0x193154){return function(_0x183444){if(_0x183444){var _0x175572=typeof _0x193154[_0x048d('0x1c')]===_0x048d('0x1d')&&typeof _0x193154['limit']===_0x048d('0x1d');var _0xef2f1c=_0x183444[_0x048d('0x1e')];var _0x5371ec=_0x175572?0x0:_0x193154[_0x048d('0x1c')];var _0x47bb61=_0x175572?_0x183444['count']:_0x193154[_0x048d('0x1c')]+_0x193154[_0x048d('0x1f')];var _0x34408a;if(_0x47bb61>=_0xef2f1c){_0x47bb61=_0xef2f1c;_0x34408a=0xc8;}else{_0x34408a=0xce;}_0x245e10['status'](_0x34408a);return _0x245e10[_0x048d('0x20')]('Content-Range',_0x5371ec+'-'+_0x47bb61+'/'+_0xef2f1c)[_0x048d('0x1b')](_0x183444);}return null;};}function patchUpdates(_0x5a6b35){return function(_0x4b1d3e){try{jsonpatch[_0x048d('0x21')](_0x4b1d3e,_0x5a6b35,!![]);}catch(_0x499ba9){return BPromise['reject'](_0x499ba9);}return _0x4b1d3e['save']();};}function saveUpdates(_0x44df55,_0x221863){return function(_0x113b7b){if(_0x113b7b){return _0x113b7b[_0x048d('0x22')](_0x44df55)[_0x048d('0x23')](function(_0x144123){return _0x144123;});}return null;};}function removeEntity(_0x4b6dca,_0x5cced5){return function(_0x22fd5b){if(_0x22fd5b){return _0x22fd5b['destroy']()['then'](function(){var _0x21c485=_0x22fd5b['get']({'plain':!![]});var _0x480266=_0x048d('0x24');return db[_0x048d('0x25')][_0x048d('0x26')]({'where':{'type':_0x480266,'resourceId':_0x21c485['id']}})[_0x048d('0x23')](function(){return _0x22fd5b;});})[_0x048d('0x23')](function(){_0x4b6dca[_0x048d('0x27')](0xcc)[_0x048d('0x1a')]();});}};}function handleEntityNotFound(_0xe0cdce,_0x118a43){return function(_0x37538d){if(!_0x37538d){_0xe0cdce[_0x048d('0x19')](0x194);}return _0x37538d;};}function handleError(_0x4f9253,_0x46e3a7){_0x46e3a7=_0x46e3a7||0x1f4;return function(_0x4682db){logger['error'](_0x4682db['stack']);if(_0x4682db['name']){delete _0x4682db[_0x048d('0x28')];}_0x4f9253['status'](_0x46e3a7)[_0x048d('0x29')](_0x4682db);};}function getMustacheRender(_0x43e2d1,_0x35acaa){return Mustache[_0x048d('0x2a')](_0x43e2d1,_[_0x048d('0x2b')](_0x35acaa[_0x048d('0x2c')],{'contact':_0x35acaa['contact'],'message':_0x35acaa[_0x048d('0x2d')],'agent':_0x35acaa[_0x048d('0x2e')],'interaction':_0x35acaa['interaction'],'account':_0x35acaa[_0x048d('0x2f')]}))||'';}exports[_0x048d('0x30')]=function(_0x87e456,_0x2cbb6a){var _0x1ab0d1={},_0x15b7d2={},_0xc98c7b={'count':0x0,'rows':[]};var _0x1fb94e=_['map'](db[_0x048d('0x31')][_0x048d('0x32')],function(_0x1e86f7){return{'name':_0x1e86f7['fieldName'],'type':_0x1e86f7[_0x048d('0x33')][_0x048d('0x34')]};});_0x15b7d2[_0x048d('0x35')]=_[_0x048d('0x36')](_0x1fb94e,_0x048d('0x28'));_0x15b7d2[_0x048d('0x37')]=_[_0x048d('0x38')](_0x87e456[_0x048d('0x37')]);_0x15b7d2[_0x048d('0x39')]=_[_0x048d('0x3a')](_0x15b7d2['model'],_0x15b7d2[_0x048d('0x37')]);_0x1ab0d1['attributes']=_['intersection'](_0x15b7d2['model'],qs[_0x048d('0x3b')](_0x87e456[_0x048d('0x37')][_0x048d('0x3b')]));_0x1ab0d1[_0x048d('0x3c')]=_0x1ab0d1[_0x048d('0x3c')][_0x048d('0x3d')]?_0x1ab0d1[_0x048d('0x3c')]:_0x15b7d2[_0x048d('0x35')];if(!_0x87e456['query']['hasOwnProperty'](_0x048d('0x3e'))){_0x1ab0d1['limit']=qs['limit'](_0x87e456[_0x048d('0x37')][_0x048d('0x1f')]);_0x1ab0d1[_0x048d('0x1c')]=qs[_0x048d('0x1c')](_0x87e456[_0x048d('0x37')][_0x048d('0x1c')]);}_0x1ab0d1[_0x048d('0x3f')]=qs[_0x048d('0x40')](_0x87e456['query']['sort']);_0x1ab0d1[_0x048d('0x41')]=qs[_0x048d('0x39')](_[_0x048d('0x42')](_0x87e456['query'],_0x15b7d2[_0x048d('0x39')]),_0x1fb94e);if(_0x87e456[_0x048d('0x37')][_0x048d('0x43')]){_0x1ab0d1[_0x048d('0x41')]=_[_0x048d('0x2b')](_0x1ab0d1[_0x048d('0x41')],{'$or':_[_0x048d('0x36')](_0x1fb94e,function(_0x6695d){if(_0x6695d[_0x048d('0x33')]!==_0x048d('0x44')){var _0xdeb3aa={};_0xdeb3aa[_0x6695d[_0x048d('0x28')]]={'$like':'%'+_0x87e456[_0x048d('0x37')][_0x048d('0x43')]+'%'};return _0xdeb3aa;}})});}_0x1ab0d1=_[_0x048d('0x2b')]({},_0x1ab0d1,_0x87e456['options']);var _0x20754e={'where':_0x1ab0d1[_0x048d('0x41')]};return db[_0x048d('0x31')][_0x048d('0x1e')](_0x20754e)[_0x048d('0x23')](function(_0x14d015){_0xc98c7b[_0x048d('0x1e')]=_0x14d015;if(_0x87e456[_0x048d('0x37')][_0x048d('0x45')]){_0x1ab0d1['include']=[{'all':!![]}];}return db['AnalyticMetric'][_0x048d('0x46')](_0x1ab0d1);})[_0x048d('0x23')](function(_0x375792){_0xc98c7b[_0x048d('0x47')]=_0x375792;return _0xc98c7b;})[_0x048d('0x23')](respondWithFilteredResult(_0x2cbb6a,_0x1ab0d1))[_0x048d('0x48')](handleError(_0x2cbb6a,null));};exports[_0x048d('0x49')]=function(_0x95c6f7,_0x2ae513){var _0x369f0b={'raw':!![],'where':{'id':_0x95c6f7['params']['id']}},_0x2b6d54={};_0x2b6d54[_0x048d('0x35')]=_[_0x048d('0x38')](db[_0x048d('0x31')]['rawAttributes']);_0x2b6d54[_0x048d('0x37')]=_['keys'](_0x95c6f7[_0x048d('0x37')]);_0x2b6d54['filters']=_[_0x048d('0x3a')](_0x2b6d54[_0x048d('0x35')],_0x2b6d54[_0x048d('0x37')]);_0x369f0b[_0x048d('0x3c')]=_[_0x048d('0x3a')](_0x2b6d54[_0x048d('0x35')],qs[_0x048d('0x3b')](_0x95c6f7[_0x048d('0x37')]['fields']));_0x369f0b['attributes']=_0x369f0b[_0x048d('0x3c')][_0x048d('0x3d')]?_0x369f0b['attributes']:_0x2b6d54['model'];if(_0x95c6f7['query']['includeAll']){_0x369f0b[_0x048d('0x4a')]=[{'all':!![]}];}_0x369f0b=_[_0x048d('0x2b')]({},_0x369f0b,_0x95c6f7[_0x048d('0x4b')]);return db[_0x048d('0x31')]['find'](_0x369f0b)['then'](handleEntityNotFound(_0x2ae513,null))[_0x048d('0x23')](respondWithResult(_0x2ae513,null))['catch'](handleError(_0x2ae513,null));};exports[_0x048d('0x4c')]=function(_0x315a24,_0x1f0062){return db[_0x048d('0x31')]['create'](_0x315a24[_0x048d('0x2c')],{})['then'](function(_0x18ec00){var _0x33c1ac=_0x315a24[_0x048d('0x4d')]['get']({'plain':!![]});if(!_0x33c1ac)throw new Error(_0x048d('0x4e'));if(_0x33c1ac[_0x048d('0x4f')]===_0x048d('0x4d')){var _0x429b67=_0x18ec00[_0x048d('0x50')]({'plain':!![]});var _0x4879d7=_0x048d('0x24');return db[_0x048d('0x51')][_0x048d('0x52')]({'where':{'name':_0x4879d7,'userProfileId':_0x33c1ac[_0x048d('0x53')]},'raw':!![]})[_0x048d('0x23')](function(_0x3241c8){if(_0x3241c8&&_0x3241c8[_0x048d('0x54')]===0x0){return db['UserProfileResource'][_0x048d('0x4c')]({'name':_0x429b67[_0x048d('0x28')],'resourceId':_0x429b67['id'],'type':_0x3241c8[_0x048d('0x28')],'sectionId':_0x3241c8['id']},{})[_0x048d('0x23')](function(){return _0x18ec00;});}else{return _0x18ec00;}})['catch'](function(_0x49aeb4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x49aeb4);throw _0x49aeb4;});}return _0x18ec00;})['then'](respondWithResult(_0x1f0062,0xc9))[_0x048d('0x48')](handleError(_0x1f0062,null));};exports[_0x048d('0x22')]=function(_0x398b16,_0x43ff6d){if(_0x398b16['body']['id']){delete _0x398b16[_0x048d('0x2c')]['id'];}return db['AnalyticMetric'][_0x048d('0x52')]({'where':{'id':_0x398b16[_0x048d('0x55')]['id']}})[_0x048d('0x23')](handleEntityNotFound(_0x43ff6d,null))[_0x048d('0x23')](saveUpdates(_0x398b16['body'],null))[_0x048d('0x23')](respondWithResult(_0x43ff6d,null))[_0x048d('0x48')](handleError(_0x43ff6d,null));};exports['destroy']=function(_0x4c32d6,_0x222ef8){return db[_0x048d('0x31')]['find']({'where':{'id':_0x4c32d6['params']['id']}})[_0x048d('0x23')](handleEntityNotFound(_0x222ef8,null))[_0x048d('0x23')](removeEntity(_0x222ef8,null))[_0x048d('0x48')](handleError(_0x222ef8,null));};