-'use strict';
-
-var _ = require('lodash');
-var util = require('util');
-var sequelize = require('../../models').sequelize;
-var CustomReport = require('../../models').CustomReport;
-var ReportField = require('../../models').ReportField;
-var ExtractedReport = require('../../models').ExtractedReport;
-var extractUtils = require('../../utils/report_extraction');
-
-// Get list of custom reports
-exports.index = function(req, res, next) {
-
- var attributes = ['name', 'description', 'parent'];
- var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
- var page = req.query.page ? parseInt(req.query.page, 10) : 0;
-
- var query = {
- where: {},
- limit: per_page,
- offset: page * per_page
- };
-
- _.forIn(req.query, function(value, key) {
- switch (key) {
- case 'per_page':
- case 'page':
- break;
- case 'sort_by':
- query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
- break;
- case 'sort_order':
- break;
- case '$':
- query.where.$or = [];
- attributes.forEach(function(attribute) {
- var tmp = {};
- tmp[attribute] = {
- $like: '%' + value + '%'
- };
-
- query.where.$or.push(tmp);
- });
- break;
- case 'role':
- query.where.role = {
- $or: value.split(/[\s,]+/)
- };
- break;
- case 'clientQuery':
- var params = JSON.parse(value);
- _.forOwn(params, function(pValue, pKey) {
- query.where[pKey] = pValue;
- });
- break;
- default:
- query.where[key] = {
- $like: {}
- };
- query.where[key].$like = '%' + value + '%';
- }
- });
-
- CustomReport
- .findAndCountAll(query)
- .then(function(result) {
- var total_pages = Math.ceil(result.count / per_page);
- var next_page = total_pages > (query.offset + 1) ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page + 1) : null;
- var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
-
- res.status(200).send({
- count: result.count,
- rows: result.rows,
- next_page: next_page,
- previous_page: previous_page,
- total_pages: total_pages
- });
-
- })
- .catch(function(err) {
- res.status(500).send({
- error: 'Something blew up!'
- });
- });
-};
-
-exports.preview = function(req, res) {
- CustomReport
- .findById(req.params.id, {
- include: [{
- all: true
- }]
- })
- .then(function(report) {
- console.log('found report');
- if (!report) {
- return res.sendStatus(404);
- }
- var query = buildReport(report.dataValues, req.query);
- // console.log(query);
- var queries = [sequelize.query(query, {
- type: sequelize.QueryTypes.SELECT
- })];
- if (req.query.uiPagination) {
- var countQuery = buildReport(report.dataValues, req.query, true);
- queries.push(sequelize.query(countQuery, {
- type: sequelize.QueryTypes.SELECT
- }));
- }
- return queries;
- })
- .all()
- .spread(function(results, totalItems) {
- console.log(results.length);
- console.log(totalItems);
- res.status(200).send({
- rows: results,
- count: totalItems ? totalItems[0] : null
- });
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
-};
-
-exports.extractPdf = function(req, res) {
- // console.log('extractPdf api function');
- docExtract(req, res, 'PDF')
-};
-
-exports.extractCsv = function(req, res) {
- // console.log('extractCsv api function');
- docExtract(req, res, 'CSV');
-};
-
-function docExtract(req, res, typeFunction) {
- // console.log('common docExtract api function');
- if (!req.body.startDate || !req.body.endDate) {
- return res.status(500).send({
- message: 'MESSAGE_START_OR_END_DATE_MISSING'
- });
- }
- CustomReport
- .findById(req.params.id, {
- include: [{
- all: true
- }]
- })
- .then(function(report) {
- if (!report) {
- return res.sendStatus(404);
- }
- // console.log('found the report, creating the new DB row for extracted reports..');
- //CREATE A DB ROW IN A TABLE WITH THE REPORT INFO, QUERY DATES, AND THE STATUS 'ELABORATING'
- return [report, ExtractedReport.create({
- name: report.name,
- startDate: req.body.startDate,
- endDate: req.body.endDate,
- output: typeFunction
- })]
- })
- .spread(function(report, extractedReport) {
- // console.log('created new extracted reports db entry, calling external extraction function: ' + typeFunction);
- extractUtils['extract' + typeFunction](report, req.body.startDate, req.body.endDate, extractedReport.id);
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
- return res.sendStatus(200);
-}
-
-// Get a single report
-exports.show = function(req, res) {
- CustomReport
- .findById(req.params.id, {
- include: [{
- all: true
- }]
- })
- .then(function(report) {
- if (!report) {
- return res.sendStatus(404);
- }
- return res.send(report);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Copy a custom report
-exports.copy = function(req, res) {
- CustomReport
- .findById(req.params.id, {
- include: [{
- all: true
- }]
- })
- .then(function(report) {
- if (!report) {
- return res.sendStatus(404);
- }
- var newReport = report.dataValues;
- delete newReport.id;
- delete newReport.createdAt;
- delete newReport.updatedAt;
- newReport.parent = req.body.parent;
- newReport.Fields = _.pluck(newReport.Fields, 'dataValues');
- _.forEach(newReport.Fields, function(elem) {
- delete elem.id;
- delete elem.CustomReportId;
- delete elem.createdAt;
- delete elem.updatedAt;
- });
-
- return CustomReport.create(newReport, {
- include: [{
- all: true
- }]
- });
- })
- .then(function() {
- return res.sendStatus(201);
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
-};
-
-// Import a report
-exports.import = function(req, res) {
- CustomReport
- .create(req.body, {
- include: [{
- all: true
- }]
- })
- .then(function(report) {
- return res.status(201).send(report);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-function buildReport(report, query, count) {
- var fields = [],
- groupBy = [],
- orderBy = [];
- _.forEach(report.Fields, function(elem) {
- var field = '';
- if (elem.function) {
- switch (elem.function) {
- case 'COUNT DISTINCT':
- field = util.format('COUNT(DISTINCT %s)', elem.field);
- break;
- case 'GROUP_CONCAT ASC':
- field = util.format('GROUP_CONCAT(%s ORDER BY %s ASC)', elem.field, elem.field);
- break;
- case 'GROUP_CONCAT DESC':
- field = util.format('GROUP_CONCAT(%s ORDER BY %s DESC)', elem.field, elem.field);
- break;
- default:
- field = util.format('%s(%s)', elem.function, elem.field);
- }
- } else {
- field = elem.field;
- }
- fields.push(util.format('%s AS \'%s\'', field, elem.alias));
- if (elem.groupBy) {
- groupBy.push(elem.field);
- }
- if (elem.orderBy) {
- orderBy.push(util.format('%s %s', elem.field, elem.orderBy));
- }
- });
- var conditions = getConditions(JSON.parse(report.conditions).group);
- var resultQuery = 'SELECT';
- // query += fields.length ? ' ' + fields.join(',') : ' *';//right if you want to select all fields also
- resultQuery += ' ' + fields.join(','); //generate a wrong query if there isn' t any field
- if (count) {
- resultQuery += ',COUNT(*)';
- }
- resultQuery += ' FROM ' + report.table;
- resultQuery += conditions !== '()' ? ' WHERE ' + conditions : '';
- var limit = false;
- var offset = false;
- if (query) {
- _.forOwn(query, function(value, key) {
- switch (key) {
- case 'page':
- if (query.perPage) {
- limit = parseInt(query.perPage, 10);
- offset = parseInt(value, 10) * limit;
- }
- break;
- case 'perPage':
- limit = parseInt(value, 10);
- break;
- case 'startDate':
- resultQuery += ' AND createdAt >= \'' + value + '\'';
- break;
- case 'endDate':
- resultQuery += ' AND createdAt <= \'' + value + '\'';
- break;
- case 'uiPagination':
- break;
- default:
- var column = _.find(report.Fields, {
- alias: key
- }).field;
- if (column) {
- resultQuery += ' AND ' + column + ' LIKE \'%' + value + '%\'';
- } else {
- resultQuery += ' AND ' + key + ' LIKE \'%' + value + '%\'';
- }
- }
- });
- }
- resultQuery += groupBy.length ? ' GROUP BY ' + groupBy.join(',') : '';
- resultQuery += orderBy.length ? ' ORDER BY ' + orderBy.join(',') : '';
- resultQuery += limit && !count ? ' LIMIT ' + limit : '';
- resultQuery += offset && !count ? ' OFFSET ' + offset : '';
- return resultQuery;
-}
-
-function getConditions(group) {
- if (!group) return "";
- for (var str = "(", i = 0; i < group.rules.length; i++) {
- i > 0 && (str += " " + group.operator + " ");
- str += group.rules[i].group ?
- getConditions(group.rules[i].group) :
- group.rules[i].field + " " + group.rules[i].condition + " '" + (group.rules[i].condition === 'LIKE' ? "%" + group.rules[i].value + "%" : group.rules[i].value) + "'";
- }
-
- return str + ')';
-}
-
-// Creates a new report in the DB.
-exports.create = function(req, res) {
- CustomReport
- .create(req.body)
- .then(function(report) {
- return res.status(201).send(report);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-// Updates an existing report in the DB.
-exports.update = function(req, res) {
- if (req.body.id) {
- delete req.body.id;
- }
- ReportField.destroy({
- where: {
- CustomReportId: req.params.id
- }
- })
- .then(function() {
- return ReportField.bulkCreate(req.body.Fields);
- })
- .then(function() {
- delete req.body.Fields;
- return CustomReport.update(req.body, {
- where: {
- id: req.params.id
- }
- });
- })
- .then(function() {
- return res.sendStatus(200);
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
-};
-
-// Deletes a report from the DB.
-exports.destroy = function(req, res) {
- CustomReport
- .findById(req.params.id)
- .then(function(report) {
- if (!report) {
- return res.sendStatus(404);
- }
- report.destroy()
- .then(function() {
- return res.sendStatus(204);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-exports.bulkDestroy = function(req, res) {
- CustomReport
- .destroy({
- where: {
- id: req.query.id
- },
- individualHooks: true
- })
- .then(function() {
- return res.sendStatus(204);
- })
- .catch(function(err) {
- return handleError(res, err);
- });
-};
-
-function handleError(res, err) {
- return res.status(500).send(err);
-}
+var _0xfac5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x4D\x65\x74\x72\x69\x63","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x62\x75\x69\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x6D\x6F\x6D\x65\x6E\x74","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x45\x72\x72\x6F\x72\x20\x67\x65\x74\x74\x69\x6E\x67\x20\x71\x75\x65\x72\x79\x20\x66\x72\x6F\x6D\x20\x61\x70\x69\x3A","\x6C\x6F\x67","\x61\x6C\x6C","\x62\x75\x69\x6C\x64\x51\x75\x65\x72\x79","\x73\x70\x72\x65\x61\x64","\x75\x73\x65\x72","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","\x66\x6F\x75\x6E\x64\x20\x72\x65\x70\x6F\x72\x74","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x64\x61\x69\x6C\x79","\x74\x72\x75\x65","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44","\x66\x6F\x72\x6D\x61\x74","\x65\x6E\x64\x44\x61\x74\x65","\x74\x61\x62\x6C\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x5F\x68\x69\x73\x74\x6F\x72\x79","","\x72\x65\x70\x6C\x61\x63\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x66\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x70\x72\x65\x76\x69\x65\x77","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6D\x69\x74","\x76\x61\x6C\x75\x65","\x74\x61\x6B\x65","\x6F\x66\x66\x73\x65\x74","\x73\x6C\x69\x63\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x4F\x77\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x50\x44\x46","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x43\x53\x56","\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x2E\x6A\x73","\x66\x6F\x72\x6B","\x65\x72\x72\x6F\x72","\x63\x68\x69\x6C\x64\x20\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x63\x68\x69\x6C\x64\x20\x63\x6C\x6F\x73\x65","\x6D\x65\x73\x73\x61\x67\x65","\x63\x68\x69\x6C\x64\x20\x6D\x65\x73\x73\x61\x67\x65","\x6B\x69\x6C\x6C","\x74\x72\x65\x65","\x70\x61\x72\x73\x65","\x70\x61\x72\x65\x6E\x74","\x66\x69\x6E\x64","\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x74\x65\x78\x74","\x2F\x20","\x23","\x73\x68\x6F\x77","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x63\x6F\x70\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x62\x6F\x64\x79","\x6D\x61\x70","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64\x73","\x69\x6D\x70\x6F\x72\x74","\x75\x70\x64\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x73\x41\x72\x72\x61\x79","\x67\x65\x74\x54\x61\x62\x6C\x65","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64","\x4D\x65\x74\x72\x69\x63\x49\x64","\x66\x69\x65\x6C\x64","\x6D\x65\x74\x72\x69\x63","\x70\x75\x73\x68","\x54\x68\x65\x20\x6D\x65\x74\x72\x69\x63\x20\x77\x69\x74\x68\x20\x69\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x63\x75\x73\x74\x6F\x6D","\x54\x68\x65\x20\x66\x69\x65\x6C\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74\x20\x69\x6E\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65","\x6B\x65\x79\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x59\x6F\x75\x20\x68\x61\x76\x65\x20\x6E\x6F\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x6F\x72\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64","\x68\x61\x73","\x65\x76\x65\x72\x79","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x55\x6E\x73\x75\x70\x70\x6F\x72\x74\x65\x64\x20\x49\x6D\x70\x6F\x72\x74\x20\x66\x6F\x72\x6D\x61\x74\x20\x28\x4D\x65\x74\x72\x69\x63\x20\x74\x79\x70\x65\x20\x69\x6E\x20\x72\x65\x70\x6F\x72\x74\x20\x66\x69\x65\x6C\x64\x73\x20\x69\x73\x20\x6D\x69\x73\x73\x69\x6E\x67\x29","\x49\x64","\x67\x72\x6F\x75\x70\x42\x79","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6E\x75\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x5F","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xfac5[0];var _=require(_0xfac5[1]);var util=require(_0xfac5[2]);var sequelize=require(_0xfac5[4])[_0xfac5[3]];var CustomReport=require(_0xfac5[4])[_0xfac5[5]];var ReportField=require(_0xfac5[4])[_0xfac5[6]];var Metric=require(_0xfac5[4])[_0xfac5[7]];var ExtractedReport=require(_0xfac5[4])[_0xfac5[8]];var extractUtils=require(_0xfac5[9]);var reportBuildUtils=require(_0xfac5[10]);var Util=require(_0xfac5[11]);var sr=require(_0xfac5[12]);var moment=require(_0xfac5[13]);var cp=require(_0xfac5[14]);var ReportTree=require(_0xfac5[4])[_0xfac5[15]];exports[_0xfac5[16]]= function(_0x81b0xf,_0x81b0x10,_0x81b0x11){return CustomReport[_0xfac5[23]](Util[_0xfac5[22]](_0x81b0xf[_0xfac5[21]]))[_0xfac5[20]](function(_0x81b0x13){_0x81b0x10[_0xfac5[19]](200)[_0xfac5[18]](_0x81b0x13)})[_0xfac5[17]](function(_0x81b0x12){return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[24]]= function(_0x81b0xf,_0x81b0x10){return Promise[_0xfac5[27]]([])[_0xfac5[20]](getQuery(_0x81b0xf,_0x81b0x10))[_0xfac5[20]](function(_0x81b0x14){_0x81b0x10[_0xfac5[19]](200)[_0xfac5[18]]({query:_0x81b0x14})})[_0xfac5[17]](function(_0x81b0x12){console[_0xfac5[26]](_0xfac5[25],_0x81b0x12)})};function getQuery(_0x81b0xf,_0x81b0x10){var _0x81b0x16;return function(){return CustomReport[_0xfac5[49]](_0xfac5[48])[_0xfac5[47]](_0x81b0xf[_0xfac5[46]][_0xfac5[45]])[_0xfac5[20]](function(_0x81b0x18){console[_0xfac5[26]](_0xfac5[32]);if(!_0x81b0x18){return _0x81b0x10[_0xfac5[33]](404)};if(_0x81b0xf[_0xfac5[21]][_0xfac5[34]]&& _0x81b0xf[_0xfac5[21]][_0xfac5[34]]=== _0xfac5[35]){_0x81b0xf[_0xfac5[21]][_0xfac5[36]]= moment()[_0xfac5[38]](_0xfac5[37]);_0x81b0xf[_0xfac5[21]][_0xfac5[39]]= moment()[_0xfac5[38]](_0xfac5[37]);_0x81b0x18[_0xfac5[41]][_0xfac5[40]]= _0x81b0x18[_0xfac5[41]][_0xfac5[40]][_0xfac5[44]](_0xfac5[42],_0xfac5[43])};delete _0x81b0xf[_0xfac5[21]][_0xfac5[34]];_0x81b0x16= _0x81b0x18[_0xfac5[41]];return _0x81b0x16[_0xfac5[40]]})[_0xfac5[20]](reportBuildUtils[_0xfac5[31]](_0x81b0xf[_0xfac5[30]]))[_0xfac5[20]](function(_0x81b0x17){return [_0x81b0x17,_0x81b0x16]})[_0xfac5[29]](reportBuildUtils[_0xfac5[28]](_0x81b0xf[_0xfac5[21]]))}}exports[_0xfac5[50]]= function(_0x81b0xf,_0x81b0x10){var _0x81b0x19;return Promise[_0xfac5[27]]([])[_0xfac5[20]](getQuery(_0x81b0xf,_0x81b0x10))[_0xfac5[20]](function(_0x81b0x14){return _0x81b0x14?sequelize[_0xfac5[21]](_0x81b0x14,{type:sequelize[_0xfac5[61]][_0xfac5[60]]}):[]})[_0xfac5[20]](function(_0x81b0x1a){_0x81b0x19= _0x81b0x1a[_0xfac5[51]];if(_0x81b0xf[_0xfac5[21]][_0xfac5[52]]){_0x81b0x1a= _(_0x81b0x1a)[_0xfac5[56]](_0x81b0xf[_0xfac5[21]][_0xfac5[55]]|| 0)[_0xfac5[54]](_0x81b0xf[_0xfac5[21]][_0xfac5[52]])[_0xfac5[53]]()};_[_0xfac5[59]](_0x81b0x1a,function(_0x81b0x1b){_[_0xfac5[58]](_0x81b0x1b,function(_0x81b0x1c,_0x81b0x1d){if(_0x81b0x1c instanceof Date){_0x81b0x1b[_0x81b0x1d]= moment(_0x81b0x1c)[_0xfac5[38]](_0xfac5[57]).toString()}})});_0x81b0x10[_0xfac5[19]](200)[_0xfac5[18]]({rows:_0x81b0x1a,count:_0x81b0x19})})[_0xfac5[17]](function(_0x81b0x12){console[_0xfac5[26]](_0x81b0x12);return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[62]]= function(_0x81b0xf,_0x81b0x10){docExtract(_0x81b0xf,_0x81b0x10,_0xfac5[63])};exports[_0xfac5[64]]= function(_0x81b0xf,_0x81b0x10){docExtract(_0x81b0xf,_0x81b0x10,_0xfac5[65])};function docExtract(_0x81b0xf,_0x81b0x10,_0x81b0x1f){var _0x81b0x18;CustomReport[_0xfac5[49]](_0xfac5[48])[_0xfac5[47]](_0x81b0xf[_0xfac5[46]][_0xfac5[45]])[_0xfac5[20]](function(_0x81b0x16){if(!_0x81b0x16){return _0x81b0x10[_0xfac5[33]](404)};_0x81b0x18= _0x81b0x16;return ReportTree[_0xfac5[47]](2)})[_0xfac5[20]](function(_0x81b0x23){_0x81b0x23= JSON[_0xfac5[77]](_0x81b0x23[_0xfac5[76]]);var _0x81b0x24=_[_0xfac5[79]](_0x81b0x23,{id:_0x81b0x18[_0xfac5[78]]});var _0x81b0x25=getReportPath(_0x81b0x24,_0x81b0x23,_0x81b0x18[_0xfac5[80]]);if(_0x81b0xf[_0xfac5[21]][_0xfac5[34]]&& _0x81b0xf[_0xfac5[21]][_0xfac5[34]]=== _0xfac5[35]){_0x81b0xf[_0xfac5[21]][_0xfac5[36]]= moment()[_0xfac5[38]](_0xfac5[37]);_0x81b0xf[_0xfac5[21]][_0xfac5[39]]= moment()[_0xfac5[38]](_0xfac5[37]);_0x81b0x18[_0xfac5[41]][_0xfac5[40]]= _0x81b0x18[_0xfac5[41]][_0xfac5[40]][_0xfac5[44]](_0xfac5[42],_0xfac5[43])};delete _0x81b0xf[_0xfac5[21]][_0xfac5[34]];return [_0x81b0x18,ExtractedReport[_0xfac5[81]]({name:_0x81b0x25,startDate:_0x81b0xf[_0xfac5[21]][_0xfac5[36]]|| null,endDate:_0x81b0xf[_0xfac5[21]][_0xfac5[39]]|| null,output:_0x81b0x1f,UserId:_0x81b0xf[_0xfac5[30]][_0xfac5[45]]})]})[_0xfac5[29]](function(_0x81b0x18,_0x81b0x20){var _0x81b0x21=cp[_0xfac5[67]](__dirname+ _0xfac5[66]);_0x81b0x21[_0xfac5[70]](_0xfac5[73],function(_0x81b0x22){console[_0xfac5[26]](_0xfac5[74],_0x81b0x22);_0x81b0x21[_0xfac5[75]]()})[_0xfac5[70]](_0xfac5[71],function(){console[_0xfac5[26]](_0xfac5[72])})[_0xfac5[70]](_0xfac5[68],function(_0x81b0x12){console[_0xfac5[26]](_0xfac5[69],_0x81b0x12)});_0x81b0x21[_0xfac5[18]]({report:_0x81b0x18,query:_0x81b0xf[_0xfac5[21]],extractedId:_0x81b0x20[_0xfac5[45]],user:_0x81b0xf[_0xfac5[30]],type:_0x81b0x1f})})[_0xfac5[17]](function(_0x81b0x12){console[_0xfac5[26]](_0x81b0x12);return handleError(_0x81b0x10,_0x81b0x12)});return _0x81b0x10[_0xfac5[33]](200)}function getReportPath(_0x81b0x24,_0x81b0x23,_0x81b0x25){_0x81b0x25= _0x81b0x24[_0xfac5[82]]+ _0xfac5[83]+ _0x81b0x25;if(_0x81b0x24[_0xfac5[78]]=== _0xfac5[84]){return _0x81b0x25}else {return getReportPath(_[_0xfac5[79]](_0x81b0x23,{id:_0x81b0x24[_0xfac5[78]]}),_0x81b0x23,_0x81b0x25)}}exports[_0xfac5[85]]= function(_0x81b0xf,_0x81b0x10){return CustomReport[_0xfac5[49]](_0xfac5[48])[_0xfac5[47]](_0x81b0xf[_0xfac5[46]][_0xfac5[45]])[_0xfac5[20]](function(_0x81b0x18){if(!_0x81b0x18){return _0x81b0x10[_0xfac5[33]](404)};return _0x81b0x10[_0xfac5[18]](_0x81b0x18)})[_0xfac5[17]](function(_0x81b0x12){return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[86]]= function(_0x81b0xf,_0x81b0x10){return CustomReport[_0xfac5[49]]({method:[_0xfac5[89],{CustomReportId:_0x81b0xf[_0xfac5[46]][_0xfac5[45]]}]})[_0xfac5[47]](_0x81b0xf[_0xfac5[46]][_0xfac5[45]],{attributes:[_0xfac5[87],_0xfac5[88],_0xfac5[80],_0xfac5[78],_0xfac5[40]]})[_0xfac5[20]](function(_0x81b0x18){if(!_0x81b0x18){return _0x81b0x10[_0xfac5[33]](404)};return _0x81b0x10[_0xfac5[18]](_0x81b0x18)})[_0xfac5[17]](function(_0x81b0x12){return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[90]]= function(_0x81b0xf,_0x81b0x10){var _0x81b0x27;return sequelize[_0xfac5[95]](function(_0x81b0x28){return CustomReport[_0xfac5[49]](_0xfac5[48])[_0xfac5[47]](_0x81b0xf[_0xfac5[46]][_0xfac5[45]])[_0xfac5[20]](function(_0x81b0x18){if(!_0x81b0x18){return _0x81b0x10[_0xfac5[33]](404)};var _0x81b0x29=_0x81b0x18[_0xfac5[41]];delete _0x81b0x29[_0xfac5[45]];delete _0x81b0x29[_0xfac5[91]];delete _0x81b0x29[_0xfac5[92]];_0x81b0x29[_0xfac5[78]]= _0x81b0xf[_0xfac5[93]][_0xfac5[78]];_0x81b0x27= _[_0xfac5[94]](_0x81b0x29.Fields,_0xfac5[41]);return CustomReport[_0xfac5[81]](_0x81b0x29,{transaction:_0x81b0x28})})[_0xfac5[20]](function(_0x81b0x18){return [_0x81b0x18,_0x81b0x27]})[_0xfac5[29]](createFields(_0x81b0x28))})[_0xfac5[20]](function(){return _0x81b0x10[_0xfac5[33]](201)})[_0xfac5[17]](function(_0x81b0x12){console[_0xfac5[26]](_0x81b0x12);return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[81]]= function(_0x81b0xf,_0x81b0x10){var _0x81b0x16;return sequelize[_0xfac5[95]](function(_0x81b0x28){return CustomReport[_0xfac5[81]](_0x81b0xf[_0xfac5[93]],{transaction:_0x81b0x28})[_0xfac5[20]](function(_0x81b0x18){_0x81b0x16= _0x81b0x18;return [_0x81b0x16,_0x81b0xf[_0xfac5[93]][_0xfac5[96]]]})[_0xfac5[29]](createFields(_0x81b0x28))})[_0xfac5[20]](function(){return _0x81b0x10[_0xfac5[19]](201)[_0xfac5[18]](_0x81b0x16)})[_0xfac5[17]](function(_0x81b0x12){console[_0xfac5[26]](_0x81b0x12);return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[97]]= function(_0x81b0xf,_0x81b0x10){var _0x81b0x16;return sequelize[_0xfac5[95]](function(_0x81b0x28){return CustomReport[_0xfac5[81]](_0x81b0xf[_0xfac5[93]],{transaction:_0x81b0x28})[_0xfac5[20]](function(_0x81b0x18){_0x81b0x16= _0x81b0x18;return [_0x81b0x16,_0x81b0xf[_0xfac5[93]][_0xfac5[96]]]})[_0xfac5[29]](createImportFields(_0x81b0x28))})[_0xfac5[20]](function(){return _0x81b0x10[_0xfac5[19]](201)[_0xfac5[18]](_0x81b0x16)})[_0xfac5[17]](function(_0x81b0x12){console[_0xfac5[26]](_0x81b0x12);return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[98]]= function(_0x81b0xf,_0x81b0x10,_0x81b0x11){if(_0x81b0xf[_0xfac5[93]][_0xfac5[45]]){delete _0x81b0xf[_0xfac5[93]][_0xfac5[45]]};var _0x81b0x16;return sequelize[_0xfac5[95]](function(_0x81b0x28){return CustomReport[_0xfac5[47]](_0x81b0xf[_0xfac5[46]][_0xfac5[45]])[_0xfac5[20]](function(_0x81b0x18){if(!_0x81b0x18){return _0x81b0x10[_0xfac5[33]](404)};var _0x81b0x2a=_[_0xfac5[100]](_0x81b0x18,_0x81b0xf[_0xfac5[93]]);return _0x81b0x18[_0xfac5[101]]({transaction:_0x81b0x28})})[_0xfac5[20]](function(_0x81b0x18){_0x81b0x16= _0x81b0x18;if(_0x81b0xf[_0xfac5[93]][_0xfac5[96]]){return ReportField[_0xfac5[99]]({where:{CustomReportId:_0x81b0xf[_0xfac5[46]][_0xfac5[45]]},transaction:_0x81b0x28})}})[_0xfac5[20]](function(){return [_0x81b0x16,_0x81b0xf[_0xfac5[93]][_0xfac5[96]]]})[_0xfac5[29]](createFields(_0x81b0x28))})[_0xfac5[20]](function(){return _0x81b0x10[_0xfac5[33]](200)})[_0xfac5[17]](function(_0x81b0x12){console[_0xfac5[26]](_0x81b0x12);return handleError(_0x81b0x10,_0x81b0x12)})};function createFields(_0x81b0x28){return function(_0x81b0x18,_0x81b0x2c){if(_0x81b0x2c&& Array[_0xfac5[102]](_0x81b0x2c)&& _0x81b0x2c[_0xfac5[51]]){var _0x81b0x2d=reportBuildUtils[_0xfac5[103]](_0x81b0x18[_0xfac5[40]]);if(_0x81b0x2d){var _0x81b0x2e;return _0x81b0x2d[_0xfac5[117]]()[_0xfac5[20]](function(_0x81b0x33){_0x81b0x2e= _[_0xfac5[115]](_0x81b0x33);return Metric[_0xfac5[116]]()})[_0xfac5[20]](function(_0x81b0x2f){var _0x81b0x30=[];_0x81b0x2f= _[_0xfac5[94]](_0x81b0x2f,_0xfac5[41]);_0x81b0x2c[_0xfac5[59]](function(_0x81b0x31){_0x81b0x31[_0xfac5[104]]= _0x81b0x18[_0xfac5[45]];if(_0x81b0x31[_0xfac5[105]]){var _0x81b0x32=_[_0xfac5[79]](_0x81b0x2f,{id:_0x81b0x31[_0xfac5[105]]});if(_0x81b0x32){_0x81b0x31[_0xfac5[106]]= _0x81b0x32[_0xfac5[107]];_0x81b0x30[_0xfac5[108]](ReportField[_0xfac5[81]](_0x81b0x31,{transaction:_0x81b0x28}))}else {throw new sequelize.Error(_0xfac5[109]+ _0x81b0x31[_0xfac5[105]]+ _0xfac5[110])}}else {if(_[_0xfac5[111]](_0x81b0x2e,_0x81b0x31[_0xfac5[106]])|| _0x81b0x31[_0xfac5[112]]){_0x81b0x30[_0xfac5[108]](ReportField[_0xfac5[81]](_0x81b0x31,{transaction:_0x81b0x28}))}else {throw new sequelize.Error(_0xfac5[113]+ _0x81b0x31[_0xfac5[106]]+ _0xfac5[114])}}});return _0x81b0x30})[_0xfac5[27]]()}else {throw new sequelize.Error(_0xfac5[118])}}}}function createImportFields(_0x81b0x28){return function(_0x81b0x18,_0x81b0x2c){if(_0x81b0x2c&& Array[_0xfac5[102]](_0x81b0x2c)&& _0x81b0x2c[_0xfac5[51]]){var _0x81b0x2d=reportBuildUtils[_0xfac5[103]](_0x81b0x18[_0xfac5[40]]);if(_0x81b0x2d){var _0x81b0x2e;return _0x81b0x2d[_0xfac5[117]]()[_0xfac5[20]](function(_0x81b0x33){_0x81b0x2e= _[_0xfac5[115]](_0x81b0x33);var _0x81b0x30=[];var _0x81b0x35;if(_[_0xfac5[121]](_0x81b0x2c,function(_0x81b0x31){return _[_0xfac5[120]](_0x81b0x31,_0xfac5[119])})){_0x81b0x35= _0xfac5[122]}else {if(_[_0xfac5[121]](_0x81b0x2c,function(_0x81b0x31){return _[_0xfac5[120]](_0x81b0x31,_0xfac5[105])})){_0x81b0x35= _0xfac5[7]}else {throw new sequelize.Error(_0xfac5[123])}};var _0x81b0x36=_[_0xfac5[125]](_0x81b0x2c,_0x81b0x35+ _0xfac5[124]);_[_0xfac5[58]](_0x81b0x36,function(_0x81b0x37,_0x81b0x1d){if(_0x81b0x1d!== _0xfac5[126]&& _0x81b0x1d!== _0xfac5[127]){_0x81b0x37[0][_0x81b0x35][_0xfac5[128]][_0xfac5[59]](function(_0x81b0x31){_0x81b0x31[_0xfac5[104]]= _0x81b0x18[_0xfac5[45]]});_0x81b0x37[0][_0x81b0x35][_0xfac5[80]]+= _0xfac5[129]+ sr({length:5});_0x81b0x30[_0xfac5[108]](Metric[_0xfac5[81]](_0x81b0x37[0][_0x81b0x35],{include:[{model:ReportField,as:_0xfac5[128]}],transaction:_0x81b0x28}))}else {_0x81b0x37[_0xfac5[59]](function(_0x81b0x31){if(_[_0xfac5[111]](_0x81b0x2e,_0x81b0x31[_0xfac5[106]])|| _0x81b0x31[_0xfac5[112]]){_0x81b0x31[_0xfac5[104]]= _0x81b0x18[_0xfac5[45]];_0x81b0x30[_0xfac5[108]](ReportField[_0xfac5[81]](_0x81b0x31,{transaction:_0x81b0x28}))}else {throw new sequelize.Error(_0xfac5[113]+ _0x81b0x31[_0xfac5[106]]+ _0xfac5[114])}})}});return _0x81b0x30})[_0xfac5[27]]()}else {throw new sequelize.Error(_0xfac5[118])}}}}exports[_0xfac5[99]]= function(_0x81b0xf,_0x81b0x10){return CustomReport[_0xfac5[47]](_0x81b0xf[_0xfac5[46]][_0xfac5[45]])[_0xfac5[20]](function(_0x81b0x18){if(!_0x81b0x18){return _0x81b0x10[_0xfac5[33]](404)};return _0x81b0x18[_0xfac5[99]]()})[_0xfac5[20]](function(){return _0x81b0x10[_0xfac5[33]](204)})[_0xfac5[17]](function(_0x81b0x12){return handleError(_0x81b0x10,_0x81b0x12)})};exports[_0xfac5[130]]= function(_0x81b0xf,_0x81b0x10){return CustomReport[_0xfac5[99]]({where:{id:_0x81b0xf[_0xfac5[21]][_0xfac5[131]]},individualHooks:true})[_0xfac5[20]](function(){return _0x81b0x10[_0xfac5[33]](204)})[_0xfac5[17]](function(_0x81b0x12){return handleError(_0x81b0x10,_0x81b0x12)})};function handleError(_0x81b0x10,_0x81b0x12){return _0x81b0x10[_0xfac5[19]](500)[_0xfac5[18]](_0x81b0x12)}
\ No newline at end of file