3c2bb23bfe3a71d190ed448b9af49a6edd9d141b
[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 _0x259b=['include','findAll','rows','show','params','rawAttributes','includeAll','merge','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','html-pdf','eml-format','rimraf','fast-json-patch','mustache','path','sox','to-csv','ejs','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','count','offset','limit','set','Content-Range','apply','reject','update','then','get','Metrics','destroy','sendStatus','stack','name','send','index','map','AnalyticMetric','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','VIRTUAL','where'];(function(_0x9d3eb9,_0x148a27){var _0x91de80=function(_0x59af1d){while(--_0x59af1d){_0x9d3eb9['push'](_0x9d3eb9['shift']());}};_0x91de80(++_0x148a27);}(_0x259b,0x108));var _0xb259=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x259b[_0x3c2a69];return _0x596bc8;};'use strict';var pdf=require(_0xb259('0x0'));var emlformat=require(_0xb259('0x1'));var rimraf=require(_0xb259('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb259('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb259('0x4'));var util=require('util');var path=require(_0xb259('0x5'));var sox=require(_0xb259('0x6'));var csv=require(_0xb259('0x7'));var ejs=require(_0xb259('0x8'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0xb259('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xb259('0xa'));var toCsv=require(_0xb259('0x7'));var querystring=require('querystring');var Papa=require(_0xb259('0xb'));var Redis=require('ioredis');var authService=require(_0xb259('0xc'));var qs=require(_0xb259('0xd'));var as=require(_0xb259('0xe'));var hardwareService=require(_0xb259('0xf'));var logger=require('../../config/logger')(_0xb259('0x10'));var utils=require(_0xb259('0x11'));var config=require(_0xb259('0x12'));var licenseUtil=require(_0xb259('0x13'));var db=require(_0xb259('0x14'))['db'];function respondWithStatusCode(_0x232ad3,_0x1efc94){_0x1efc94=_0x1efc94||0xcc;return function(_0x3ed3a5){if(_0x3ed3a5){return _0x232ad3['sendStatus'](_0x1efc94);}return _0x232ad3['status'](_0x1efc94)[_0xb259('0x15')]();};}function respondWithResult(_0x3f8539,_0x1b8572){_0x1b8572=_0x1b8572||0xc8;return function(_0x585b5a){if(_0x585b5a){return _0x3f8539[_0xb259('0x16')](_0x1b8572)[_0xb259('0x17')](_0x585b5a);}};}function respondWithFilteredResult(_0x362df1,_0x3a44f1){return function(_0x28e4ce){if(_0x28e4ce){var _0x1e0adb=_0x28e4ce[_0xb259('0x18')],_0x49178f=_0x3a44f1[_0xb259('0x19')],_0x41015c=_0x3a44f1['offset']+_0x3a44f1[_0xb259('0x1a')],_0x1d8d18;if(_0x41015c>=_0x1e0adb){_0x41015c=_0x1e0adb;_0x1d8d18=0xc8;}else{_0x1d8d18=0xce;}_0x362df1['status'](_0x1d8d18);return _0x362df1[_0xb259('0x1b')](_0xb259('0x1c'),_0x49178f+'-'+_0x41015c+'/'+_0x1e0adb)['json'](_0x28e4ce);}return null;};}function patchUpdates(_0x24404d){return function(_0xd98743){try{jsonpatch[_0xb259('0x1d')](_0xd98743,_0x24404d,!![]);}catch(_0x3a992e){return BPromise[_0xb259('0x1e')](_0x3a992e);}return _0xd98743['save']();};}function saveUpdates(_0x4324b2,_0x20f801){return function(_0x4f141a){if(_0x4f141a){return _0x4f141a[_0xb259('0x1f')](_0x4324b2)[_0xb259('0x20')](function(_0x19c8c7){return _0x19c8c7;});}return null;};}function removeEntity(_0x53d8ec,_0x72cdc0){return function(_0x1ea0ee){if(_0x1ea0ee){return _0x1ea0ee['destroy']()['then'](function(){var _0x24b73c=_0x1ea0ee[_0xb259('0x21')]({'plain':!![]});var _0x14d207=_0xb259('0x22');return db['UserProfileResource'][_0xb259('0x23')]({'where':{'type':_0x14d207,'resourceId':_0x24b73c['id']}})[_0xb259('0x20')](function(){return _0x1ea0ee;});})[_0xb259('0x20')](function(){_0x53d8ec[_0xb259('0x16')](0xcc)[_0xb259('0x15')]();});}};}function handleEntityNotFound(_0xf7168e,_0x14d6c7){return function(_0x258576){if(!_0x258576){_0xf7168e[_0xb259('0x24')](0x194);}return _0x258576;};}function handleError(_0x593fdc,_0x235be5){_0x235be5=_0x235be5||0x1f4;return function(_0x10f926){logger['error'](_0x10f926[_0xb259('0x25')]);if(_0x10f926[_0xb259('0x26')]){delete _0x10f926['name'];}_0x593fdc['status'](_0x235be5)[_0xb259('0x27')](_0x10f926);};}exports[_0xb259('0x28')]=function(_0x2808ff,_0x251d48){var _0x33e6f9={},_0xa4fc40={},_0x34d147={'count':0x0,'rows':[]};var _0x3388d8=_[_0xb259('0x29')](db[_0xb259('0x2a')]['rawAttributes'],function(_0x45b12f){return{'name':_0x45b12f[_0xb259('0x2b')],'type':_0x45b12f['type'][_0xb259('0x2c')]};});_0xa4fc40[_0xb259('0x2d')]=_[_0xb259('0x29')](_0x3388d8,_0xb259('0x26'));_0xa4fc40[_0xb259('0x2e')]=_[_0xb259('0x2f')](_0x2808ff['query']);_0xa4fc40[_0xb259('0x30')]=_[_0xb259('0x31')](_0xa4fc40[_0xb259('0x2d')],_0xa4fc40[_0xb259('0x2e')]);_0x33e6f9[_0xb259('0x32')]=_[_0xb259('0x31')](_0xa4fc40[_0xb259('0x2d')],qs[_0xb259('0x33')](_0x2808ff['query'][_0xb259('0x33')]));_0x33e6f9[_0xb259('0x32')]=_0x33e6f9[_0xb259('0x32')][_0xb259('0x34')]?_0x33e6f9[_0xb259('0x32')]:_0xa4fc40[_0xb259('0x2d')];if(!_0x2808ff[_0xb259('0x2e')]['hasOwnProperty'](_0xb259('0x35'))){_0x33e6f9['limit']=qs['limit'](_0x2808ff[_0xb259('0x2e')][_0xb259('0x1a')]);_0x33e6f9[_0xb259('0x19')]=qs[_0xb259('0x19')](_0x2808ff[_0xb259('0x2e')]['offset']);}_0x33e6f9[_0xb259('0x36')]=qs[_0xb259('0x37')](_0x2808ff['query'][_0xb259('0x37')]);_0x33e6f9['where']=qs['filters'](_[_0xb259('0x38')](_0x2808ff['query'],_0xa4fc40['filters']),_0x3388d8);if(_0x2808ff[_0xb259('0x2e')][_0xb259('0x39')]){_0x33e6f9['where']=_['merge'](_0x33e6f9['where'],{'$or':_[_0xb259('0x29')](_0x3388d8,function(_0x4adee8){if(_0x4adee8['type']!==_0xb259('0x3a')){var _0x432be5={};_0x432be5[_0x4adee8['name']]={'$like':'%'+_0x2808ff[_0xb259('0x2e')][_0xb259('0x39')]+'%'};return _0x432be5;}})});}_0x33e6f9=_['merge']({},_0x33e6f9,_0x2808ff['options']);var _0x3a6e97={'where':_0x33e6f9[_0xb259('0x3b')]};return db[_0xb259('0x2a')]['count'](_0x3a6e97)[_0xb259('0x20')](function(_0x15ea75){_0x34d147[_0xb259('0x18')]=_0x15ea75;if(_0x2808ff[_0xb259('0x2e')]['includeAll']){_0x33e6f9[_0xb259('0x3c')]=[{'all':!![]}];}return db[_0xb259('0x2a')][_0xb259('0x3d')](_0x33e6f9);})[_0xb259('0x20')](function(_0x24463b){_0x34d147[_0xb259('0x3e')]=_0x24463b;return _0x34d147;})[_0xb259('0x20')](respondWithFilteredResult(_0x251d48,_0x33e6f9))['catch'](handleError(_0x251d48,null));};exports[_0xb259('0x3f')]=function(_0x36a729,_0x3f2c07){var _0x417996={'raw':!![],'where':{'id':_0x36a729[_0xb259('0x40')]['id']}},_0x3df483={};_0x3df483[_0xb259('0x2d')]=_[_0xb259('0x2f')](db['AnalyticMetric'][_0xb259('0x41')]);_0x3df483[_0xb259('0x2e')]=_[_0xb259('0x2f')](_0x36a729[_0xb259('0x2e')]);_0x3df483['filters']=_[_0xb259('0x31')](_0x3df483[_0xb259('0x2d')],_0x3df483['query']);_0x417996[_0xb259('0x32')]=_[_0xb259('0x31')](_0x3df483[_0xb259('0x2d')],qs['fields'](_0x36a729[_0xb259('0x2e')][_0xb259('0x33')]));_0x417996[_0xb259('0x32')]=_0x417996[_0xb259('0x32')][_0xb259('0x34')]?_0x417996[_0xb259('0x32')]:_0x3df483[_0xb259('0x2d')];if(_0x36a729[_0xb259('0x2e')][_0xb259('0x42')]){_0x417996['include']=[{'all':!![]}];}_0x417996=_[_0xb259('0x43')]({},_0x417996,_0x36a729['options']);return db[_0xb259('0x2a')][_0xb259('0x44')](_0x417996)[_0xb259('0x20')](handleEntityNotFound(_0x3f2c07,null))[_0xb259('0x20')](respondWithResult(_0x3f2c07,null))[_0xb259('0x45')](handleError(_0x3f2c07,null));};exports[_0xb259('0x46')]=function(_0x3c75e2,_0x1cc434){return db[_0xb259('0x2a')][_0xb259('0x46')](_0x3c75e2['body'],{})[_0xb259('0x20')](function(_0x363cc2){var _0xe3b0b2=_0x3c75e2[_0xb259('0x47')][_0xb259('0x21')]({'plain':!![]});if(!_0xe3b0b2)throw new Error(_0xb259('0x48'));if(_0xe3b0b2[_0xb259('0x49')]===_0xb259('0x47')){var _0x522b86=_0x363cc2['get']({'plain':!![]});var _0x2a342a=_0xb259('0x22');return db[_0xb259('0x4a')]['find']({'where':{'name':_0x2a342a,'userProfileId':_0xe3b0b2[_0xb259('0x4b')]},'raw':!![]})[_0xb259('0x20')](function(_0x2f48c5){if(_0x2f48c5&&_0x2f48c5[_0xb259('0x4c')]===0x0){return db[_0xb259('0x4d')][_0xb259('0x46')]({'name':_0x522b86[_0xb259('0x26')],'resourceId':_0x522b86['id'],'type':_0x2f48c5['name'],'sectionId':_0x2f48c5['id']},{})[_0xb259('0x20')](function(){return _0x363cc2;});}else{return _0x363cc2;}})[_0xb259('0x45')](function(_0x239949){logger[_0xb259('0x4e')](_0xb259('0x4f'),_0x239949);throw _0x239949;});}return _0x363cc2;})[_0xb259('0x20')](respondWithResult(_0x1cc434,0xc9))[_0xb259('0x45')](handleError(_0x1cc434,null));};exports['update']=function(_0x2e81a6,_0x1d8970){if(_0x2e81a6['body']['id']){delete _0x2e81a6[_0xb259('0x50')]['id'];}return db[_0xb259('0x2a')]['find']({'where':{'id':_0x2e81a6['params']['id']}})['then'](handleEntityNotFound(_0x1d8970,null))[_0xb259('0x20')](saveUpdates(_0x2e81a6['body'],null))[_0xb259('0x20')](respondWithResult(_0x1d8970,null))['catch'](handleError(_0x1d8970,null));};exports[_0xb259('0x23')]=function(_0x7ab68d,_0x3f28d5){return db['AnalyticMetric'][_0xb259('0x44')]({'where':{'id':_0x7ab68d[_0xb259('0x40')]['id']}})[_0xb259('0x20')](handleEntityNotFound(_0x3f28d5,null))[_0xb259('0x20')](removeEntity(_0x3f28d5,null))['catch'](handleError(_0x3f28d5,null));};