0072d80795d480cbe2626da5e97f47db99f9ba1c
[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 _0xe389=['foreignKey','%s.%s\x20=\x20%s.%s','conditions','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','SEC_TO_TIME(%s)','AnalyticMetric','from','clone','web','fullPath','randomstring','generate','output','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','info','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','runReport','SUM(%s)','MAX(%s)','debug','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','send','index','map','AnalyticCustomReport','fieldName','type','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','merge','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','autoAssociation','preview','join','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','select','table','MetricId','metric','function','replace','format','groupBy','order','orderBy','DESC','joins','parse','parentKey','foreignTable'];(function(_0x179d07,_0x29431a){var _0xbcbe0b=function(_0xaefa24){while(--_0xaefa24){_0x179d07['push'](_0x179d07['shift']());}};_0xbcbe0b(++_0x29431a);}(_0xe389,0x15a));var _0x9e38=function(_0x1d2455,_0x3cf9fc){_0x1d2455=_0x1d2455-0x0;var _0x2a061d=_0xe389[_0x1d2455];return _0x2a061d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9e38('0x0'));var jsonpatch=require(_0x9e38('0x1'));var rp=require(_0x9e38('0x2'));var moment=require('moment');var BPromise=require(_0x9e38('0x3'));var Mustache=require(_0x9e38('0x4'));var util=require(_0x9e38('0x5'));var path=require('path');var sox=require(_0x9e38('0x6'));var csv=require(_0x9e38('0x7'));var ejs=require(_0x9e38('0x8'));var fs=require('fs');var fs_extra=require(_0x9e38('0x9'));var _=require(_0x9e38('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9e38('0x7'));var querystring=require(_0x9e38('0xb'));var Papa=require('papaparse');var Redis=require(_0x9e38('0xc'));var authService=require(_0x9e38('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x9e38('0xe'));var hardwareService=require(_0x9e38('0xf'));var logger=require(_0x9e38('0x10'))(_0x9e38('0x11'));var utils=require('../../config/utils');var config=require(_0x9e38('0x12'));var licenseUtil=require(_0x9e38('0x13'));var db=require(_0x9e38('0x14'))['db'];var dbH=require(_0x9e38('0x14'))['dbH'];function respondWithStatusCode(_0xd1a83,_0xfdae9){_0xfdae9=_0xfdae9||0xcc;return function(_0x273b2e){if(_0x273b2e){return _0xd1a83[_0x9e38('0x15')](_0xfdae9);}return _0xd1a83[_0x9e38('0x16')](_0xfdae9)[_0x9e38('0x17')]();};}function respondWithResult(_0x2172b6,_0x2fe0cd){_0x2fe0cd=_0x2fe0cd||0xc8;return function(_0x5804eb){if(_0x5804eb){return _0x2172b6[_0x9e38('0x16')](_0x2fe0cd)['json'](_0x5804eb);}};}function respondWithFilteredResult(_0x4383fd,_0x3d5828){return function(_0x3e11df){if(_0x3e11df){var _0x57878a=_0x3e11df[_0x9e38('0x18')],_0x2ab87d=_0x3d5828[_0x9e38('0x19')],_0x320b05=_0x3d5828[_0x9e38('0x19')]+_0x3d5828[_0x9e38('0x1a')],_0x1b6696;if(_0x320b05>=_0x57878a){_0x320b05=_0x57878a;_0x1b6696=0xc8;}else{_0x1b6696=0xce;}_0x4383fd[_0x9e38('0x16')](_0x1b6696);return _0x4383fd[_0x9e38('0x1b')](_0x9e38('0x1c'),_0x2ab87d+'-'+_0x320b05+'/'+_0x57878a)[_0x9e38('0x1d')](_0x3e11df);}return null;};}function patchUpdates(_0x561b2c){return function(_0x5f0f60){try{jsonpatch[_0x9e38('0x1e')](_0x5f0f60,_0x561b2c,!![]);}catch(_0x36316a){return BPromise['reject'](_0x36316a);}return _0x5f0f60[_0x9e38('0x1f')]();};}function saveUpdates(_0x55cfac,_0x237d24){return function(_0x21d1bb){if(_0x21d1bb){return _0x21d1bb[_0x9e38('0x20')](_0x55cfac)[_0x9e38('0x21')](function(_0x2e339d){return _0x2e339d;});}return null;};}function removeEntity(_0x447df3,_0x515db6){return function(_0x48e39e){if(_0x48e39e){return _0x48e39e[_0x9e38('0x22')]()[_0x9e38('0x21')](function(){var _0x3f7c8b=_0x48e39e[_0x9e38('0x23')]({'plain':!![]});var _0x340681=_0x9e38('0x24');return db[_0x9e38('0x25')][_0x9e38('0x22')]({'where':{'type':_0x340681,'resourceId':_0x3f7c8b['id']}})[_0x9e38('0x21')](function(){return _0x48e39e;});})['then'](function(){_0x447df3['status'](0xcc)[_0x9e38('0x17')]();});}};}function handleEntityNotFound(_0x26e1f1,_0xdaa430){return function(_0x1726d4){if(!_0x1726d4){_0x26e1f1['sendStatus'](0x194);}return _0x1726d4;};}function handleError(_0x44b80e,_0x5ec978){_0x5ec978=_0x5ec978||0x1f4;return function(_0x1df95b){logger[_0x9e38('0x26')](_0x1df95b[_0x9e38('0x27')]);if(_0x1df95b[_0x9e38('0x28')]){delete _0x1df95b[_0x9e38('0x28')];}_0x44b80e[_0x9e38('0x16')](_0x5ec978)[_0x9e38('0x29')](_0x1df95b);};}exports[_0x9e38('0x2a')]=function(_0x1f5ebc,_0x4538a1){var _0x518ba9={},_0x47dc71={},_0x479169={'count':0x0,'rows':[]};var _0x206b0b=_[_0x9e38('0x2b')](db[_0x9e38('0x2c')]['rawAttributes'],function(_0x376b56){return{'name':_0x376b56[_0x9e38('0x2d')],'type':_0x376b56[_0x9e38('0x2e')]['key']};});_0x47dc71['model']=_[_0x9e38('0x2b')](_0x206b0b,_0x9e38('0x28'));_0x47dc71[_0x9e38('0x2f')]=_['keys'](_0x1f5ebc[_0x9e38('0x2f')]);_0x47dc71[_0x9e38('0x30')]=_[_0x9e38('0x31')](_0x47dc71[_0x9e38('0x32')],_0x47dc71['query']);_0x518ba9['attributes']=_[_0x9e38('0x31')](_0x47dc71[_0x9e38('0x32')],qs['fields'](_0x1f5ebc[_0x9e38('0x2f')][_0x9e38('0x33')]));_0x518ba9[_0x9e38('0x34')]=_0x518ba9['attributes'][_0x9e38('0x35')]?_0x518ba9[_0x9e38('0x34')]:_0x47dc71['model'];if(!_0x1f5ebc[_0x9e38('0x2f')][_0x9e38('0x36')]('nolimit')){_0x518ba9['limit']=qs[_0x9e38('0x1a')](_0x1f5ebc[_0x9e38('0x2f')]['limit']);_0x518ba9[_0x9e38('0x19')]=qs[_0x9e38('0x19')](_0x1f5ebc[_0x9e38('0x2f')][_0x9e38('0x19')]);}_0x518ba9['order']=qs[_0x9e38('0x37')](_0x1f5ebc[_0x9e38('0x2f')]['sort']);_0x518ba9[_0x9e38('0x38')]=qs[_0x9e38('0x30')](_[_0x9e38('0x39')](_0x1f5ebc[_0x9e38('0x2f')],_0x47dc71[_0x9e38('0x30')]),_0x206b0b);if(_0x1f5ebc[_0x9e38('0x2f')][_0x9e38('0x3a')]){_0x518ba9[_0x9e38('0x38')]=_['merge'](_0x518ba9[_0x9e38('0x38')],{'$or':_['map'](_0x206b0b,function(_0xd2706a){if(_0xd2706a[_0x9e38('0x2e')]!==_0x9e38('0x3b')){var _0x3aa219={};_0x3aa219[_0xd2706a[_0x9e38('0x28')]]={'$like':'%'+_0x1f5ebc[_0x9e38('0x2f')][_0x9e38('0x3a')]+'%'};return _0x3aa219;}})});}_0x518ba9=_['merge']({},_0x518ba9,_0x1f5ebc['options']);var _0x225261={'where':_0x518ba9[_0x9e38('0x38')]};return db[_0x9e38('0x2c')]['count'](_0x225261)[_0x9e38('0x21')](function(_0x13b9e8){_0x479169[_0x9e38('0x18')]=_0x13b9e8;if(_0x1f5ebc['query'][_0x9e38('0x3c')]){_0x518ba9[_0x9e38('0x3d')]=[{'all':!![]}];}return db[_0x9e38('0x2c')][_0x9e38('0x3e')](_0x518ba9);})['then'](function(_0x579a6b){_0x479169[_0x9e38('0x3f')]=_0x579a6b;return _0x479169;})[_0x9e38('0x21')](respondWithFilteredResult(_0x4538a1,_0x518ba9))[_0x9e38('0x40')](handleError(_0x4538a1,null));};exports[_0x9e38('0x41')]=function(_0x12e785,_0x57ff30){var _0x33553d={'raw':![],'where':{'id':_0x12e785[_0x9e38('0x42')]['id']}},_0x209522={};_0x209522['model']=_[_0x9e38('0x43')](db[_0x9e38('0x2c')][_0x9e38('0x44')]);_0x209522['query']=_['keys'](_0x12e785[_0x9e38('0x2f')]);_0x209522[_0x9e38('0x30')]=_[_0x9e38('0x31')](_0x209522[_0x9e38('0x32')],_0x209522[_0x9e38('0x2f')]);_0x33553d[_0x9e38('0x34')]=_[_0x9e38('0x31')](_0x209522[_0x9e38('0x32')],qs['fields'](_0x12e785[_0x9e38('0x2f')][_0x9e38('0x33')]));_0x33553d[_0x9e38('0x34')]=_0x33553d[_0x9e38('0x34')][_0x9e38('0x35')]?_0x33553d[_0x9e38('0x34')]:_0x209522[_0x9e38('0x32')];if(_0x12e785[_0x9e38('0x2f')][_0x9e38('0x3c')]){_0x33553d[_0x9e38('0x3d')]=[{'all':!![]}];}_0x33553d=_[_0x9e38('0x45')]({},_0x33553d,_0x12e785[_0x9e38('0x46')]);return db[_0x9e38('0x2c')][_0x9e38('0x47')](_0x33553d)[_0x9e38('0x21')](handleEntityNotFound(_0x57ff30,null))[_0x9e38('0x21')](respondWithResult(_0x57ff30,null))[_0x9e38('0x40')](handleError(_0x57ff30,null));};exports[_0x9e38('0x48')]=function(_0x43e7be,_0x26f0bf){return db[_0x9e38('0x2c')][_0x9e38('0x48')](_0x43e7be[_0x9e38('0x49')],{})[_0x9e38('0x21')](function(_0xce77be){var _0x17a6aa=_0x43e7be[_0x9e38('0x4a')]['get']({'plain':!![]});if(!_0x17a6aa)throw new Error(_0x9e38('0x4b'));if(_0x17a6aa['role']===_0x9e38('0x4a')){var _0x295cea=_0xce77be[_0x9e38('0x23')]({'plain':!![]});var _0xf4f6c4=_0x9e38('0x4c');return db[_0x9e38('0x4d')]['find']({'where':{'name':_0xf4f6c4,'userProfileId':_0x17a6aa['userProfileId']},'raw':!![]})[_0x9e38('0x21')](function(_0x3ea388){if(_0x3ea388&&_0x3ea388[_0x9e38('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x295cea[_0x9e38('0x28')],'resourceId':_0x295cea['id'],'type':_0x9e38('0x24'),'sectionId':_0x3ea388['id']},{})[_0x9e38('0x21')](function(){return _0xce77be;});}else{return _0xce77be;}})['catch'](function(_0x395c78){logger[_0x9e38('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x395c78);throw _0x395c78;});}return _0xce77be;})[_0x9e38('0x21')](respondWithResult(_0x26f0bf,0xc9))[_0x9e38('0x40')](handleError(_0x26f0bf,null));};exports[_0x9e38('0x20')]=function(_0x285f16,_0x350c3d){if(_0x285f16[_0x9e38('0x49')]['id']){delete _0x285f16[_0x9e38('0x49')]['id'];}return db[_0x9e38('0x2c')][_0x9e38('0x47')]({'where':{'id':_0x285f16[_0x9e38('0x42')]['id']}})['then'](handleEntityNotFound(_0x350c3d,null))['then'](saveUpdates(_0x285f16['body'],null))[_0x9e38('0x21')](respondWithResult(_0x350c3d,null))[_0x9e38('0x40')](handleError(_0x350c3d,null));};exports['destroy']=function(_0x452ce5,_0x12f705){return db['AnalyticCustomReport'][_0x9e38('0x47')]({'where':{'id':_0x452ce5[_0x9e38('0x42')]['id']}})['then'](handleEntityNotFound(_0x12f705,null))[_0x9e38('0x21')](removeEntity(_0x12f705,null))[_0x9e38('0x40')](handleError(_0x12f705,null));};exports[_0x9e38('0x4f')]=function(_0x3f68f0,_0x376791){var _0x48fd7e=0xa;var _0x70cbcb=[_0x9e38('0x50'),_0x9e38('0x51'),_0x9e38('0x52'),_0x9e38('0x53')];var _0x3a74ab={'SUM':'SUM(%s)','COUNT':_0x9e38('0x54'),'COUNT DISTINCT':_0x9e38('0x55'),'MAX':'MAX(%s)','MIN':_0x9e38('0x56'),'AVG':_0x9e38('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x9e38('0x58'),'GROUP_CONCAT DESC':_0x9e38('0x59')};var _0x3b77a7={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9e38('0x5a'),'HOUR':_0x9e38('0x5b'),'ROUND':_0x9e38('0x5c'),'UNIX_TIMESTAMP':_0x9e38('0x5d')};var _0x48ac9f=function(_0x3d6388){return!_[_0x9e38('0x5e')]([_0x9e38('0x5f'),_0x9e38('0x60'),_0x9e38('0x61'),_0x9e38('0x62')],_0x3d6388);};var _0x1e4caf=function(_0x2f23d5){if(!_0x2f23d5||!_0x2f23d5[_0x9e38('0x63')][_0x9e38('0x35')]){return'';}for(var _0x234b36='(',_0xcb9ce1=0x0;_0xcb9ce1<_0x2f23d5[_0x9e38('0x63')]['length'];_0xcb9ce1+=0x1){_0xcb9ce1>0x0&&(_0x234b36+='\x20'+_0x2f23d5[_0x9e38('0x64')]+'\x20');_0x234b36+=_0x2f23d5['rules'][_0xcb9ce1][_0x9e38('0x65')]?_0x1e4caf(_0x2f23d5[_0x9e38('0x63')][_0xcb9ce1][_0x9e38('0x65')]):_0x2f23d5[_0x9e38('0x63')][_0xcb9ce1][_0x9e38('0x66')]+'\x20'+_0x2f23d5[_0x9e38('0x63')][_0xcb9ce1][_0x9e38('0x67')]+(_0x48ac9f(_0x2f23d5[_0x9e38('0x63')][_0xcb9ce1][_0x9e38('0x67')])?'\x20'+_0x2f23d5[_0x9e38('0x63')][_0xcb9ce1][_0x9e38('0x68')]:'');}return _0x234b36+')';};var _0x308514={'where':{'id':_0x3f68f0['params']['id']}},_0x578fc8,_0x404d5e,_0x17fcd8,_0x19d686,_0x15b03b;_0x308514=_[_0x9e38('0x45')]({},_0x308514,_0x3f68f0[_0x9e38('0x46')]);return db['AnalyticCustomReport']['find'](_0x308514)[_0x9e38('0x21')](function(_0x1e99e1){if(_0x1e99e1){_0x578fc8=_0x1e99e1;return _0x1e99e1[_0x9e38('0x69')]();}return null;})[_0x9e38('0x21')](function(_0x3cea04){if(_0x3cea04){if(!_0x3cea04[_0x9e38('0x35')]){throw new db[(_0x9e38('0x6a'))][(_0x9e38('0x6b'))](_0x9e38('0x6c'),0x193);}_0x404d5e=_0x3cea04;return db['AnalyticMetric'][_0x9e38('0x3e')]({'raw':!![]});}return null;})['then'](function(_0x1aa509){if(_0x1aa509){_0x17fcd8=_[_0x9e38('0x6d')](_0x1aa509,'id');var _0x182c36;var _0x43b94a=squel[_0x9e38('0x6e')]();_0x43b94a['from'](_0x578fc8[_0x9e38('0x6f')]);for(var _0x36bba0=0x0;_0x36bba0<_0x404d5e[_0x9e38('0x35')];_0x36bba0+=0x1){_0x182c36=_0x404d5e[_0x36bba0][_0x9e38('0x70')]?_0x17fcd8[_0x404d5e[_0x36bba0][_0x9e38('0x70')]][_0x9e38('0x71')]:_0x404d5e[_0x36bba0][_0x9e38('0x66')];_0x182c36=_0x404d5e[_0x36bba0][_0x9e38('0x72')]?_[_0x9e38('0x73')](_0x3a74ab[_0x404d5e[_0x36bba0][_0x9e38('0x72')]],'%s',_0x182c36):_0x182c36;_0x182c36=_0x404d5e[_0x36bba0][_0x9e38('0x74')]?_[_0x9e38('0x73')](_0x3b77a7[_0x404d5e[_0x36bba0][_0x9e38('0x74')]],'%s',_0x182c36):_0x182c36;if(_0x404d5e[_0x36bba0][_0x9e38('0x75')]){_0x43b94a[_0x9e38('0x65')](_0x182c36);}_0x404d5e[_0x36bba0]['orderBy']&&_0x43b94a[_0x9e38('0x76')](_0x182c36,_0x404d5e[_0x36bba0][_0x9e38('0x77')]===_0x9e38('0x78')?![]:!![]);_0x43b94a['field'](_0x182c36,_0x404d5e[_0x36bba0]['alias']||_0x182c36);}if(_0x578fc8[_0x9e38('0x79')]){_0x578fc8['joins']=JSON[_0x9e38('0x7a')](_0x578fc8[_0x9e38('0x79')]);for(var _0x541386=0x0;_0x541386<_0x578fc8[_0x9e38('0x79')][_0x9e38('0x35')];_0x541386+=0x1){if(_0x578fc8[_0x9e38('0x79')][_0x541386][_0x9e38('0x2e')]&&_['includes'](_0x70cbcb,_0x578fc8['joins'][_0x541386][_0x9e38('0x2e')])&&_0x578fc8['joins'][_0x541386][_0x9e38('0x7b')]&&_0x578fc8['joins'][_0x541386][_0x9e38('0x7c')]&&_0x578fc8[_0x9e38('0x79')][_0x541386][_0x9e38('0x7d')]){_0x43b94a[_0x578fc8['joins'][_0x541386][_0x9e38('0x2e')]](_0x578fc8[_0x9e38('0x79')][_0x541386][_0x9e38('0x7c')],null,util['format'](_0x9e38('0x7e'),_0x578fc8[_0x9e38('0x6f')],_0x578fc8[_0x9e38('0x79')][_0x541386]['parentKey'],_0x578fc8['joins'][_0x541386][_0x9e38('0x7c')],_0x578fc8[_0x9e38('0x79')][_0x541386][_0x9e38('0x7d')]));}}}if(_0x578fc8['conditions']){_0x578fc8[_0x9e38('0x7f')]=JSON[_0x9e38('0x7a')](_0x578fc8[_0x9e38('0x7f')]);_0x43b94a[_0x9e38('0x38')](_0x1e4caf(_0x578fc8[_0x9e38('0x7f')]['group']));}_0x15b03b=_0x43b94a['clone']();_0x43b94a['limit'](_0x48fd7e);_0x43b94a[_0x9e38('0x19')](0x0);logger['debug'](_0x9e38('0x80'),_0x43b94a[_0x9e38('0x81')]());return dbH[_0x9e38('0x82')][_0x9e38('0x2f')](_0x43b94a['toString'](),{'type':dbH['sequelize'][_0x9e38('0x83')][_0x9e38('0x84')]});}})['then'](respondWithResult(_0x376791,null))[_0x9e38('0x40')](handleError(_0x376791,null));};function runReport(_0x3917c6,_0x5eeab2,_0x2b3247){var _0x1cadbb=_0x5eeab2[_0x9e38('0x28')];var _0x23c56b=0xa;var _0x310ffe=[_0x9e38('0x50'),'left_join','right_join','cross_join'];var _0x39bd10={'SUM':'SUM(%s)','COUNT':_0x9e38('0x54'),'COUNT DISTINCT':_0x9e38('0x55'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0x9e38('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x9e38('0x58'),'GROUP_CONCAT DESC':_0x9e38('0x59')};var _0x44eaf9={'SEC_TO_TIME':_0x9e38('0x85'),'DATE':_0x9e38('0x5a'),'HOUR':_0x9e38('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9e38('0x5d')};var _0x5a8c06=function(_0x25a2d9){return!_[_0x9e38('0x5e')]([_0x9e38('0x5f'),_0x9e38('0x60'),'IS\x20EMPTY',_0x9e38('0x62')],_0x25a2d9);};var _0x60a26a=function(_0x4bad13){if(!_0x4bad13||!_0x4bad13[_0x9e38('0x63')][_0x9e38('0x35')]){return'';}for(var _0x5320b1='(',_0x1a8f3e=0x0;_0x1a8f3e<_0x4bad13['rules'][_0x9e38('0x35')];_0x1a8f3e+=0x1){_0x1a8f3e>0x0&&(_0x5320b1+='\x20'+_0x4bad13[_0x9e38('0x64')]+'\x20');_0x5320b1+=_0x4bad13[_0x9e38('0x63')][_0x1a8f3e][_0x9e38('0x65')]?_0x60a26a(_0x4bad13[_0x9e38('0x63')][_0x1a8f3e]['group']):_0x4bad13['rules'][_0x1a8f3e][_0x9e38('0x66')]+'\x20'+_0x4bad13[_0x9e38('0x63')][_0x1a8f3e]['condition']+(_0x5a8c06(_0x4bad13[_0x9e38('0x63')][_0x1a8f3e][_0x9e38('0x67')])?'\x20'+_0x4bad13[_0x9e38('0x63')][_0x1a8f3e][_0x9e38('0x68')]:'');}return _0x5320b1+')';};var _0x1b0d11={'where':{'id':_0x3917c6['id']}},_0x2e0393,_0x32b352,_0x12e79d,_0x37b4ce,_0x5b63f3;_0x1b0d11=_[_0x9e38('0x45')]({},_0x1b0d11,_0x2b3247);return db[_0x9e38('0x2c')][_0x9e38('0x47')](_0x1b0d11)[_0x9e38('0x21')](function(_0x1522df){if(_0x1522df){_0x2e0393=_0x1522df;return _0x1522df[_0x9e38('0x69')]();}return null;})[_0x9e38('0x21')](function(_0x3fe5b1){if(_0x3fe5b1){if(!_0x3fe5b1['length']){throw new db[(_0x9e38('0x6a'))][(_0x9e38('0x6b'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x32b352=_0x3fe5b1;return db[_0x9e38('0x86')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x5c3aa8){if(_0x5c3aa8){_0x12e79d=_[_0x9e38('0x6d')](_0x5c3aa8,'id');var _0x338b2a;var _0x3e77d2=squel['select']();_0x3e77d2[_0x9e38('0x87')](_0x2e0393[_0x9e38('0x6f')]);for(var _0x1c435b=0x0;_0x1c435b<_0x32b352[_0x9e38('0x35')];_0x1c435b+=0x1){_0x338b2a=_0x32b352[_0x1c435b]['MetricId']?_0x12e79d[_0x32b352[_0x1c435b][_0x9e38('0x70')]][_0x9e38('0x71')]:_0x32b352[_0x1c435b][_0x9e38('0x66')];_0x338b2a=_0x32b352[_0x1c435b]['function']?_['replace'](_0x39bd10[_0x32b352[_0x1c435b]['function']],'%s',_0x338b2a):_0x338b2a;_0x338b2a=_0x32b352[_0x1c435b][_0x9e38('0x74')]?_[_0x9e38('0x73')](_0x44eaf9[_0x32b352[_0x1c435b][_0x9e38('0x74')]],'%s',_0x338b2a):_0x338b2a;if(_0x32b352[_0x1c435b][_0x9e38('0x75')]){_0x3e77d2[_0x9e38('0x65')](_0x338b2a);}_0x32b352[_0x1c435b][_0x9e38('0x77')]&&_0x3e77d2[_0x9e38('0x76')](_0x338b2a,_0x32b352[_0x1c435b][_0x9e38('0x77')]===_0x9e38('0x78')?![]:!![]);_0x3e77d2[_0x9e38('0x66')](_0x338b2a,_0x32b352[_0x1c435b]['alias']||_0x338b2a);}if(_0x2e0393[_0x9e38('0x79')]){_0x2e0393['joins']=JSON[_0x9e38('0x7a')](_0x2e0393[_0x9e38('0x79')]);for(var _0x578be7=0x0;_0x578be7<_0x2e0393[_0x9e38('0x79')][_0x9e38('0x35')];_0x578be7+=0x1){if(_0x2e0393['joins'][_0x578be7][_0x9e38('0x2e')]&&_[_0x9e38('0x5e')](_0x310ffe,_0x2e0393[_0x9e38('0x79')][_0x578be7][_0x9e38('0x2e')])&&_0x2e0393['joins'][_0x578be7]['parentKey']&&_0x2e0393['joins'][_0x578be7]['foreignTable']&&_0x2e0393[_0x9e38('0x79')][_0x578be7]['foreignKey']){_0x3e77d2[_0x2e0393[_0x9e38('0x79')][_0x578be7][_0x9e38('0x2e')]](_0x2e0393[_0x9e38('0x79')][_0x578be7][_0x9e38('0x7c')],null,util[_0x9e38('0x74')](_0x9e38('0x7e'),_0x2e0393[_0x9e38('0x6f')],_0x2e0393[_0x9e38('0x79')][_0x578be7]['parentKey'],_0x2e0393[_0x9e38('0x79')][_0x578be7]['foreignTable'],_0x2e0393[_0x9e38('0x79')][_0x578be7]['foreignKey']));}}}if(_0x2e0393['conditions']){_0x2e0393[_0x9e38('0x7f')]=JSON['parse'](_0x2e0393[_0x9e38('0x7f')]);_0x3e77d2[_0x9e38('0x38')](_0x60a26a(_0x2e0393['conditions']['group']));}_0x5b63f3=_0x3e77d2[_0x9e38('0x88')]();_0x3e77d2[_0x9e38('0x1a')](_0x23c56b);_0x3e77d2['offset'](0x0);return;}})[_0x9e38('0x21')](function(){if(_0x5eeab2['output']===_0x9e38('0x89')){return null;}var _0x3af8de=_[_0x9e38('0x45')](_0x5eeab2,{'name':_0x5eeab2[_0x9e38('0x8a')]||_0x5eeab2[_0x9e38('0x28')]||_0x2e0393[_0x9e38('0x28')],'basename':_0x1cadbb,'savename':util['format']('%s-%s.%s',_0x5eeab2[_0x9e38('0x28')]||_0x2e0393[_0x9e38('0x28')],require(_0x9e38('0x8b'))[_0x9e38('0x8c')](0x4),_0x5eeab2[_0x9e38('0x8d')]||'csv'),'reportId':_0x2e0393['id'],'reportType':_0x9e38('0x8e')});return db[_0x9e38('0x8f')][_0x9e38('0x48')](_0x3af8de,{'raw':!![]});})[_0x9e38('0x21')](function(_0x3c708b){if(_0x2e0393['table']==='cdr'){_0x5b63f3[_0x9e38('0x38')](_0x2e0393[_0x9e38('0x6f')]+_0x9e38('0x90'),_0x5eeab2['startDate'],_0x5eeab2['endDate']);}else{_0x5b63f3['where'](_0x2e0393[_0x9e38('0x6f')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5eeab2['startDate'],_0x5eeab2['endDate']);}if(_0x3c708b){logger[_0x9e38('0x91')]('Run\x20Query:',_0x5b63f3[_0x9e38('0x81')]());require(_0x9e38('0x92'))[_0x9e38('0x93')](path['join'](__dirname,_0x9e38('0x94'),_0x3c708b[_0x9e38('0x8d')]),[_0x3c708b['id'],_0x5b63f3[_0x9e38('0x81')](),path[_0x9e38('0x50')](__dirname,_0x9e38('0x95'),_0x3c708b[_0x9e38('0x96')]),_0x1cadbb]);return _0x3c708b;}else{var _0x505e37=squel[_0x9e38('0x6e')]();_0x505e37['from']('('+_0x5b63f3[_0x9e38('0x81')]()+')',_0x9e38('0x97'));_0x505e37[_0x9e38('0x66')]('COUNT(*)',_0x9e38('0x18'));_0x5b63f3[_0x9e38('0x1a')](_0x5eeab2['limit']||_0x23c56b);_0x5b63f3['offset'](_0x5eeab2[_0x9e38('0x19')]||0x0);return dbH[_0x9e38('0x82')][_0x9e38('0x2f')](_0x505e37['toString'](),{'type':dbH[_0x9e38('0x82')]['QueryTypes'][_0x9e38('0x84')]})[_0x9e38('0x21')](function(_0x39bbd9){if(!_0x39bbd9[_0x9e38('0x35')]){_0x37b4ce=0x0;}else{_0x37b4ce=_0x39bbd9[0x0][_0x9e38('0x18')]||0x0;}return dbH[_0x9e38('0x82')][_0x9e38('0x2f')](_0x5b63f3['toString'](),{'type':dbH[_0x9e38('0x82')][_0x9e38('0x83')]['SELECT']});})[_0x9e38('0x21')](function(_0x297301){return{'rows':_0x297301||[],'count':_0x37b4ce};});}});}exports[_0x9e38('0x98')]=function(_0x42de0c,_0x3b52be){return runReport(_0x42de0c[_0x9e38('0x42')],_0x42de0c['query'],_0x42de0c[_0x9e38('0x46')])[_0x9e38('0x21')](respondWithResult(_0x3b52be,null))['catch'](handleError(_0x3b52be,null));};exports[_0x9e38('0x99')]=runReport;exports[_0x9e38('0x2f')]=function(_0x30bea9,_0x4649ba){var _0x45bab8=0xa;var _0xf5b8c5=[_0x9e38('0x50'),_0x9e38('0x51'),'right_join','cross_join'];var _0x169bd4={'SUM':_0x9e38('0x9a'),'COUNT':_0x9e38('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9e38('0x9b'),'MIN':'MIN(%s)','AVG':_0x9e38('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x9e38('0x58'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x54c3df={'SEC_TO_TIME':_0x9e38('0x85'),'DATE':_0x9e38('0x5a'),'HOUR':_0x9e38('0x5b'),'ROUND':_0x9e38('0x5c'),'UNIX_TIMESTAMP':_0x9e38('0x5d')};var _0x413c60=function(_0x1b7c22){return!_[_0x9e38('0x5e')]([_0x9e38('0x5f'),'IS\x20NOT\x20NULL',_0x9e38('0x61'),_0x9e38('0x62')],_0x1b7c22);};var _0x4d6adb=function(_0x363ba4){if(!_0x363ba4||!_0x363ba4[_0x9e38('0x63')][_0x9e38('0x35')]){return'';}for(var _0xe88dc4='(',_0x355b2f=0x0;_0x355b2f<_0x363ba4[_0x9e38('0x63')][_0x9e38('0x35')];_0x355b2f+=0x1){_0x355b2f>0x0&&(_0xe88dc4+='\x20'+_0x363ba4['operator']+'\x20');_0xe88dc4+=_0x363ba4[_0x9e38('0x63')][_0x355b2f][_0x9e38('0x65')]?_0x4d6adb(_0x363ba4[_0x9e38('0x63')][_0x355b2f][_0x9e38('0x65')]):_0x363ba4['rules'][_0x355b2f]['field']+'\x20'+_0x363ba4['rules'][_0x355b2f][_0x9e38('0x67')]+(_0x413c60(_0x363ba4['rules'][_0x355b2f][_0x9e38('0x67')])?'\x20'+_0x363ba4[_0x9e38('0x63')][_0x355b2f][_0x9e38('0x68')]:'');}return _0xe88dc4+')';};var _0x8ccf65={'where':{'id':_0x30bea9[_0x9e38('0x42')]['id']}},_0x49ab25,_0x380b30,_0x5a9b93,_0x2cfd61,_0x3221a8;_0x8ccf65=_[_0x9e38('0x45')]({},_0x8ccf65,_0x30bea9[_0x9e38('0x46')]);return db[_0x9e38('0x2c')][_0x9e38('0x47')](_0x8ccf65)[_0x9e38('0x21')](function(_0x363e6b){if(_0x363e6b){_0x49ab25=_0x363e6b;return _0x363e6b[_0x9e38('0x69')]();}return null;})['then'](function(_0x4bd2da){if(_0x4bd2da){if(!_0x4bd2da[_0x9e38('0x35')]){throw new db[(_0x9e38('0x6a'))][(_0x9e38('0x6b'))](_0x9e38('0x6c'),0x193);}_0x380b30=_0x4bd2da;return db[_0x9e38('0x86')]['findAll']({'raw':!![]});}return null;})[_0x9e38('0x21')](function(_0x107d61){if(_0x107d61){_0x5a9b93=_[_0x9e38('0x6d')](_0x107d61,'id');var _0x5e2fcf;var _0x35075e=squel[_0x9e38('0x6e')]();_0x35075e[_0x9e38('0x87')](_0x49ab25[_0x9e38('0x6f')]);for(var _0x1027e7=0x0;_0x1027e7<_0x380b30[_0x9e38('0x35')];_0x1027e7+=0x1){_0x5e2fcf=_0x380b30[_0x1027e7][_0x9e38('0x70')]?_0x5a9b93[_0x380b30[_0x1027e7][_0x9e38('0x70')]][_0x9e38('0x71')]:_0x380b30[_0x1027e7][_0x9e38('0x66')];_0x5e2fcf=_0x380b30[_0x1027e7][_0x9e38('0x72')]?_['replace'](_0x169bd4[_0x380b30[_0x1027e7]['function']],'%s',_0x5e2fcf):_0x5e2fcf;_0x5e2fcf=_0x380b30[_0x1027e7]['format']?_['replace'](_0x54c3df[_0x380b30[_0x1027e7][_0x9e38('0x74')]],'%s',_0x5e2fcf):_0x5e2fcf;if(_0x380b30[_0x1027e7][_0x9e38('0x75')]){_0x35075e[_0x9e38('0x65')](_0x5e2fcf);}_0x380b30[_0x1027e7]['orderBy']&&_0x35075e[_0x9e38('0x76')](_0x5e2fcf,_0x380b30[_0x1027e7][_0x9e38('0x77')]===_0x9e38('0x78')?![]:!![]);_0x35075e['field'](_0x5e2fcf,_0x380b30[_0x1027e7]['alias']||_0x5e2fcf);}if(_0x49ab25[_0x9e38('0x79')]){_0x49ab25['joins']=JSON['parse'](_0x49ab25[_0x9e38('0x79')]);for(var _0x448fe3=0x0;_0x448fe3<_0x49ab25['joins'][_0x9e38('0x35')];_0x448fe3+=0x1){if(_0x49ab25[_0x9e38('0x79')][_0x448fe3]['type']&&_[_0x9e38('0x5e')](_0xf5b8c5,_0x49ab25[_0x9e38('0x79')][_0x448fe3][_0x9e38('0x2e')])&&_0x49ab25[_0x9e38('0x79')][_0x448fe3][_0x9e38('0x7b')]&&_0x49ab25[_0x9e38('0x79')][_0x448fe3][_0x9e38('0x7c')]&&_0x49ab25[_0x9e38('0x79')][_0x448fe3]['foreignKey']){_0x35075e[_0x49ab25[_0x9e38('0x79')][_0x448fe3][_0x9e38('0x2e')]](_0x49ab25[_0x9e38('0x79')][_0x448fe3]['foreignTable'],null,util[_0x9e38('0x74')](_0x9e38('0x7e'),_0x49ab25[_0x9e38('0x6f')],_0x49ab25[_0x9e38('0x79')][_0x448fe3]['parentKey'],_0x49ab25[_0x9e38('0x79')][_0x448fe3][_0x9e38('0x7c')],_0x49ab25[_0x9e38('0x79')][_0x448fe3][_0x9e38('0x7d')]));}}}if(_0x49ab25[_0x9e38('0x7f')]){_0x49ab25[_0x9e38('0x7f')]=JSON[_0x9e38('0x7a')](_0x49ab25[_0x9e38('0x7f')]);_0x35075e[_0x9e38('0x38')](_0x4d6adb(_0x49ab25[_0x9e38('0x7f')][_0x9e38('0x65')]));}_0x3221a8=_0x35075e['clone']();_0x35075e['limit'](_0x45bab8);_0x35075e['offset'](0x0);logger[_0x9e38('0x9c')](_0x9e38('0x80'),_0x35075e[_0x9e38('0x81')]());return dbH[_0x9e38('0x82')]['query'](_0x35075e['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x9e38('0x84')]});}})[_0x9e38('0x21')](function(){return{'sql':_0x3221a8[_0x9e38('0x81')]()};})[_0x9e38('0x21')](respondWithResult(_0x4649ba,null))[_0x9e38('0x40')](handleError(_0x4649ba,null));};