Built motion from commit 76c0fab.|0.0.109
[motion.git] / server / api / custom_report / custom_report.controller.js
index f849509..ef90441 100644 (file)
@@ -1,423 +1 @@
-'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 _0x212b=["\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","\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","\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\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","\x70\x61\x72\x65\x6E\x74","\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","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64","\x4D\x65\x74\x72\x69\x63\x49\x64","\x66\x69\x6E\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","\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","\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","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x43\x6F\x6E\x74\x61\x63\x74","\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73","\x56\x6F\x69\x63\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x212b[0];var _=require(_0x212b[1]);var util=require(_0x212b[2]);var sequelize=require(_0x212b[4])[_0x212b[3]];var CustomReport=require(_0x212b[4])[_0x212b[5]];var ReportField=require(_0x212b[4])[_0x212b[6]];var Metric=require(_0x212b[4])[_0x212b[7]];var ExtractedReport=require(_0x212b[4])[_0x212b[8]];var extractUtils=require(_0x212b[9]);var reportBuildUtils=require(_0x212b[10]);var Util=require(_0x212b[11]);var sr=require(_0x212b[12]);var moment=require(_0x212b[13]);var cp=require(_0x212b[14]);exports[_0x212b[15]]=function(_0xc6fdxe,_0xc6fdxf,_0xc6fdx10){return CustomReport[_0x212b[22]](Util[_0x212b[21]](_0xc6fdxe[_0x212b[20]]))[_0x212b[19]](function(_0xc6fdx12){_0xc6fdxf[_0x212b[18]](200)[_0x212b[17]](_0xc6fdx12)})[_0x212b[16]](function(_0xc6fdx11){return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[23]]=function(_0xc6fdxe,_0xc6fdxf){return Promise[_0x212b[26]]([])[_0x212b[19]](getQuery(_0xc6fdxe,_0xc6fdxf))[_0x212b[19]](function(_0xc6fdx13){_0xc6fdxf[_0x212b[18]](200)[_0x212b[17]]({query:_0xc6fdx13})})[_0x212b[16]](function(_0xc6fdx11){console[_0x212b[25]](_0x212b[24],_0xc6fdx11)})};function getQuery(_0xc6fdxe,_0xc6fdxf){var _0xc6fdx15;return function(){return CustomReport[_0x212b[48]](_0x212b[47])[_0x212b[46]](_0xc6fdxe[_0x212b[45]][_0x212b[44]])[_0x212b[19]](function(_0xc6fdx17){console[_0x212b[25]](_0x212b[31]);if(!_0xc6fdx17){return _0xc6fdxf[_0x212b[32]](404)};if(_0xc6fdxe[_0x212b[20]][_0x212b[33]]&&_0xc6fdxe[_0x212b[20]][_0x212b[33]]===_0x212b[34]){_0xc6fdxe[_0x212b[20]][_0x212b[35]]=moment()[_0x212b[37]](_0x212b[36]);_0xc6fdxe[_0x212b[20]][_0x212b[38]]=moment()[_0x212b[37]](_0x212b[36]);_0xc6fdx17[_0x212b[40]][_0x212b[39]]=_0xc6fdx17[_0x212b[40]][_0x212b[39]][_0x212b[43]](_0x212b[41],_0x212b[42])};delete _0xc6fdxe[_0x212b[20]][_0x212b[33]];_0xc6fdx15=_0xc6fdx17[_0x212b[40]];return _0xc6fdx15[_0x212b[39]]})[_0x212b[19]](reportBuildUtils[_0x212b[30]](_0xc6fdxe[_0x212b[29]]))[_0x212b[19]](function(_0xc6fdx16){return [_0xc6fdx16,_0xc6fdx15]})[_0x212b[28]](reportBuildUtils[_0x212b[27]](_0xc6fdxe[_0x212b[20]]))}}exports[_0x212b[49]]=function(_0xc6fdxe,_0xc6fdxf){var _0xc6fdx18;return Promise[_0x212b[26]]([])[_0x212b[19]](getQuery(_0xc6fdxe,_0xc6fdxf))[_0x212b[19]](function(_0xc6fdx13){return _0xc6fdx13?sequelize[_0x212b[20]](_0xc6fdx13,{type:sequelize[_0x212b[60]][_0x212b[59]]}):[]})[_0x212b[19]](function(_0xc6fdx19){_0xc6fdx18=_0xc6fdx19[_0x212b[50]];if(_0xc6fdxe[_0x212b[20]][_0x212b[51]]){_0xc6fdx19=_(_0xc6fdx19)[_0x212b[55]](_0xc6fdxe[_0x212b[20]][_0x212b[54]]||0)[_0x212b[53]](_0xc6fdxe[_0x212b[20]][_0x212b[51]])[_0x212b[52]]()};_[_0x212b[58]](_0xc6fdx19,function(_0xc6fdx1a){_[_0x212b[57]](_0xc6fdx1a,function(_0xc6fdx1b,_0xc6fdx1c){if(_0xc6fdx1b instanceof Date){_0xc6fdx1a[_0xc6fdx1c]=moment(_0xc6fdx1b)[_0x212b[37]](_0x212b[56]).toString()}})});_0xc6fdxf[_0x212b[18]](200)[_0x212b[17]]({rows:_0xc6fdx19,count:_0xc6fdx18})})[_0x212b[16]](function(_0xc6fdx11){console[_0x212b[25]](_0xc6fdx11);return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[61]]=function(_0xc6fdxe,_0xc6fdxf){docExtract(_0xc6fdxe,_0xc6fdxf,_0x212b[62])};exports[_0x212b[63]]=function(_0xc6fdxe,_0xc6fdxf){docExtract(_0xc6fdxe,_0xc6fdxf,_0x212b[64])};function docExtract(_0xc6fdxe,_0xc6fdxf,_0xc6fdx1e){CustomReport[_0x212b[48]](_0x212b[47])[_0x212b[46]](_0xc6fdxe[_0x212b[45]][_0x212b[44]])[_0x212b[19]](function(_0xc6fdx17){if(!_0xc6fdx17){return _0xc6fdxf[_0x212b[32]](404)};if(_0xc6fdxe[_0x212b[20]][_0x212b[33]]&&_0xc6fdxe[_0x212b[20]][_0x212b[33]]===_0x212b[34]){_0xc6fdxe[_0x212b[20]][_0x212b[35]]=moment()[_0x212b[37]](_0x212b[36]);_0xc6fdxe[_0x212b[20]][_0x212b[38]]=moment()[_0x212b[37]](_0x212b[36]);_0xc6fdx17[_0x212b[40]][_0x212b[39]]=_0xc6fdx17[_0x212b[40]][_0x212b[39]][_0x212b[43]](_0x212b[41],_0x212b[42])};delete _0xc6fdxe[_0x212b[20]][_0x212b[33]];return [_0xc6fdx17,ExtractedReport[_0x212b[76]]({name:_0xc6fdx17[_0x212b[75]],startDate:_0xc6fdxe[_0x212b[20]][_0x212b[35]]||null,endDate:_0xc6fdxe[_0x212b[20]][_0x212b[38]]||null,output:_0xc6fdx1e,UserId:_0xc6fdxe[_0x212b[29]][_0x212b[44]]})]})[_0x212b[28]](function(_0xc6fdx17,_0xc6fdx1f){var _0xc6fdx20=cp[_0x212b[66]](__dirname+_0x212b[65]);_0xc6fdx20[_0x212b[69]](_0x212b[72],function(_0xc6fdx21){console[_0x212b[25]](_0x212b[73],_0xc6fdx21);_0xc6fdx20[_0x212b[74]]()})[_0x212b[69]](_0x212b[70],function(){console[_0x212b[25]](_0x212b[71])})[_0x212b[69]](_0x212b[67],function(_0xc6fdx11){console[_0x212b[25]](_0x212b[68],_0xc6fdx11)});_0xc6fdx20[_0x212b[17]]({report:_0xc6fdx17,query:_0xc6fdxe[_0x212b[20]],extractedId:_0xc6fdx1f[_0x212b[44]],user:_0xc6fdxe[_0x212b[29]],type:_0xc6fdx1e})})[_0x212b[16]](function(_0xc6fdx11){console[_0x212b[25]](_0xc6fdx11);return handleError(_0xc6fdxf,_0xc6fdx11)});return _0xc6fdxf[_0x212b[32]](200)}exports[_0x212b[77]]=function(_0xc6fdxe,_0xc6fdxf){return CustomReport[_0x212b[48]](_0x212b[47])[_0x212b[46]](_0xc6fdxe[_0x212b[45]][_0x212b[44]])[_0x212b[19]](function(_0xc6fdx17){if(!_0xc6fdx17){return _0xc6fdxf[_0x212b[32]](404)};return _0xc6fdxf[_0x212b[17]](_0xc6fdx17)})[_0x212b[16]](function(_0xc6fdx11){return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[78]]=function(_0xc6fdxe,_0xc6fdxf){return CustomReport[_0x212b[48]]({method:[_0x212b[82],{CustomReportId:_0xc6fdxe[_0x212b[45]][_0x212b[44]]}]})[_0x212b[46]](_0xc6fdxe[_0x212b[45]][_0x212b[44]],{attributes:[_0x212b[79],_0x212b[80],_0x212b[75],_0x212b[81],_0x212b[39]]})[_0x212b[19]](function(_0xc6fdx17){if(!_0xc6fdx17){return _0xc6fdxf[_0x212b[32]](404)};return _0xc6fdxf[_0x212b[17]](_0xc6fdx17)})[_0x212b[16]](function(_0xc6fdx11){return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[83]]=function(_0xc6fdxe,_0xc6fdxf){var _0xc6fdx22;return sequelize[_0x212b[88]](function(_0xc6fdx23){return CustomReport[_0x212b[48]](_0x212b[47])[_0x212b[46]](_0xc6fdxe[_0x212b[45]][_0x212b[44]])[_0x212b[19]](function(_0xc6fdx17){if(!_0xc6fdx17){return _0xc6fdxf[_0x212b[32]](404)};var _0xc6fdx24=_0xc6fdx17[_0x212b[40]];delete _0xc6fdx24[_0x212b[44]];delete _0xc6fdx24[_0x212b[84]];delete _0xc6fdx24[_0x212b[85]];_0xc6fdx24[_0x212b[81]]=_0xc6fdxe[_0x212b[86]][_0x212b[81]];_0xc6fdx22=_[_0x212b[87]](_0xc6fdx24.Fields,_0x212b[40]);return CustomReport[_0x212b[76]](_0xc6fdx24,{transaction:_0xc6fdx23})})[_0x212b[19]](function(_0xc6fdx17){return [_0xc6fdx17,_0xc6fdx22]})[_0x212b[28]](createFields(_0xc6fdx23))})[_0x212b[19]](function(){return _0xc6fdxf[_0x212b[32]](201)})[_0x212b[16]](function(_0xc6fdx11){console[_0x212b[25]](_0xc6fdx11);return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[76]]=function(_0xc6fdxe,_0xc6fdxf){var _0xc6fdx15;return sequelize[_0x212b[88]](function(_0xc6fdx23){return CustomReport[_0x212b[76]](_0xc6fdxe[_0x212b[86]],{transaction:_0xc6fdx23})[_0x212b[19]](function(_0xc6fdx17){_0xc6fdx15=_0xc6fdx17;return [_0xc6fdx15,_0xc6fdxe[_0x212b[86]][_0x212b[89]]]})[_0x212b[28]](createFields(_0xc6fdx23))})[_0x212b[19]](function(){return _0xc6fdxf[_0x212b[18]](201)[_0x212b[17]](_0xc6fdx15)})[_0x212b[16]](function(_0xc6fdx11){console[_0x212b[25]](_0xc6fdx11);return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[90]]=function(_0xc6fdxe,_0xc6fdxf){var _0xc6fdx15;return sequelize[_0x212b[88]](function(_0xc6fdx23){return CustomReport[_0x212b[76]](_0xc6fdxe[_0x212b[86]],{transaction:_0xc6fdx23})[_0x212b[19]](function(_0xc6fdx17){_0xc6fdx15=_0xc6fdx17;return [_0xc6fdx15,_0xc6fdxe[_0x212b[86]][_0x212b[89]]]})[_0x212b[28]](createImportFields(_0xc6fdx23))})[_0x212b[19]](function(){return _0xc6fdxf[_0x212b[18]](201)[_0x212b[17]](_0xc6fdx15)})[_0x212b[16]](function(_0xc6fdx11){console[_0x212b[25]](_0xc6fdx11);return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[91]]=function(_0xc6fdxe,_0xc6fdxf,_0xc6fdx10){if(_0xc6fdxe[_0x212b[86]][_0x212b[44]]){delete _0xc6fdxe[_0x212b[86]][_0x212b[44]]};var _0xc6fdx15;return sequelize[_0x212b[88]](function(_0xc6fdx23){return CustomReport[_0x212b[46]](_0xc6fdxe[_0x212b[45]][_0x212b[44]])[_0x212b[19]](function(_0xc6fdx17){if(!_0xc6fdx17){return _0xc6fdxf[_0x212b[32]](404)};var _0xc6fdx25=_[_0x212b[93]](_0xc6fdx17,_0xc6fdxe[_0x212b[86]]);return _0xc6fdx17[_0x212b[94]]({transaction:_0xc6fdx23})})[_0x212b[19]](function(_0xc6fdx17){_0xc6fdx15=_0xc6fdx17;if(_0xc6fdxe[_0x212b[86]][_0x212b[89]]){return ReportField[_0x212b[92]]({where:{CustomReportId:_0xc6fdxe[_0x212b[45]][_0x212b[44]]},transaction:_0xc6fdx23})}})[_0x212b[19]](function(){return [_0xc6fdx15,_0xc6fdxe[_0x212b[86]][_0x212b[89]]]})[_0x212b[28]](createFields(_0xc6fdx23))})[_0x212b[19]](function(){return _0xc6fdxf[_0x212b[32]](200)})[_0x212b[16]](function(_0xc6fdx11){console[_0x212b[25]](_0xc6fdx11);return handleError(_0xc6fdxf,_0xc6fdx11)})};function createFields(_0xc6fdx23){return function(_0xc6fdx17,_0xc6fdx27){if(_0xc6fdx27&&Array[_0x212b[95]](_0xc6fdx27)&&_0xc6fdx27[_0x212b[50]]){var _0xc6fdx28=getTable(_0xc6fdx17[_0x212b[39]]);if(_0xc6fdx28){var _0xc6fdx29;return _0xc6fdx28[_0x212b[109]]()[_0x212b[19]](function(_0xc6fdx2e){_0xc6fdx29=_[_0x212b[107]](_0xc6fdx2e);return Metric[_0x212b[108]]()})[_0x212b[19]](function(_0xc6fdx2a){var _0xc6fdx2b=[];_0xc6fdx2a=_[_0x212b[87]](_0xc6fdx2a,_0x212b[40]);_0xc6fdx27[_0x212b[58]](function(_0xc6fdx2c){_0xc6fdx2c[_0x212b[96]]=_0xc6fdx17[_0x212b[44]];if(_0xc6fdx2c[_0x212b[97]]){var _0xc6fdx2d=_[_0x212b[98]](_0xc6fdx2a,{id:_0xc6fdx2c[_0x212b[97]]});if(_0xc6fdx2d){_0xc6fdx2c[_0x212b[99]]=_0xc6fdx2d[_0x212b[100]];_0xc6fdx2b[_0x212b[101]](ReportField[_0x212b[76]](_0xc6fdx2c,{transaction:_0xc6fdx23}))}else {throw  new sequelize.Error(_0x212b[102]+_0xc6fdx2c[_0x212b[97]]+_0x212b[103])}}else {if(_[_0x212b[104]](_0xc6fdx29,_0xc6fdx2c[_0x212b[99]])){_0xc6fdx2b[_0x212b[101]](ReportField[_0x212b[76]](_0xc6fdx2c,{transaction:_0xc6fdx23}))}else {throw  new sequelize.Error(_0x212b[105]+_0xc6fdx2c[_0x212b[99]]+_0x212b[106])}}});return _0xc6fdx2b})[_0x212b[26]]()}else {throw  new sequelize.Error(_0x212b[110])}}}}function createImportFields(_0xc6fdx23){return function(_0xc6fdx17,_0xc6fdx27){if(_0xc6fdx27&&Array[_0x212b[95]](_0xc6fdx27)&&_0xc6fdx27[_0x212b[50]]){var _0xc6fdx28=getTable(_0xc6fdx17[_0x212b[39]]);if(_0xc6fdx28){var _0xc6fdx29;return _0xc6fdx28[_0x212b[109]]()[_0x212b[19]](function(_0xc6fdx2e){_0xc6fdx29=_[_0x212b[107]](_0xc6fdx2e);return Metric[_0x212b[108]]()})[_0x212b[19]](function(_0xc6fdx2a){var _0xc6fdx2b=[];var _0xc6fdx30=_[_0x212b[111]](_0xc6fdx27,_0x212b[97]);_[_0x212b[57]](_0xc6fdx30,function(_0xc6fdx31,_0xc6fdx1c){if(_0xc6fdx1c!==_0x212b[112]&&_0xc6fdx1c!==_0x212b[113]){_0xc6fdx31[0][_0x212b[7]][_0x212b[114]][_0x212b[58]](function(_0xc6fdx2c){_0xc6fdx2c[_0x212b[96]]=_0xc6fdx17[_0x212b[44]]});_0xc6fdx31[0][_0x212b[7]][_0x212b[75]]+=_0x212b[115]+sr({length:5});console[_0x212b[25]](_0x212b[100],_0xc6fdx31[0].Metric);_0xc6fdx2b[_0x212b[101]](Metric[_0x212b[76]](_0xc6fdx31[0].Metric,{include:[{model:ReportField,as:_0x212b[114]}],transaction:_0xc6fdx23}))}else {_0xc6fdx31[_0x212b[58]](function(_0xc6fdx2c){if(_[_0x212b[104]](_0xc6fdx29,_0xc6fdx2c[_0x212b[99]])){_0xc6fdx2c[_0x212b[96]]=_0xc6fdx17[_0x212b[44]];_0xc6fdx2b[_0x212b[101]](ReportField[_0x212b[76]](_0xc6fdx2c,{transaction:_0xc6fdx23}))}else {throw  new sequelize.Error(_0x212b[105]+_0xc6fdx2c[_0x212b[99]]+_0x212b[106])}})}});return _0xc6fdx2b})[_0x212b[26]]()}else {throw  new sequelize.Error(_0x212b[110])}}}}function getTable(_0xc6fdx33){var _0xc6fdx28;switch(_0xc6fdx33){case _0x212b[118]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[116]];break;case _0x212b[120]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[119]];break;case _0x212b[122]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[121]];break;case _0x212b[124]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[123]];break;case _0x212b[126]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[125]];break;case _0x212b[128]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[127]];break;case _0x212b[130]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[129]];break;case _0x212b[132]:_0xc6fdx28=require(_0x212b[4])[_0x212b[117]][_0x212b[131]];break;case _0x212b[134]:_0xc6fdx28=require(_0x212b[4])[_0x212b[133]];break;case _0x212b[136]:_0xc6fdx28=require(_0x212b[4])[_0x212b[135]];break;default:};return _0xc6fdx28}exports[_0x212b[92]]=function(_0xc6fdxe,_0xc6fdxf){return CustomReport[_0x212b[46]](_0xc6fdxe[_0x212b[45]][_0x212b[44]])[_0x212b[19]](function(_0xc6fdx17){if(!_0xc6fdx17){return _0xc6fdxf[_0x212b[32]](404)};return _0xc6fdx17[_0x212b[92]]()})[_0x212b[19]](function(){return _0xc6fdxf[_0x212b[32]](204)})[_0x212b[16]](function(_0xc6fdx11){return handleError(_0xc6fdxf,_0xc6fdx11)})};exports[_0x212b[137]]=function(_0xc6fdxe,_0xc6fdxf){return CustomReport[_0x212b[92]]({where:{id:_0xc6fdxe[_0x212b[20]][_0x212b[138]]},individualHooks:true})[_0x212b[19]](function(){return _0xc6fdxf[_0x212b[32]](204)})[_0x212b[16]](function(_0xc6fdx11){return handleError(_0xc6fdxf,_0xc6fdx11)})};function handleError(_0xc6fdxf,_0xc6fdx11){return _0xc6fdxf[_0x212b[18]](500)[_0x212b[17]](_0xc6fdx11)}
\ No newline at end of file