Built motion from commit (unavailable).|2.5.4
[motion2.git] / server / api / analyticCustomReport / analyticCustomReport.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 _0x9f94=['Run\x20Query:','toString','fork','../../components/export/','../../files/reports','savename','select','countTable','run','runReport','html-pdf','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','get','CustomReports','UserProfileResource','then','end','error','name','send','index','AnalyticCustomReport','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','filter','where','VIRTUAL','options','includeAll','include','rows','catch','show','find','create','body','user','role','Reports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','join','left_join','right_join','SUM(%s)','COUNT(%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','merge','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','findAll','keyBy','from','table','MetricId','metric','replace','function','format','groupBy','orderBy','DESC','alias','joins','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','MIN(%s)','HOUR(%s)','parse','parentKey','clone','No\x20available\x20data','output','web','randomstring','generate','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info'];(function(_0x4062dc,_0x50af25){var _0x4248dd=function(_0x541fe8){while(--_0x541fe8){_0x4062dc['push'](_0x4062dc['shift']());}};_0x4248dd(++_0x50af25);}(_0x9f94,0x1e7));var _0x49f9=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x9f94[_0x46e363];return _0x3fb059;};'use strict';var pdf=require(_0x49f9('0x0'));var emlformat=require(_0x49f9('0x1'));var rimraf=require(_0x49f9('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x49f9('0x3'));var moment=require(_0x49f9('0x4'));var BPromise=require(_0x49f9('0x5'));var Mustache=require(_0x49f9('0x6'));var util=require(_0x49f9('0x7'));var path=require('path');var sox=require(_0x49f9('0x8'));var csv=require(_0x49f9('0x9'));var ejs=require(_0x49f9('0xa'));var fs=require('fs');var _=require(_0x49f9('0xb'));var squel=require(_0x49f9('0xc'));var crypto=require(_0x49f9('0xd'));var jsforce=require(_0x49f9('0xe'));var deskjs=require(_0x49f9('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x49f9('0x10'));var Redis=require('ioredis');var authService=require(_0x49f9('0x11'));var qs=require(_0x49f9('0x12'));var as=require(_0x49f9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49f9('0x14'))('api');var utils=require(_0x49f9('0x15'));var config=require(_0x49f9('0x16'));var db=require(_0x49f9('0x17'))['db'];var dbH=require(_0x49f9('0x17'))['dbH'];function respondWithStatusCode(_0x52c3fe,_0x446fb1){_0x446fb1=_0x446fb1||0xcc;return function(_0x9ed1f5){if(_0x9ed1f5){return _0x52c3fe[_0x49f9('0x18')](_0x446fb1);}return _0x52c3fe[_0x49f9('0x19')](_0x446fb1)['end']();};}function respondWithResult(_0x4e7790,_0x5f1577){_0x5f1577=_0x5f1577||0xc8;return function(_0x2a23dc){if(_0x2a23dc){return _0x4e7790['status'](_0x5f1577)[_0x49f9('0x1a')](_0x2a23dc);}};}function respondWithFilteredResult(_0x4b8228,_0x398a05){return function(_0x760ac){if(_0x760ac){var _0x482aa5=_0x760ac[_0x49f9('0x1b')],_0x45a376=_0x398a05[_0x49f9('0x1c')],_0x1a2026=_0x398a05[_0x49f9('0x1c')]+_0x398a05[_0x49f9('0x1d')],_0x24250f;if(_0x1a2026>=_0x482aa5){_0x1a2026=_0x482aa5;_0x24250f=0xc8;}else{_0x24250f=0xce;}_0x4b8228[_0x49f9('0x19')](_0x24250f);return _0x4b8228[_0x49f9('0x1e')](_0x49f9('0x1f'),_0x45a376+'-'+_0x1a2026+'/'+_0x482aa5)[_0x49f9('0x1a')](_0x760ac);}return null;};}function patchUpdates(_0x1971e3){return function(_0xa9b24c){try{jsonpatch[_0x49f9('0x20')](_0xa9b24c,_0x1971e3,!![]);}catch(_0x136836){return BPromise['reject'](_0x136836);}return _0xa9b24c['save']();};}function saveUpdates(_0x916ef5,_0x4884ef){return function(_0x3e8a62){if(_0x3e8a62){return _0x3e8a62['update'](_0x916ef5)['then'](function(_0x42c0aa){return _0x42c0aa;});}return null;};}function removeEntity(_0xde1383,_0x4e92e5){return function(_0x372347){if(_0x372347){return _0x372347['destroy']()['then'](function(){var _0xf2afb7=_0x372347[_0x49f9('0x21')]({'plain':!![]});var _0x5757d3=_0x49f9('0x22');return db[_0x49f9('0x23')]['destroy']({'where':{'type':_0x5757d3,'resourceId':_0xf2afb7['id']}})[_0x49f9('0x24')](function(){return _0x372347;});})[_0x49f9('0x24')](function(){_0xde1383[_0x49f9('0x19')](0xcc)[_0x49f9('0x25')]();});}};}function handleEntityNotFound(_0x4e6a90,_0xa559a2){return function(_0x3aff06){if(!_0x3aff06){_0x4e6a90[_0x49f9('0x18')](0x194);}return _0x3aff06;};}function handleError(_0x10da65,_0x28e56f){_0x28e56f=_0x28e56f||0x1f4;return function(_0x45e077){logger[_0x49f9('0x26')](_0x45e077['stack']);if(_0x45e077['name']){delete _0x45e077[_0x49f9('0x27')];}_0x10da65[_0x49f9('0x19')](_0x28e56f)[_0x49f9('0x28')](_0x45e077);};}exports[_0x49f9('0x29')]=function(_0x51adc3,_0x2d1e7d){var _0x76e1c6={},_0x1deb22={},_0x5c8fc5={'count':0x0,'rows':[]};var _0xc0a9aa=_['map'](db[_0x49f9('0x2a')][_0x49f9('0x2b')],function(_0x39f66a){return{'name':_0x39f66a['fieldName'],'type':_0x39f66a[_0x49f9('0x2c')][_0x49f9('0x2d')]};});_0x1deb22[_0x49f9('0x2e')]=_[_0x49f9('0x2f')](_0xc0a9aa,_0x49f9('0x27'));_0x1deb22[_0x49f9('0x30')]=_[_0x49f9('0x31')](_0x51adc3[_0x49f9('0x30')]);_0x1deb22[_0x49f9('0x32')]=_[_0x49f9('0x33')](_0x1deb22[_0x49f9('0x2e')],_0x1deb22[_0x49f9('0x30')]);_0x76e1c6[_0x49f9('0x34')]=_[_0x49f9('0x33')](_0x1deb22[_0x49f9('0x2e')],qs[_0x49f9('0x35')](_0x51adc3[_0x49f9('0x30')]['fields']));_0x76e1c6[_0x49f9('0x34')]=_0x76e1c6[_0x49f9('0x34')][_0x49f9('0x36')]?_0x76e1c6[_0x49f9('0x34')]:_0x1deb22['model'];if(!_0x51adc3['query'][_0x49f9('0x37')]('nolimit')){_0x76e1c6[_0x49f9('0x1d')]=qs[_0x49f9('0x1d')](_0x51adc3[_0x49f9('0x30')][_0x49f9('0x1d')]);_0x76e1c6[_0x49f9('0x1c')]=qs[_0x49f9('0x1c')](_0x51adc3[_0x49f9('0x30')]['offset']);}_0x76e1c6[_0x49f9('0x38')]=qs[_0x49f9('0x39')](_0x51adc3['query']['sort']);_0x76e1c6['where']=qs[_0x49f9('0x32')](_['pick'](_0x51adc3['query'],_0x1deb22[_0x49f9('0x32')]),_0xc0a9aa);if(_0x51adc3[_0x49f9('0x30')][_0x49f9('0x3a')]){_0x76e1c6[_0x49f9('0x3b')]=_['merge'](_0x76e1c6[_0x49f9('0x3b')],{'$or':_['map'](_0xc0a9aa,function(_0x2e1277){if(_0x2e1277[_0x49f9('0x2c')]!==_0x49f9('0x3c')){var _0x33bac9={};_0x33bac9[_0x2e1277[_0x49f9('0x27')]]={'$like':'%'+_0x51adc3[_0x49f9('0x30')]['filter']+'%'};return _0x33bac9;}})});}_0x76e1c6=_['merge']({},_0x76e1c6,_0x51adc3[_0x49f9('0x3d')]);var _0x2fecb6={'where':_0x76e1c6[_0x49f9('0x3b')]};return db['AnalyticCustomReport'][_0x49f9('0x1b')](_0x2fecb6)[_0x49f9('0x24')](function(_0x4c656c){_0x5c8fc5['count']=_0x4c656c;if(_0x51adc3[_0x49f9('0x30')][_0x49f9('0x3e')]){_0x76e1c6[_0x49f9('0x3f')]=[{'all':!![]}];}return db[_0x49f9('0x2a')]['findAll'](_0x76e1c6);})[_0x49f9('0x24')](function(_0x4b760e){_0x5c8fc5[_0x49f9('0x40')]=_0x4b760e;return _0x5c8fc5;})[_0x49f9('0x24')](respondWithFilteredResult(_0x2d1e7d,_0x76e1c6))[_0x49f9('0x41')](handleError(_0x2d1e7d,null));};exports[_0x49f9('0x42')]=function(_0x2693be,_0x1bc0c9){var _0x11398a={'raw':![],'where':{'id':_0x2693be['params']['id']}},_0x338974={};_0x338974[_0x49f9('0x2e')]=_[_0x49f9('0x31')](db[_0x49f9('0x2a')][_0x49f9('0x2b')]);_0x338974[_0x49f9('0x30')]=_[_0x49f9('0x31')](_0x2693be[_0x49f9('0x30')]);_0x338974['filters']=_[_0x49f9('0x33')](_0x338974['model'],_0x338974[_0x49f9('0x30')]);_0x11398a[_0x49f9('0x34')]=_['intersection'](_0x338974[_0x49f9('0x2e')],qs[_0x49f9('0x35')](_0x2693be['query'][_0x49f9('0x35')]));_0x11398a[_0x49f9('0x34')]=_0x11398a['attributes'][_0x49f9('0x36')]?_0x11398a[_0x49f9('0x34')]:_0x338974[_0x49f9('0x2e')];if(_0x2693be[_0x49f9('0x30')][_0x49f9('0x3e')]){_0x11398a[_0x49f9('0x3f')]=[{'all':!![]}];}_0x11398a=_['merge']({},_0x11398a,_0x2693be[_0x49f9('0x3d')]);return db['AnalyticCustomReport'][_0x49f9('0x43')](_0x11398a)[_0x49f9('0x24')](handleEntityNotFound(_0x1bc0c9,null))['then'](respondWithResult(_0x1bc0c9,null))[_0x49f9('0x41')](handleError(_0x1bc0c9,null));};exports[_0x49f9('0x44')]=function(_0x9649c5,_0x10b535){return db[_0x49f9('0x2a')][_0x49f9('0x44')](_0x9649c5[_0x49f9('0x45')],{})[_0x49f9('0x24')](function(_0x6936a3){var _0x2e62dd=_0x9649c5[_0x49f9('0x46')]['get']({'plain':!![]});if(!_0x2e62dd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2e62dd[_0x49f9('0x47')]===_0x49f9('0x46')){var _0x1a0bfe=_0x6936a3[_0x49f9('0x21')]({'plain':!![]});var _0xacd19a=_0x49f9('0x48');return db[_0x49f9('0x49')]['find']({'where':{'name':_0xacd19a,'userProfileId':_0x2e62dd[_0x49f9('0x4a')]},'raw':!![]})[_0x49f9('0x24')](function(_0x58060){if(_0x58060&&_0x58060[_0x49f9('0x4b')]===0x0){return db[_0x49f9('0x23')]['create']({'name':_0x1a0bfe['name'],'resourceId':_0x1a0bfe['id'],'type':'CustomReports','sectionId':_0x58060['id']},{})[_0x49f9('0x24')](function(){return _0x6936a3;});}else{return _0x6936a3;}})[_0x49f9('0x41')](function(_0x186db7){logger[_0x49f9('0x26')](_0x49f9('0x4c'),_0x186db7);throw _0x186db7;});}return _0x6936a3;})[_0x49f9('0x24')](respondWithResult(_0x10b535,0xc9))['catch'](handleError(_0x10b535,null));};exports[_0x49f9('0x4d')]=function(_0x57acbb,_0x2fa14c){if(_0x57acbb['body']['id']){delete _0x57acbb['body']['id'];}return db[_0x49f9('0x2a')]['find']({'where':{'id':_0x57acbb[_0x49f9('0x4e')]['id']}})[_0x49f9('0x24')](handleEntityNotFound(_0x2fa14c,null))[_0x49f9('0x24')](saveUpdates(_0x57acbb[_0x49f9('0x45')],null))[_0x49f9('0x24')](respondWithResult(_0x2fa14c,null))[_0x49f9('0x41')](handleError(_0x2fa14c,null));};exports['destroy']=function(_0x5f649b,_0x2463ea){return db[_0x49f9('0x2a')][_0x49f9('0x43')]({'where':{'id':_0x5f649b[_0x49f9('0x4e')]['id']}})[_0x49f9('0x24')](handleEntityNotFound(_0x2463ea,null))[_0x49f9('0x24')](removeEntity(_0x2463ea,null))[_0x49f9('0x41')](handleError(_0x2463ea,null));};exports['preview']=function(_0x33d7d9,_0x594664){var _0x2ed3d2=0xa;var _0x249cfa=[_0x49f9('0x4f'),_0x49f9('0x50'),_0x49f9('0x51'),'cross_join'];var _0xbd2b8f={'SUM':_0x49f9('0x52'),'COUNT':_0x49f9('0x53'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x49f9('0x54'),'MIN':'MIN(%s)','AVG':_0x49f9('0x55'),'GROUP_CONCAT':_0x49f9('0x56'),'GROUP_CONCAT ASC':_0x49f9('0x57'),'GROUP_CONCAT DESC':_0x49f9('0x58')};var _0x556287={'SEC_TO_TIME':_0x49f9('0x59'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x49f9('0x5a'),'UNIX_TIMESTAMP':_0x49f9('0x5b')};var _0x55b708=function(_0x104174){return!_[_0x49f9('0x5c')]([_0x49f9('0x5d'),_0x49f9('0x5e'),_0x49f9('0x5f'),_0x49f9('0x60')],_0x104174);};var _0x568a90=function(_0x55579b){if(!_0x55579b||!_0x55579b[_0x49f9('0x61')][_0x49f9('0x36')]){return'';}for(var _0x579800='(',_0x457c2f=0x0;_0x457c2f<_0x55579b[_0x49f9('0x61')][_0x49f9('0x36')];_0x457c2f+=0x1){_0x457c2f>0x0&&(_0x579800+='\x20'+_0x55579b[_0x49f9('0x62')]+'\x20');_0x579800+=_0x55579b[_0x49f9('0x61')][_0x457c2f][_0x49f9('0x63')]?_0x568a90(_0x55579b['rules'][_0x457c2f][_0x49f9('0x63')]):_0x55579b[_0x49f9('0x61')][_0x457c2f][_0x49f9('0x64')]+'\x20'+_0x55579b[_0x49f9('0x61')][_0x457c2f][_0x49f9('0x65')]+(_0x55b708(_0x55579b[_0x49f9('0x61')][_0x457c2f][_0x49f9('0x65')])?'\x20'+_0x55579b[_0x49f9('0x61')][_0x457c2f][_0x49f9('0x66')]:'');}return _0x579800+')';};var _0x34098e={'where':{'id':_0x33d7d9[_0x49f9('0x4e')]['id']}},_0x253edf,_0x2bd3ec,_0x3f3f26,_0x149159,_0x18e165;_0x34098e=_[_0x49f9('0x67')]({},_0x34098e,_0x33d7d9['options']);return db[_0x49f9('0x2a')]['find'](_0x34098e)['then'](function(_0x187494){if(_0x187494){_0x253edf=_0x187494;return _0x187494[_0x49f9('0x68')]();}return null;})[_0x49f9('0x24')](function(_0x564eca){if(_0x564eca){if(!_0x564eca['length']){throw new db[(_0x49f9('0x69'))][(_0x49f9('0x6a'))](_0x49f9('0x6b'),0x193);}_0x2bd3ec=_0x564eca;return db['AnalyticMetric'][_0x49f9('0x6c')]({'raw':!![]});}return null;})[_0x49f9('0x24')](function(_0x2316e2){if(_0x2316e2){_0x3f3f26=_[_0x49f9('0x6d')](_0x2316e2,'id');var _0x5bdcef;var _0x3ae840=squel['select']();_0x3ae840[_0x49f9('0x6e')](_0x253edf[_0x49f9('0x6f')]);for(var _0x412060=0x0;_0x412060<_0x2bd3ec[_0x49f9('0x36')];_0x412060+=0x1){_0x5bdcef=_0x2bd3ec[_0x412060][_0x49f9('0x70')]?_0x3f3f26[_0x2bd3ec[_0x412060]['MetricId']][_0x49f9('0x71')]:_0x2bd3ec[_0x412060][_0x49f9('0x64')];_0x5bdcef=_0x2bd3ec[_0x412060]['function']?_[_0x49f9('0x72')](_0xbd2b8f[_0x2bd3ec[_0x412060][_0x49f9('0x73')]],'%s',_0x5bdcef):_0x5bdcef;_0x5bdcef=_0x2bd3ec[_0x412060][_0x49f9('0x74')]?_[_0x49f9('0x72')](_0x556287[_0x2bd3ec[_0x412060]['format']],'%s',_0x5bdcef):_0x5bdcef;if(_0x2bd3ec[_0x412060][_0x49f9('0x75')]){_0x3ae840['group'](_0x5bdcef);}_0x2bd3ec[_0x412060][_0x49f9('0x76')]&&_0x3ae840[_0x49f9('0x38')](_0x5bdcef,_0x2bd3ec[_0x412060][_0x49f9('0x76')]===_0x49f9('0x77')?![]:!![]);_0x3ae840[_0x49f9('0x64')](_0x5bdcef,_0x2bd3ec[_0x412060][_0x49f9('0x78')]||_0x5bdcef);}if(_0x253edf[_0x49f9('0x79')]){_0x253edf[_0x49f9('0x79')]=JSON['parse'](_0x253edf[_0x49f9('0x79')]);for(var _0x33642f=0x0;_0x33642f<_0x253edf['joins'][_0x49f9('0x36')];_0x33642f+=0x1){if(_0x253edf['joins'][_0x33642f][_0x49f9('0x2c')]&&_[_0x49f9('0x5c')](_0x249cfa,_0x253edf['joins'][_0x33642f]['type'])&&_0x253edf['joins'][_0x33642f]['parentKey']&&_0x253edf[_0x49f9('0x79')][_0x33642f][_0x49f9('0x7a')]&&_0x253edf['joins'][_0x33642f][_0x49f9('0x7b')]){_0x3ae840[_0x253edf['joins'][_0x33642f]['type']](_0x253edf[_0x49f9('0x79')][_0x33642f]['foreignTable'],null,util[_0x49f9('0x74')](_0x49f9('0x7c'),_0x253edf['table'],_0x253edf['joins'][_0x33642f]['parentKey'],_0x253edf['joins'][_0x33642f]['foreignTable'],_0x253edf[_0x49f9('0x79')][_0x33642f][_0x49f9('0x7b')]));}}}if(_0x253edf['conditions']){_0x253edf[_0x49f9('0x7d')]=JSON['parse'](_0x253edf[_0x49f9('0x7d')]);_0x3ae840[_0x49f9('0x3b')](_0x568a90(_0x253edf[_0x49f9('0x7d')]['group']));}_0x18e165=_0x3ae840['clone']();_0x3ae840[_0x49f9('0x1d')](_0x2ed3d2);_0x3ae840['offset'](0x0);logger[_0x49f9('0x7e')](_0x49f9('0x7f'),_0x3ae840['toString']());return db['sequelize'][_0x49f9('0x30')](_0x3ae840['toString'](),{'type':db[_0x49f9('0x80')][_0x49f9('0x81')][_0x49f9('0x82')]});}})[_0x49f9('0x24')](respondWithResult(_0x594664,null))['catch'](handleError(_0x594664,null));};function runReport(_0x182bdc,_0x31c4a6,_0x6fc9c){var _0x2b7938=_0x31c4a6['name'];var _0x3f86cb=0xa;var _0x7410f1=[_0x49f9('0x4f'),_0x49f9('0x50'),_0x49f9('0x51'),'cross_join'];var _0x5143e1={'SUM':_0x49f9('0x52'),'COUNT':_0x49f9('0x53'),'COUNT DISTINCT':_0x49f9('0x83'),'MAX':_0x49f9('0x54'),'MIN':_0x49f9('0x84'),'AVG':_0x49f9('0x55'),'GROUP_CONCAT':_0x49f9('0x56'),'GROUP_CONCAT ASC':_0x49f9('0x57'),'GROUP_CONCAT DESC':_0x49f9('0x58')};var _0x590cf3={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x49f9('0x85'),'ROUND':_0x49f9('0x5a'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x205f43=function(_0x4e7a7e){return!_['includes']([_0x49f9('0x5d'),_0x49f9('0x5e'),_0x49f9('0x5f'),_0x49f9('0x60')],_0x4e7a7e);};var _0x3ae2b3=function(_0x323f41){if(!_0x323f41||!_0x323f41[_0x49f9('0x61')][_0x49f9('0x36')]){return'';}for(var _0x27a4c9='(',_0x17aa19=0x0;_0x17aa19<_0x323f41[_0x49f9('0x61')][_0x49f9('0x36')];_0x17aa19+=0x1){_0x17aa19>0x0&&(_0x27a4c9+='\x20'+_0x323f41[_0x49f9('0x62')]+'\x20');_0x27a4c9+=_0x323f41['rules'][_0x17aa19][_0x49f9('0x63')]?_0x3ae2b3(_0x323f41[_0x49f9('0x61')][_0x17aa19][_0x49f9('0x63')]):_0x323f41[_0x49f9('0x61')][_0x17aa19][_0x49f9('0x64')]+'\x20'+_0x323f41['rules'][_0x17aa19][_0x49f9('0x65')]+(_0x205f43(_0x323f41[_0x49f9('0x61')][_0x17aa19]['condition'])?'\x20'+_0x323f41['rules'][_0x17aa19]['value']:'');}return _0x27a4c9+')';};var _0xf037f0={'where':{'id':_0x182bdc['id']}},_0x7988b7,_0x471bd5,_0x396ee1,_0x486fac,_0xfc4a3e;_0xf037f0=_[_0x49f9('0x67')]({},_0xf037f0,_0x6fc9c);return db[_0x49f9('0x2a')]['find'](_0xf037f0)[_0x49f9('0x24')](function(_0x57b879){if(_0x57b879){_0x7988b7=_0x57b879;return _0x57b879[_0x49f9('0x68')]();}return null;})['then'](function(_0x4e5d45){if(_0x4e5d45){if(!_0x4e5d45[_0x49f9('0x36')]){throw new db[(_0x49f9('0x69'))][(_0x49f9('0x6a'))](_0x49f9('0x6b'),0x193);}_0x471bd5=_0x4e5d45;return db['AnalyticMetric'][_0x49f9('0x6c')]({'raw':!![]});}return null;})[_0x49f9('0x24')](function(_0x4db188){if(_0x4db188){_0x396ee1=_['keyBy'](_0x4db188,'id');var _0x4a66f8;var _0x4e732c=squel['select']();_0x4e732c[_0x49f9('0x6e')](_0x7988b7[_0x49f9('0x6f')]);for(var _0x3d045b=0x0;_0x3d045b<_0x471bd5[_0x49f9('0x36')];_0x3d045b+=0x1){_0x4a66f8=_0x471bd5[_0x3d045b][_0x49f9('0x70')]?_0x396ee1[_0x471bd5[_0x3d045b]['MetricId']][_0x49f9('0x71')]:_0x471bd5[_0x3d045b][_0x49f9('0x64')];_0x4a66f8=_0x471bd5[_0x3d045b][_0x49f9('0x73')]?_[_0x49f9('0x72')](_0x5143e1[_0x471bd5[_0x3d045b][_0x49f9('0x73')]],'%s',_0x4a66f8):_0x4a66f8;_0x4a66f8=_0x471bd5[_0x3d045b]['format']?_['replace'](_0x590cf3[_0x471bd5[_0x3d045b][_0x49f9('0x74')]],'%s',_0x4a66f8):_0x4a66f8;if(_0x471bd5[_0x3d045b]['groupBy']){_0x4e732c['group'](_0x4a66f8);}_0x471bd5[_0x3d045b][_0x49f9('0x76')]&&_0x4e732c[_0x49f9('0x38')](_0x4a66f8,_0x471bd5[_0x3d045b]['orderBy']==='DESC'?![]:!![]);_0x4e732c[_0x49f9('0x64')](_0x4a66f8,_0x471bd5[_0x3d045b][_0x49f9('0x78')]||_0x4a66f8);}if(_0x7988b7[_0x49f9('0x79')]){_0x7988b7[_0x49f9('0x79')]=JSON[_0x49f9('0x86')](_0x7988b7[_0x49f9('0x79')]);for(var _0x499280=0x0;_0x499280<_0x7988b7[_0x49f9('0x79')][_0x49f9('0x36')];_0x499280+=0x1){if(_0x7988b7[_0x49f9('0x79')][_0x499280][_0x49f9('0x2c')]&&_['includes'](_0x7410f1,_0x7988b7[_0x49f9('0x79')][_0x499280][_0x49f9('0x2c')])&&_0x7988b7['joins'][_0x499280][_0x49f9('0x87')]&&_0x7988b7[_0x49f9('0x79')][_0x499280][_0x49f9('0x7a')]&&_0x7988b7[_0x49f9('0x79')][_0x499280][_0x49f9('0x7b')]){_0x4e732c[_0x7988b7['joins'][_0x499280][_0x49f9('0x2c')]](_0x7988b7[_0x49f9('0x79')][_0x499280]['foreignTable'],null,util[_0x49f9('0x74')]('%s.%s\x20=\x20%s.%s',_0x7988b7['table'],_0x7988b7[_0x49f9('0x79')][_0x499280][_0x49f9('0x87')],_0x7988b7['joins'][_0x499280][_0x49f9('0x7a')],_0x7988b7['joins'][_0x499280][_0x49f9('0x7b')]));}}}if(_0x7988b7[_0x49f9('0x7d')]){_0x7988b7['conditions']=JSON[_0x49f9('0x86')](_0x7988b7[_0x49f9('0x7d')]);_0x4e732c[_0x49f9('0x3b')](_0x3ae2b3(_0x7988b7['conditions'][_0x49f9('0x63')]));}_0xfc4a3e=_0x4e732c[_0x49f9('0x88')]();_0x4e732c['limit'](_0x3f86cb);_0x4e732c['offset'](0x0);logger['debug'](_0x49f9('0x7f'),_0x4e732c['toString']());return db['sequelize'][_0x49f9('0x30')](_0x4e732c['toString'](),{'type':db[_0x49f9('0x80')]['QueryTypes']['SELECT']});}})[_0x49f9('0x24')](function(_0x2111d4){if(!_0x2111d4[_0x49f9('0x36')]){throw new db[(_0x49f9('0x69'))]['ValidationErrorItem'](_0x49f9('0x89'),0xcc);}if(_0x31c4a6[_0x49f9('0x8a')]===_0x49f9('0x8b')){return null;}var _0xf7b0aa=_[_0x49f9('0x67')](_0x31c4a6,{'name':_0x31c4a6['fullPath']||_0x31c4a6[_0x49f9('0x27')]||_0x7988b7['name'],'basename':_0x2b7938,'savename':util[_0x49f9('0x74')]('%s-%s.%s',_0x31c4a6[_0x49f9('0x27')]||_0x7988b7['name'],require(_0x49f9('0x8c'))[_0x49f9('0x8d')](0x4),_0x31c4a6[_0x49f9('0x8a')]||'csv'),'reportId':_0x7988b7['id'],'reportType':_0x49f9('0x8e')});return db[_0x49f9('0x8f')][_0x49f9('0x44')](_0xf7b0aa,{'raw':!![]});})[_0x49f9('0x24')](function(_0x4a4ae4){if(_0x7988b7[_0x49f9('0x6f')]==='cdr'){_0xfc4a3e[_0x49f9('0x3b')](_0x7988b7['table']+_0x49f9('0x90'),_0x31c4a6[_0x49f9('0x91')],_0x31c4a6[_0x49f9('0x92')]);}else{_0xfc4a3e['where'](_0x7988b7[_0x49f9('0x6f')]+_0x49f9('0x93'),_0x31c4a6[_0x49f9('0x91')],_0x31c4a6[_0x49f9('0x92')]);}if(_0x4a4ae4){logger[_0x49f9('0x94')](_0x49f9('0x95'),_0xfc4a3e[_0x49f9('0x96')]());require('child_process')[_0x49f9('0x97')](path[_0x49f9('0x4f')](__dirname,_0x49f9('0x98'),_0x4a4ae4[_0x49f9('0x8a')]),[_0x4a4ae4['id'],_0xfc4a3e[_0x49f9('0x96')](),path['join'](__dirname,_0x49f9('0x99'),_0x4a4ae4[_0x49f9('0x9a')]),_0x2b7938]);return _0x4a4ae4;}else{var _0x1fe414=squel[_0x49f9('0x9b')]();_0x1fe414[_0x49f9('0x6e')]('('+_0xfc4a3e[_0x49f9('0x96')]()+')',_0x49f9('0x9c'));_0x1fe414[_0x49f9('0x64')]('COUNT(*)',_0x49f9('0x1b'));_0xfc4a3e['limit'](_0x31c4a6[_0x49f9('0x1d')]||_0x3f86cb);_0xfc4a3e[_0x49f9('0x1c')](_0x31c4a6[_0x49f9('0x1c')]||0x0);return dbH[_0x49f9('0x80')][_0x49f9('0x30')](_0x1fe414['toString'](),{'type':dbH[_0x49f9('0x80')]['QueryTypes']['SELECT']})[_0x49f9('0x24')](function(_0x17e21c){if(!_0x17e21c['length']){_0x486fac=0x0;}else{_0x486fac=_0x17e21c[0x0]['count']||0x0;}return dbH[_0x49f9('0x80')][_0x49f9('0x30')](_0xfc4a3e[_0x49f9('0x96')](),{'type':dbH['sequelize'][_0x49f9('0x81')][_0x49f9('0x82')]});})[_0x49f9('0x24')](function(_0x210969){return{'rows':_0x210969||[],'count':_0x486fac};});}});}exports[_0x49f9('0x9d')]=function(_0x4d23da,_0x5a712d){return runReport(_0x4d23da[_0x49f9('0x4e')],_0x4d23da[_0x49f9('0x30')],_0x4d23da['options'])[_0x49f9('0x24')](respondWithResult(_0x5a712d,null))[_0x49f9('0x41')](handleError(_0x5a712d,null));};exports[_0x49f9('0x9e')]=runReport;exports[_0x49f9('0x30')]=function(_0x497805,_0xc1b686){var _0x2923df=0xa;var _0x259a20=[_0x49f9('0x4f'),_0x49f9('0x50'),_0x49f9('0x51'),'cross_join'];var _0x286b90={'SUM':_0x49f9('0x52'),'COUNT':_0x49f9('0x53'),'COUNT DISTINCT':_0x49f9('0x83'),'MAX':'MAX(%s)','MIN':_0x49f9('0x84'),'AVG':_0x49f9('0x55'),'GROUP_CONCAT':_0x49f9('0x56'),'GROUP_CONCAT ASC':_0x49f9('0x57'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x58bf69={'SEC_TO_TIME':_0x49f9('0x59'),'DATE':'DATE(%s)','HOUR':_0x49f9('0x85'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x49f9('0x5b')};var _0x4031f4=function(_0xf198e5){return!_[_0x49f9('0x5c')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x49f9('0x5f'),'IS\x20NOT\x20EMPTY'],_0xf198e5);};var _0x56a244=function(_0x32264f){if(!_0x32264f||!_0x32264f['rules'][_0x49f9('0x36')]){return'';}for(var _0x21ca71='(',_0x14de03=0x0;_0x14de03<_0x32264f[_0x49f9('0x61')][_0x49f9('0x36')];_0x14de03+=0x1){_0x14de03>0x0&&(_0x21ca71+='\x20'+_0x32264f[_0x49f9('0x62')]+'\x20');_0x21ca71+=_0x32264f[_0x49f9('0x61')][_0x14de03][_0x49f9('0x63')]?_0x56a244(_0x32264f[_0x49f9('0x61')][_0x14de03][_0x49f9('0x63')]):_0x32264f[_0x49f9('0x61')][_0x14de03]['field']+'\x20'+_0x32264f[_0x49f9('0x61')][_0x14de03][_0x49f9('0x65')]+(_0x4031f4(_0x32264f[_0x49f9('0x61')][_0x14de03][_0x49f9('0x65')])?'\x20'+_0x32264f[_0x49f9('0x61')][_0x14de03][_0x49f9('0x66')]:'');}return _0x21ca71+')';};var _0x5b7030={'where':{'id':_0x497805[_0x49f9('0x4e')]['id']}},_0x1da9a7,_0x1a0c41,_0x3f3419,_0x2cefe1,_0x3b051c;_0x5b7030=_['merge']({},_0x5b7030,_0x497805[_0x49f9('0x3d')]);return db[_0x49f9('0x2a')][_0x49f9('0x43')](_0x5b7030)[_0x49f9('0x24')](function(_0x575947){if(_0x575947){_0x1da9a7=_0x575947;return _0x575947[_0x49f9('0x68')]();}return null;})['then'](function(_0x37efa9){if(_0x37efa9){if(!_0x37efa9[_0x49f9('0x36')]){throw new db[(_0x49f9('0x69'))][(_0x49f9('0x6a'))](_0x49f9('0x6b'),0x193);}_0x1a0c41=_0x37efa9;return db['AnalyticMetric'][_0x49f9('0x6c')]({'raw':!![]});}return null;})[_0x49f9('0x24')](function(_0x32e9c6){if(_0x32e9c6){_0x3f3419=_[_0x49f9('0x6d')](_0x32e9c6,'id');var _0x1a92bc;var _0x51494a=squel[_0x49f9('0x9b')]();_0x51494a[_0x49f9('0x6e')](_0x1da9a7[_0x49f9('0x6f')]);for(var _0x18b947=0x0;_0x18b947<_0x1a0c41['length'];_0x18b947+=0x1){_0x1a92bc=_0x1a0c41[_0x18b947]['MetricId']?_0x3f3419[_0x1a0c41[_0x18b947][_0x49f9('0x70')]][_0x49f9('0x71')]:_0x1a0c41[_0x18b947][_0x49f9('0x64')];_0x1a92bc=_0x1a0c41[_0x18b947][_0x49f9('0x73')]?_['replace'](_0x286b90[_0x1a0c41[_0x18b947][_0x49f9('0x73')]],'%s',_0x1a92bc):_0x1a92bc;_0x1a92bc=_0x1a0c41[_0x18b947]['format']?_[_0x49f9('0x72')](_0x58bf69[_0x1a0c41[_0x18b947][_0x49f9('0x74')]],'%s',_0x1a92bc):_0x1a92bc;if(_0x1a0c41[_0x18b947][_0x49f9('0x75')]){_0x51494a[_0x49f9('0x63')](_0x1a92bc);}_0x1a0c41[_0x18b947][_0x49f9('0x76')]&&_0x51494a['order'](_0x1a92bc,_0x1a0c41[_0x18b947][_0x49f9('0x76')]===_0x49f9('0x77')?![]:!![]);_0x51494a[_0x49f9('0x64')](_0x1a92bc,_0x1a0c41[_0x18b947][_0x49f9('0x78')]||_0x1a92bc);}if(_0x1da9a7['joins']){_0x1da9a7[_0x49f9('0x79')]=JSON['parse'](_0x1da9a7['joins']);for(var _0x2af1f5=0x0;_0x2af1f5<_0x1da9a7[_0x49f9('0x79')][_0x49f9('0x36')];_0x2af1f5+=0x1){if(_0x1da9a7[_0x49f9('0x79')][_0x2af1f5][_0x49f9('0x2c')]&&_['includes'](_0x259a20,_0x1da9a7['joins'][_0x2af1f5][_0x49f9('0x2c')])&&_0x1da9a7[_0x49f9('0x79')][_0x2af1f5][_0x49f9('0x87')]&&_0x1da9a7[_0x49f9('0x79')][_0x2af1f5][_0x49f9('0x7a')]&&_0x1da9a7[_0x49f9('0x79')][_0x2af1f5][_0x49f9('0x7b')]){_0x51494a[_0x1da9a7['joins'][_0x2af1f5][_0x49f9('0x2c')]](_0x1da9a7[_0x49f9('0x79')][_0x2af1f5][_0x49f9('0x7a')],null,util[_0x49f9('0x74')](_0x49f9('0x7c'),_0x1da9a7['table'],_0x1da9a7[_0x49f9('0x79')][_0x2af1f5][_0x49f9('0x87')],_0x1da9a7[_0x49f9('0x79')][_0x2af1f5][_0x49f9('0x7a')],_0x1da9a7['joins'][_0x2af1f5][_0x49f9('0x7b')]));}}}if(_0x1da9a7[_0x49f9('0x7d')]){_0x1da9a7[_0x49f9('0x7d')]=JSON['parse'](_0x1da9a7[_0x49f9('0x7d')]);_0x51494a['where'](_0x56a244(_0x1da9a7[_0x49f9('0x7d')]['group']));}_0x3b051c=_0x51494a[_0x49f9('0x88')]();_0x51494a[_0x49f9('0x1d')](_0x2923df);_0x51494a[_0x49f9('0x1c')](0x0);logger[_0x49f9('0x7e')](_0x49f9('0x7f'),_0x51494a[_0x49f9('0x96')]());return db[_0x49f9('0x80')]['query'](_0x51494a[_0x49f9('0x96')](),{'type':db['sequelize'][_0x49f9('0x81')][_0x49f9('0x82')]});}})['then'](function(){return{'sql':_0x3b051c[_0x49f9('0x96')]()};})['then'](respondWithResult(_0xc1b686,null))['catch'](handleError(_0xc1b686,null));};