@resolveio/server-lib 8.0.30 → 8.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -590,15 +590,15 @@ var MethodManager = /** @class */ (function () {
590
590
  return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
591
591
  var _this = this;
592
592
  return __generator(this, function (_a) {
593
- if ((this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/dev\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200') && !sendTo.match(new RegExp(/\@resolveio\.com/))) {
593
+ if ((this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/dev\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/www\.dev\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200') && !sendTo.match(new RegExp(/\@resolveio\.com/))) {
594
594
  sendTo = 'dev@resolveio.com';
595
595
  }
596
- // if (this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/dev\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200' || sendTo.endsWith('@resolveio.com')) {
596
+ // if (this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/dev\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/www\.dev\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200' || sendTo.endsWith('@resolveio.com')) {
597
597
  this._mailer.sendMail({
598
598
  replyTo: undefined,
599
599
  from: send_from ? send_from : this.serverConfig.MAIL_FROM,
600
600
  to: sendTo,
601
- subject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/dev\./)) ? '(DEV SERVER) - ' : '') + subject,
601
+ subject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/dev\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\:\/\/www\.dev\./)) ? '(DEV SERVER) - ' : '') + subject,
602
602
  text: text,
603
603
  html: html,
604
604
  attachments: attachments
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/method.manager.ts"],"names":[],"mappings":"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","file":"method.manager.js","sourcesContent":["import { ServerResponseModel } from '../models/server-response.model';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { MethodModel } from '../models/method.model';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadAWSMethods } from '../methods/aws';\nimport { loadCloudConvertMethods } from '../methods/cloudconvert';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as imap from 'imap';\nimport * as aws from 'aws-sdk';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagMethods } from '../methods/flags';\nimport { QueueMethodModel } from '../models/queue-method.model';\nimport { MethodResponses } from '../collections/method-response.collection';\nimport { Types } from 'mongoose';\nimport { deepCopy, getBinarySize } from '../util/common';\nimport { Logs } from '../collections/log.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { LogMethodLatencies } from '../collections/log-method-latency.collection';\nimport * as moment from 'moment';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { EmailVerifies } from '../collections/email-verified.collection';\n\nconst Verifier = require('email-verifier');\n\nexport class MethodManager {\n\n\tprivate _mainServer: ResolveIOMainServer;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailer: nodemailer.Transporter;\n\tprivate _imap: imap;\n\tprivate _aws: aws.S3;\n\tprivate serverConfig;\n\tprivate clientDir;\n\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\n\tconstructor(mainServer, serverConfig, clientDir) {\n\t\tthis._mainServer = mainServer;\n\t\tthis.serverConfig = serverConfig;\n\t\tthis.clientDir = clientDir;\n\n\t\t// Fixtures\n\t\tloadServerInit();\n\t\tloadServerCronJobs();\n\n\t\t// Methods\n\t\tloadAccountMethods(this);\n\t\tloadAWSMethods(this);\n\t\tloadCloudConvertMethods(this);\n\t\tloadCollectionMethods(this);\n\t\tloadCounterMethods(this);\n\t\tloadLogMethods(this);\n\t\tloadPDFMethods(this);\n\t\tloadCronJobMethods(this);\n\t\tloadFlagMethods(this);\n\t\tloadReportBuilderMethods(this);\n\t\tloadSupportMethods(this);\n\t\tloadMonitorMethods(this);\n\n\t\tif (mainServer.sesMail) {\n\t\t\tthis._mailer = nodemailer.createTransport({\n\t\t\t\tSES: new aws.SES({\n\t\t\t\t\tapiVersion: '2010-12-01',\n\t\t\t\t\taccessKeyId: serverConfig.AWSACCESSKEYID,\n\t\t\t\t\tsecretAccessKey: serverConfig.AWSSECRETACCESSKEY,\n\t\t\t\t\tregion: serverConfig.AWSSES_REGION\n\t\t\t\t})\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis._mailer = nodemailer.createTransport({\n\t\t\t\thost: this.serverConfig['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: this.serverConfig['MAIL_PORT'], //587, // secure SMTP\n\t\t\t\tsecure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely\n\t\t\t\tauth: {\n\t\t\t\t\tuser: this.serverConfig['MAIL_USERNAME'],\n\t\t\t\t\tpass: this.serverConfig['MAIL_PASSWORD']\n\t\t\t\t},\n\t\t\t\ttls: {\n\t\t\t\t\tciphers: 'SSLv3'\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// this._imap = new imap({\n\t\t// \tuser: this.serverConfig['ORDERS_EMAIL'],\n\t\t// \tpassword: this.serverConfig['ORDERS_PASSWORD'],\n\t\t// \thost: this.serverConfig['ORDERS_HOST'],\n\t\t// \tport: this.serverConfig['ORDERS_PORT'],\n\t\t// \ttls: this.serverConfig['ORDERS_TLS']\n\t\t// });\n\n\t\t// let that = this;\n\n\t\t// let chemicalNames = await Chemicals.find({}).select('description').exec();\n\t\t// let jobNames = await Jobs.find({status: 'Active'}).select('well').exec();\n\n\t\t// console.log(jobNames.map(a => a.well));\n\n\t\t// this._imap.once('ready', () => {\n\t\t// \tthis._imap.openBox('INBOX', true, function(err, box) {\n\t\t// \t\tif (err) {\n\t\t// \t\t\tthrow err;\n\t\t// \t\t}\n\n\t\t// \t\tthat._imap.search([ 'NEW' ], function(err, results) {\n\n\t\t// \t\t\tconsole.log(err, results);\n\n\t\t// \t\t\tif (err || !results.length) {\n\t\t// \t\t\t\treturn that._imap.end();\n\t\t// \t\t\t}\n\n\t\t// \t\t\tlet f = that._imap.fetch(results[0], { bodies: ['HEADER.FIELDS (FROM)', 'TEXT'] });\n\t\t// \t\t\tf.on('message', function(msg, seqno) {\n\t\t// \t\t\t\t// console.log('Message #%d', seqno);\n\t\t// \t\t\t\tlet prefix = '(#' + seqno + ') ';\n\t\t// \t\t\t\tmsg.on('body', function(stream, info) {\n\t\t// \t\t\t\t\tlet buffer = '', count = 0;\n\t\t// \t\t\t\t\tstream.on('data', function(chunk) {\n\t\t// \t\t\t\t\t\tcount += chunk.length;\n\t\t// \t\t\t\t\t\tbuffer += chunk.toString('utf8');\n\t\t// \t\t\t\t\t});\n\t\t// \t\t\t\t\tstream.once('end', function() {\n\t\t// \t\t\t\t\t\tif (info.which === 'TEXT') {\n\t\t// \t\t\t\t\t\t\t// console.log(buffer);\n\t\t// \t\t\t\t\t\t\t// console.log(typeof(buffer));\n\t\t// \t\t\t\t\t\t\tlet lines = buffer.split('\\r\\n');\n\t\t// \t\t\t\t\t\t\t// console.log(lines);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t// \t\t\t\t\t\t\t// let i = 0;\n\t\t// \t\t\t\t\t\t\t// lines.forEach(line => {\n\n\t\t// \t\t\t\t\t\t\t// \tlet date: Date;\n\t\t// \t\t\t\t\t\t\t// \tlet dateString;\n\n\t\t// \t\t\t\t\t\t\t// \tif (line.includes('From')) {\n\t\t// \t\t\t\t\t\t\t// \t\tconsole.log(line);\n\t\t// \t\t\t\t\t\t\t// \t}\n\t\t// \t\t\t\t\t\t\t// \tif (!line.includes('class=3D') && !line.includes('style=3D')) {\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Well') || line.includes('Well Name') || line.includes('Job') || line.includes('Pad')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tlet best = stringSimilarity.findBestMatch(line, jobNames.map(a => a.well)).bestMatch;\n\t\n\t\t// \t\t\t\t\t\t\t// \t\t\tif (best && best.rating > 0.5) {\n\t\t// \t\t\t\t\t\t\t// \t\t\t\tconsole.log('Well', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\t}\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Product') || line.includes('Chemical')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tlet best = stringSimilarity.findBestMatch(line, chemicalNames.map(a => a.description)).bestMatch;\n\t\n\t\t// \t\t\t\t\t\t\t// \t\t\tif (best && best.rating > 0.5) {\n\t\t// \t\t\t\t\t\t\t// \t\t\t\tconsole.log('Chemical', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\t}\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Quantity') || line.includes('Qty') || line.includes('Amount')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log('Qty', line);\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Date')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log('Date', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log(moment(Date.parse(line)));\n\t\t// \t\t\t\t\t\t\t// \t\t\tdate = moment(Date.parse(line)).toDate();\n\t\t// \t\t\t\t\t\t\t// \t\t\tdateString = line;\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Time')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log('Time', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log(moment(Date.parse(line)));\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log(moment(date.setTime(Date.parse(line))));\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t}\n\t\t// \t\t\t\t\t\t\t// });\n\t\t// \t\t\t\t\t\t}\n\t\t// \t\t\t\t\t});\n\t\t// \t\t\t\t});\n\t\t\t\t\t\n\t\t// \t\t\t\tmsg.once('attributes', function(attrs) {\n\t\t// \t\t\t\t\tconsole.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));\n\t\t// \t\t\t\t});\n\n\t\t// \t\t\t\tmsg.once('end', function() {\n\t\t// \t\t\t\t\tconsole.log(prefix + 'Finished');\n\t\t// \t\t\t\t});\n\t\t// \t\t\t});\n\t\t\t\t\t\n\t\t// \t\t\tf.once('error', function(error) {\n\t\t// \t\t\t\tconsole.log('Fetch error: ' + error);\n\t\t// \t\t\t});\n\n\t\t// \t\t\tf.once('end', function() {\n\t\t// \t\t\t\tconsole.log('Done fetching all messages!');\n\t\t// \t\t\t\tthat._imap.end();\n\t\t// \t\t\t});\n\t\t// \t\t});\n\t\t// \t});\n\t\t// });\n\n\t\t// this._imap.connect();\n\n\t\tthis._aws = new aws.S3({\n\t\t\taccessKeyId: serverConfig.AWSACCESSKEYID,\n\t\t\tsecretAccessKey: serverConfig.AWSSECRETACCESSKEY,\n\t\t\tregion: serverConfig.AWSREGION\n\t\t});\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\t\t\t\t\tfor (let i = this._sendQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tlet ws = this._mainServer.getWS(this._sendQueue[i].id_ws);\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.data), (error) => {\n\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\tthis._mainServer.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'setWSAppVersion' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {\n\t\t\t\t\t\t\t\t\tif (getBinarySize(JSON.stringify(sendItem.methodData)) < 200000 && getBinarySize(JSON.stringify(sendItem.data)) < 200000) {\n\t\t\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\t\t\ttitle: 'Client Response',\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.data.messageId + ', Method: ' + sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tpayload: JSON.stringify([sendItem.methodData, sendItem.data], null, 2),\n\t\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\t\t\tmessageId: sendItem.data.messageId\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tMethodResponses.create({\n\t\t\t\t\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\t\t\t\t\tmessage_id: sendItem.data.messageId,\n\t\t\t\t\t\t\t\t\t\t\tresponse: sendItem.data,\n\t\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tdate: sendItem.date\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\t\t\ttitle: 'Client Response',\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.data.messageId + ', Method: ' + sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tpayload: 'Too Big',\n\t\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\t\t\tmessageId: sendItem.data.messageId\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._sendQueue.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 25);\n\t}\n\n\tpublic getMainServer() {\n\t\treturn this._mainServer;\n\t}\n\n\t// Add methods to private methods object\n\tpublic methods(method: MethodModel) {\n\t\tthis._methods = Object.assign(this._methods, method);\n\t}\n\n\tpublic callMethodCron(method: string, ...methodData: any[]) {\n\t\tlet that = this;\n\n\t\tif (!that._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ((methodData.length > 1 || methodData[0]) && !that._methods[method].skipValidation) {\n\t\t\tif (!that._methods[method].check) {\n\t\t\t\tconsole.error('No Check Function For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!that._methods[method].check._schema) {\n\t\t\t\tconsole.error('No Check Schema For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(that._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthat._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error('Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tthat._methods[method].function.call(Object.assign({}, that, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData);\n\t}\n\n\tpublic callMethodQueue(update: QueueMethodModel) {\n\t\t// console.log('Call Method Queue', update);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet updateCopy = deepCopy(update);\n\t\t\n\t\t\tlet that = this;\n\n\t\t\tif (!that._methods[update.method]) {\n\t\t\t\tconsole.log('No Method: ' + update.method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Method: ' + update.method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\n\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\n\t\t\t\treturn resolve('No Method: ' + update.method);\n\t\t\t}\n\n\t\t\tif ((update.method_data.length > 1 || update.method_data[0]) && !that._methods[update.method].skipValidation) {\n\t\t\t\tif (!that._methods[update.method].check) {\n\t\t\t\t\tconsole.error('No Check Function For Method ' + update.method);\n\n\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + update.method);\n\t\t\t\t\t\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t};\n\t\t\n\t\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\t\t\n\t\t\t\t\treturn resolve('No Check Function For Method ' + update.method);\n\t\t\t\t}\n\t\t\t\telse if (!that._methods[update.method].check._schema) {\n\t\t\t\t\tconsole.error('No Check Schema For Method ' + update.method);\n\n\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + update.method);\n\t\t\t\t\t\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t};\n\t\t\n\t\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\t\t\n\t\t\t\t\treturn resolve('No Check Schema For Method ' + update.method);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet valObj = {};\n\t\t\t\t\tlet valKeys = Object.keys(that._methods[update.method].check._schema);\n\n\t\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 0; i < update.method_data.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = update.method_data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthat._methods[update.method].check.validate(valObj);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\tif (errors) {\n\t\t\t\t\t\t\tconsole.error('Error in Method Check (' + update.method + ')', errors);\n\n\t\t\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + update.method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\t\t\t\t\n\t\t\t\t\t\t\treturn resolve('Error in Method Check (' + update.method + ')');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet timeout = setTimeout(() => {\n\t\t\t\tconsole.error('Timeout on method', update);\n\t\t\t\tthis.callMethodInternal.call(this, 'insertErrorLog', 'Timeout on method: ', [update]);\n\t\t\t\tresolve('Timeout');\n\t\t\t}, 5000);\n\n\t\t\t// console.log('Run Method', update.method);\n\t\t\t\n\t\t\tthat._methods[update.method].function.call(Object.assign({}, that, MethodManager.prototype, {id_user: update.id_user, user: update.user, id_ws: update.id_ws}), ...update.method_data).then(async (res) => {\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\thasError: false,\n\t\t\t\t\tdata: res\n\t\t\t\t};\n\n\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\tclearTimeout(timeout);\n\n\t\t\t\tlet latency = await LogMethodLatencies.findById(update.id_methodLatency);\n\n\t\t\t\tif (latency) {\n\t\t\t\t\tLogMethodLatencies.updateOne({_id: update.id_methodLatency}, {$set: {date_end: new Date(), latency_ms: moment().diff(moment(latency.date_start), 'milliseconds', true)}}).exec();\n\t\t\t\t}\n\n\t\t\t\tresolve(serverRes);\n\t\t\t}, err => {\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: err\n\t\t\t\t};\n\n\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\tclearTimeout(timeout);\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\n\t\t\t\tresolve(serverRes);\n\t\t\t});\n\t\t});\n\t}\n\n\n\n\t// Call/run method (Emit on Socket)\n\tpublic callMethod(id_methodLatency: string, ws: WebSocket, messageDate: Date, messageId: number, method: string, ...methodData: any[]) {\n\t\tlet that = this;\n\n\t\tif (!that._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\t\t\t\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: 'Internal Error'\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ((methodData.length > 1 || methodData[0]) && !that._methods[method].skipValidation) {\n\t\t\tif (!that._methods[method].check) {\n\t\t\t\tconsole.error('No Check Function For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!that._methods[method].check._schema) {\n\t\t\t\tconsole.error('No Check Schema For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(that._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthat._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error('Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tthat._methods[method].function.call(Object.assign({}, that, MethodManager.prototype, {id_user: ws['id_user'], user: ws['user'], id_ws: ws['id_socket']}), ...methodData).then(async (res) => {\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: false,\n\t\t\t\tdata: res\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tlet latency = await LogMethodLatencies.findById(id_methodLatency);\n\n\t\t\tif (latency) {\n\t\t\t\tLogMethodLatencies.updateOne({_id: id_methodLatency}, {$set: {date_end: new Date(), latency_ms: moment().diff(moment(latency.date_start), 'milliseconds', true)}}).exec();\n\t\t\t}\n\t\t}, err => {\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: err\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t});\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic callMethodInternal(method, ...methodData: any[]): Promise<any> {\n\t\tlet that = this;\n\n\t\tif (!that._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\t\t\treturn;\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof(methodData[0]) !== 'function')) && !that._methods[method].skipValidation) {\n\t\t\tif (!that._methods[method].check) {\n\t\t\t\tconsole.error('No Check Function For Method ' + method);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!that._methods[method].check._schema) {\n\t\t\t\tconsole.error('No Check Schema For Method ' + method);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet promise = that._methods[method].function.call(Object.assign({}, that, MethodManager.prototype), ...methodData);\n\n\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\tpromise.then(res => methodData[methodData.length - 1](null, res), err => methodData[methodData.length - 1](err, null));\n\t\t}\n\n\t\treturn promise;\n\t}\n\n\tprivate sendWS(ws: WebSocket, messageDate: Date, method: string, methodData: any[], data: ServerResponseModel) {\n\t\tthis._sendQueue.splice(0, 0, {\n\t\t\tid_ws: ws['id_socket'],\n\t\t\tmethod: method,\n\t\t\tmethodData: methodData,\n\t\t\tdata: data,\n\t\t\tdate: messageDate\n\t\t});\n\t}\n\n\tpublic sendEmail(sendTo: string, subject: string, text?: string, html?: string, attachments?: any[], send_from?: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif ((this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200') && !sendTo.match(new RegExp(/\\@resolveio\\.com/))) {\n\t\t\t\tsendTo = 'dev@resolveio.com';\n\t\t\t}\n\n\t\t\t// if (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200' || sendTo.endsWith('@resolveio.com')) {\n\t\t\t\tthis._mailer.sendMail({\n\t\t\t\t\treplyTo: undefined,\n\t\t\t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t\t\tto: sendTo,\n\t\t\t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t\t\ttext: text,\n\t\t\t\t\thtml: html,\n\t\t\t\t\tattachments: attachments\n\t\t\t\t}, (err, info) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\tEmailHistories.create({\n\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t\t\t\t\tuser: this['user'],\n\t\t\t\t\t\t\temail: sendTo,\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\tverified: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tEmailHistories.create({\n\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t\t\t\t\tuser: this['user'],\n\t\t\t\t\t\t\temail: sendTo,\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\tverified: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t// }\n\t\t\t// else {\n\t\t\t// \tlet oldVerfication = await EmailVerifies.findOne({email: sendTo});\n\n\t\t\t// \tif (oldVerfication) {\n\t\t\t// \t\tthis._mailer.sendMail({\n\t\t\t// \t\t\treplyTo: undefined,\n\t\t\t// \t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t// \t\t\tto: sendTo,\n\t\t\t// \t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t// \t\t\ttext: text,\n\t\t\t// \t\t\thtml: html,\n\t\t\t// \t\t\tattachments: attachments\n\t\t\t// \t\t}, (err, info) => {\n\t\t\t// \t\t\tif (err) {\n\t\t\t// \t\t\t\tconsole.log(err);\n\n\t\t\t// \t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\tsuccess: false,\n\t\t\t// \t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t});\n\t\t\t// \t\t\t}\n\t\t\t// \t\t\telse {\n\t\t\t// \t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\tsuccess: true,\n\t\t\t// \t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t});\n\t\t\t// \t\t\t}\n\t\t\t\t\t\t\n\t\t\t// \t\t\tresolve();\n\t\t\t// \t\t});\n\t\t\t// \t}\n\t\t\t// \telse {\n\t\t\t// \t\tlet verifier = new Verifier(this.serverConfig['WHOISXMLAPI']);\n\t\t\t// \t\tverifier.verify(sendTo, {hardRefresh: true}, (errVerify, resVerify) => {\n\t\t\t// \t\t\tif (errVerify) {\n\t\t\t// \t\t\t\tconsole.log(errVerify);\n\n\t\t\t// \t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\tsuccess: false,\n\t\t\t// \t\t\t\t\tverified: false\n\t\t\t// \t\t\t\t});\n\n\t\t\t// \t\t\t\tresolve();\n\t\t\t// \t\t\t}\n\t\t\t// \t\t\telse {\n\t\t\t// \t\t\t\tEmailVerifies.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo\n\t\t\t// \t\t\t\t});\n\n\t\t\t// \t\t\t\tthis._mailer.sendMail({\n\t\t\t// \t\t\t\t\treplyTo: undefined,\n\t\t\t// \t\t\t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t// \t\t\t\t\tto: sendTo,\n\t\t\t// \t\t\t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t// \t\t\t\t\ttext: text,\n\t\t\t// \t\t\t\t\thtml: html,\n\t\t\t// \t\t\t\t\tattachments: attachments\n\t\t\t// \t\t\t\t}, (err, info) => {\n\t\t\t// \t\t\t\t\tif (err) {\n\t\t\t// \t\t\t\t\t\tconsole.log(err);\n\n\t\t\t// \t\t\t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\t\t\tsuccess: false,\n\t\t\t// \t\t\t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t\t\t});\n\t\t\t// \t\t\t\t\t}\n\t\t\t// \t\t\t\t\telse {\n\t\t\t// \t\t\t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\t\t\tsuccess: true,\n\t\t\t// \t\t\t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t\t\t});\n\t\t\t// \t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t// \t\t\t\t\tresolve();\n\t\t\t// \t\t\t\t});\n\t\t\t// \t\t\t}\n\t\t\t// \t\t});\n\t\t\t// \t}\n\t\t\t// }\n\t\t});\n\t}\n\n\tpublic getAWS() {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic readImage(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}"]}
1
+ {"version":3,"sources":["../../src/managers/method.manager.ts"],"names":[],"mappings":"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","file":"method.manager.js","sourcesContent":["import { ServerResponseModel } from '../models/server-response.model';\nimport { loadCollectionMethods } from '../methods/collections';\nimport { MethodModel } from '../models/method.model';\nimport { loadLogMethods } from '../methods/logs';\nimport { loadCounterMethods } from '../methods/counters';\nimport { loadPDFMethods } from '../methods/pdf';\nimport { loadAWSMethods } from '../methods/aws';\nimport { loadCloudConvertMethods } from '../methods/cloudconvert';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport * as nodemailer from 'nodemailer';\nimport * as imap from 'imap';\nimport * as aws from 'aws-sdk';\nimport { loadAccountMethods } from '../methods/accounts';\nimport { loadServerInit } from '../fixtures/init';\nimport { loadServerCronJobs } from '../fixtures/cron-jobs';\nimport { loadCronJobMethods } from '../methods/cron-jobs';\nimport { loadFlagMethods } from '../methods/flags';\nimport { QueueMethodModel } from '../models/queue-method.model';\nimport { MethodResponses } from '../collections/method-response.collection';\nimport { Types } from 'mongoose';\nimport { deepCopy, getBinarySize } from '../util/common';\nimport { Logs } from '../collections/log.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { LogMethodLatencies } from '../collections/log-method-latency.collection';\nimport * as moment from 'moment';\nimport { loadReportBuilderMethods } from '../methods/report-builder';\nimport { loadSupportMethods } from '../methods/support';\nimport { loadMonitorMethods } from '../methods/monitor';\nimport { EmailHistories } from '../collections/email-history.collection';\nimport { EmailVerifies } from '../collections/email-verified.collection';\n\nconst Verifier = require('email-verifier');\n\nexport class MethodManager {\n\n\tprivate _mainServer: ResolveIOMainServer;\n\tpublic _methods: MethodModel = {};\n\tprivate _mailer: nodemailer.Transporter;\n\tprivate _imap: imap;\n\tprivate _aws: aws.S3;\n\tprivate serverConfig;\n\tprivate clientDir;\n\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\n\tconstructor(mainServer, serverConfig, clientDir) {\n\t\tthis._mainServer = mainServer;\n\t\tthis.serverConfig = serverConfig;\n\t\tthis.clientDir = clientDir;\n\n\t\t// Fixtures\n\t\tloadServerInit();\n\t\tloadServerCronJobs();\n\n\t\t// Methods\n\t\tloadAccountMethods(this);\n\t\tloadAWSMethods(this);\n\t\tloadCloudConvertMethods(this);\n\t\tloadCollectionMethods(this);\n\t\tloadCounterMethods(this);\n\t\tloadLogMethods(this);\n\t\tloadPDFMethods(this);\n\t\tloadCronJobMethods(this);\n\t\tloadFlagMethods(this);\n\t\tloadReportBuilderMethods(this);\n\t\tloadSupportMethods(this);\n\t\tloadMonitorMethods(this);\n\n\t\tif (mainServer.sesMail) {\n\t\t\tthis._mailer = nodemailer.createTransport({\n\t\t\t\tSES: new aws.SES({\n\t\t\t\t\tapiVersion: '2010-12-01',\n\t\t\t\t\taccessKeyId: serverConfig.AWSACCESSKEYID,\n\t\t\t\t\tsecretAccessKey: serverConfig.AWSSECRETACCESSKEY,\n\t\t\t\t\tregion: serverConfig.AWSSES_REGION\n\t\t\t\t})\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis._mailer = nodemailer.createTransport({\n\t\t\t\thost: this.serverConfig['MAIL_HOST'], // 'smtp.office365.com', // Office 365 server\n\t\t\t\tport: this.serverConfig['MAIL_PORT'], //587, // secure SMTP\n\t\t\t\tsecure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely\n\t\t\t\tauth: {\n\t\t\t\t\tuser: this.serverConfig['MAIL_USERNAME'],\n\t\t\t\t\tpass: this.serverConfig['MAIL_PASSWORD']\n\t\t\t\t},\n\t\t\t\ttls: {\n\t\t\t\t\tciphers: 'SSLv3'\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// this._imap = new imap({\n\t\t// \tuser: this.serverConfig['ORDERS_EMAIL'],\n\t\t// \tpassword: this.serverConfig['ORDERS_PASSWORD'],\n\t\t// \thost: this.serverConfig['ORDERS_HOST'],\n\t\t// \tport: this.serverConfig['ORDERS_PORT'],\n\t\t// \ttls: this.serverConfig['ORDERS_TLS']\n\t\t// });\n\n\t\t// let that = this;\n\n\t\t// let chemicalNames = await Chemicals.find({}).select('description').exec();\n\t\t// let jobNames = await Jobs.find({status: 'Active'}).select('well').exec();\n\n\t\t// console.log(jobNames.map(a => a.well));\n\n\t\t// this._imap.once('ready', () => {\n\t\t// \tthis._imap.openBox('INBOX', true, function(err, box) {\n\t\t// \t\tif (err) {\n\t\t// \t\t\tthrow err;\n\t\t// \t\t}\n\n\t\t// \t\tthat._imap.search([ 'NEW' ], function(err, results) {\n\n\t\t// \t\t\tconsole.log(err, results);\n\n\t\t// \t\t\tif (err || !results.length) {\n\t\t// \t\t\t\treturn that._imap.end();\n\t\t// \t\t\t}\n\n\t\t// \t\t\tlet f = that._imap.fetch(results[0], { bodies: ['HEADER.FIELDS (FROM)', 'TEXT'] });\n\t\t// \t\t\tf.on('message', function(msg, seqno) {\n\t\t// \t\t\t\t// console.log('Message #%d', seqno);\n\t\t// \t\t\t\tlet prefix = '(#' + seqno + ') ';\n\t\t// \t\t\t\tmsg.on('body', function(stream, info) {\n\t\t// \t\t\t\t\tlet buffer = '', count = 0;\n\t\t// \t\t\t\t\tstream.on('data', function(chunk) {\n\t\t// \t\t\t\t\t\tcount += chunk.length;\n\t\t// \t\t\t\t\t\tbuffer += chunk.toString('utf8');\n\t\t// \t\t\t\t\t});\n\t\t// \t\t\t\t\tstream.once('end', function() {\n\t\t// \t\t\t\t\t\tif (info.which === 'TEXT') {\n\t\t// \t\t\t\t\t\t\t// console.log(buffer);\n\t\t// \t\t\t\t\t\t\t// console.log(typeof(buffer));\n\t\t// \t\t\t\t\t\t\tlet lines = buffer.split('\\r\\n');\n\t\t// \t\t\t\t\t\t\t// console.log(lines);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t// \t\t\t\t\t\t\t// let i = 0;\n\t\t// \t\t\t\t\t\t\t// lines.forEach(line => {\n\n\t\t// \t\t\t\t\t\t\t// \tlet date: Date;\n\t\t// \t\t\t\t\t\t\t// \tlet dateString;\n\n\t\t// \t\t\t\t\t\t\t// \tif (line.includes('From')) {\n\t\t// \t\t\t\t\t\t\t// \t\tconsole.log(line);\n\t\t// \t\t\t\t\t\t\t// \t}\n\t\t// \t\t\t\t\t\t\t// \tif (!line.includes('class=3D') && !line.includes('style=3D')) {\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Well') || line.includes('Well Name') || line.includes('Job') || line.includes('Pad')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tlet best = stringSimilarity.findBestMatch(line, jobNames.map(a => a.well)).bestMatch;\n\t\n\t\t// \t\t\t\t\t\t\t// \t\t\tif (best && best.rating > 0.5) {\n\t\t// \t\t\t\t\t\t\t// \t\t\t\tconsole.log('Well', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\t}\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Product') || line.includes('Chemical')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tlet best = stringSimilarity.findBestMatch(line, chemicalNames.map(a => a.description)).bestMatch;\n\t\n\t\t// \t\t\t\t\t\t\t// \t\t\tif (best && best.rating > 0.5) {\n\t\t// \t\t\t\t\t\t\t// \t\t\t\tconsole.log('Chemical', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\t}\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Quantity') || line.includes('Qty') || line.includes('Amount')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log('Qty', line);\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Date')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log('Date', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log(moment(Date.parse(line)));\n\t\t// \t\t\t\t\t\t\t// \t\t\tdate = moment(Date.parse(line)).toDate();\n\t\t// \t\t\t\t\t\t\t// \t\t\tdateString = line;\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t\tif (line.includes('Time')) {\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log('Time', line);\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log(moment(Date.parse(line)));\n\t\t// \t\t\t\t\t\t\t// \t\t\tconsole.log(moment(date.setTime(Date.parse(line))));\n\t\t// \t\t\t\t\t\t\t// \t\t}\n\t\t// \t\t\t\t\t\t\t// \t}\n\t\t// \t\t\t\t\t\t\t// });\n\t\t// \t\t\t\t\t\t}\n\t\t// \t\t\t\t\t});\n\t\t// \t\t\t\t});\n\t\t\t\t\t\n\t\t// \t\t\t\tmsg.once('attributes', function(attrs) {\n\t\t// \t\t\t\t\tconsole.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));\n\t\t// \t\t\t\t});\n\n\t\t// \t\t\t\tmsg.once('end', function() {\n\t\t// \t\t\t\t\tconsole.log(prefix + 'Finished');\n\t\t// \t\t\t\t});\n\t\t// \t\t\t});\n\t\t\t\t\t\n\t\t// \t\t\tf.once('error', function(error) {\n\t\t// \t\t\t\tconsole.log('Fetch error: ' + error);\n\t\t// \t\t\t});\n\n\t\t// \t\t\tf.once('end', function() {\n\t\t// \t\t\t\tconsole.log('Done fetching all messages!');\n\t\t// \t\t\t\tthat._imap.end();\n\t\t// \t\t\t});\n\t\t// \t\t});\n\t\t// \t});\n\t\t// });\n\n\t\t// this._imap.connect();\n\n\t\tthis._aws = new aws.S3({\n\t\t\taccessKeyId: serverConfig.AWSACCESSKEYID,\n\t\t\tsecretAccessKey: serverConfig.AWSSECRETACCESSKEY,\n\t\t\tregion: serverConfig.AWSREGION\n\t\t});\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\t\t\t\t\tfor (let i = this._sendQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tlet ws = this._mainServer.getWS(this._sendQueue[i].id_ws);\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.data), (error) => {\n\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\tthis._mainServer.unsubscribeWS(ws);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (sendItem.method !== 'reportBuilderGetResults' && sendItem.method !== 'reportBuilderGetDistinctValue' && sendItem.method !== 'reportBuilderBuildTree' && sendItem.method !== 'generatePDF' && sendItem.method !== 'getWOOfflineData' && sendItem.method !== 'countQuery' && sendItem.method !== 'countWithQuery' && sendItem.method !== 'countCollectionWithQuery' && sendItem.method !== 'find' && sendItem.method !== 'findOne' && sendItem.method !== 'findWithOptions' && sendItem.method !== 'setWSAppVersion' && sendItem.method !== 'uploadFileAndSave' && sendItem.method !== 'getDrivers') {\n\t\t\t\t\t\t\t\t\tif (getBinarySize(JSON.stringify(sendItem.methodData)) < 200000 && getBinarySize(JSON.stringify(sendItem.data)) < 200000) {\n\t\t\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\t\t\ttitle: 'Client Response',\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.data.messageId + ', Method: ' + sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tpayload: JSON.stringify([sendItem.methodData, sendItem.data], null, 2),\n\t\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\t\t\tmessageId: sendItem.data.messageId\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tMethodResponses.create({\n\t\t\t\t\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\t\t\t\t\t\tmessage_id: sendItem.data.messageId,\n\t\t\t\t\t\t\t\t\t\t\tresponse: sendItem.data,\n\t\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tdate: sendItem.date\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\t\t\t\t\ttype: 'client-response',\n\t\t\t\t\t\t\t\t\t\t\ttitle: 'Client Response',\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'User: ' + ws['user'] + ', MessageId: ' + sendItem.data.messageId + ', Method: ' + sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tpayload: 'Too Big',\n\t\t\t\t\t\t\t\t\t\t\tmethod: sendItem.method,\n\t\t\t\t\t\t\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\t\t\t\t\t\t\tmessageId: sendItem.data.messageId\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._sendQueue.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 25);\n\t}\n\n\tpublic getMainServer() {\n\t\treturn this._mainServer;\n\t}\n\n\t// Add methods to private methods object\n\tpublic methods(method: MethodModel) {\n\t\tthis._methods = Object.assign(this._methods, method);\n\t}\n\n\tpublic callMethodCron(method: string, ...methodData: any[]) {\n\t\tlet that = this;\n\n\t\tif (!that._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif ((methodData.length > 1 || methodData[0]) && !that._methods[method].skipValidation) {\n\t\t\tif (!that._methods[method].check) {\n\t\t\t\tconsole.error('No Check Function For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!that._methods[method].check._schema) {\n\t\t\t\tconsole.error('No Check Schema For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(that._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthat._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error('Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tthat._methods[method].function.call(Object.assign({}, that, MethodManager.prototype, {id_user: '', user: '', id_ws: ''}), ...methodData);\n\t}\n\n\tpublic callMethodQueue(update: QueueMethodModel) {\n\t\t// console.log('Call Method Queue', update);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet updateCopy = deepCopy(update);\n\t\t\n\t\t\tlet that = this;\n\n\t\t\tif (!that._methods[update.method]) {\n\t\t\t\tconsole.log('No Method: ' + update.method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Method: ' + update.method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\n\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\n\t\t\t\treturn resolve('No Method: ' + update.method);\n\t\t\t}\n\n\t\t\tif ((update.method_data.length > 1 || update.method_data[0]) && !that._methods[update.method].skipValidation) {\n\t\t\t\tif (!that._methods[update.method].check) {\n\t\t\t\t\tconsole.error('No Check Function For Method ' + update.method);\n\n\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + update.method);\n\t\t\t\t\t\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t};\n\t\t\n\t\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\t\t\n\t\t\t\t\treturn resolve('No Check Function For Method ' + update.method);\n\t\t\t\t}\n\t\t\t\telse if (!that._methods[update.method].check._schema) {\n\t\t\t\t\tconsole.error('No Check Schema For Method ' + update.method);\n\n\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + update.method);\n\t\t\t\t\t\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t};\n\t\t\n\t\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\t\t\n\t\t\t\t\treturn resolve('No Check Schema For Method ' + update.method);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet valObj = {};\n\t\t\t\t\tlet valKeys = Object.keys(that._methods[update.method].check._schema);\n\n\t\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 0; i < update.method_data.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = update.method_data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthat._methods[update.method].check.validate(valObj);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\tif (errors) {\n\t\t\t\t\t\t\tconsole.error('Error in Method Check (' + update.method + ')', errors);\n\n\t\t\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + update.method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\t\t\t\t\n\t\t\t\t\t\t\treturn resolve('Error in Method Check (' + update.method + ')');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet timeout = setTimeout(() => {\n\t\t\t\tconsole.error('Timeout on method', update);\n\t\t\t\tthis.callMethodInternal.call(this, 'insertErrorLog', 'Timeout on method: ', [update]);\n\t\t\t\tresolve('Timeout');\n\t\t\t}, 5000);\n\n\t\t\t// console.log('Run Method', update.method);\n\t\t\t\n\t\t\tthat._methods[update.method].function.call(Object.assign({}, that, MethodManager.prototype, {id_user: update.id_user, user: update.user, id_ws: update.id_ws}), ...update.method_data).then(async (res) => {\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\thasError: false,\n\t\t\t\t\tdata: res\n\t\t\t\t};\n\n\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\tclearTimeout(timeout);\n\n\t\t\t\tlet latency = await LogMethodLatencies.findById(update.id_methodLatency);\n\n\t\t\t\tif (latency) {\n\t\t\t\t\tLogMethodLatencies.updateOne({_id: update.id_methodLatency}, {$set: {date_end: new Date(), latency_ms: moment().diff(moment(latency.date_start), 'milliseconds', true)}}).exec();\n\t\t\t\t}\n\n\t\t\t\tresolve(serverRes);\n\t\t\t}, err => {\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: update.messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: err\n\t\t\t\t};\n\n\t\t\t\tthis._mainServer.getQueueManager().addMethodResponse(updateCopy, serverRes);\n\n\t\t\t\tclearTimeout(timeout);\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: update.id_methodLatency});\n\n\t\t\t\tresolve(serverRes);\n\t\t\t});\n\t\t});\n\t}\n\n\n\n\t// Call/run method (Emit on Socket)\n\tpublic callMethod(id_methodLatency: string, ws: WebSocket, messageDate: Date, messageId: number, method: string, ...methodData: any[]) {\n\t\tlet that = this;\n\n\t\tif (!that._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\n\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Method: ' + method);\n\t\t\t\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: 'Internal Error'\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ((methodData.length > 1 || methodData[0]) && !that._methods[method].skipValidation) {\n\t\t\tif (!that._methods[method].check) {\n\t\t\t\tconsole.error('No Check Function For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!that._methods[method].check._schema) {\n\t\t\t\tconsole.error('No Check Schema For Method ' + method);\n\n\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'No Check Function For Method ' + method);\n\t\t\t\t\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: true,\n\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t};\n\n\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\n\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet valObj = {};\n\t\t\t\tlet valKeys = Object.keys(that._methods[method].check._schema);\n\n\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < methodData.length; i++) {\n\t\t\t\t\tvalObj[rootKeys[i]] = methodData[i];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tthat._methods[method].check.validate(valObj);\n\t\t\t\t}\n\t\t\t\tcatch (errors) {\n\t\t\t\t\tif (errors) {\n\t\t\t\t\t\tconsole.error('Error in Method Check (' + method + ')', errors);\n\n\t\t\t\t\t\tthat.sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + that.serverConfig['CLIENT_NAME'], 'Match Error On Method ' + method + '\\n\\nData Being Checked\\n' + JSON.stringify(valObj, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\tdata: 'Internal Error'\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\t\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t\t\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tthat._methods[method].function.call(Object.assign({}, that, MethodManager.prototype, {id_user: ws['id_user'], user: ws['user'], id_ws: ws['id_socket']}), ...methodData).then(async (res) => {\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: false,\n\t\t\t\tdata: res\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tlet latency = await LogMethodLatencies.findById(id_methodLatency);\n\n\t\t\tif (latency) {\n\t\t\t\tLogMethodLatencies.updateOne({_id: id_methodLatency}, {$set: {date_end: new Date(), latency_ms: moment().diff(moment(latency.date_start), 'milliseconds', true)}}).exec();\n\t\t\t}\n\t\t}, err => {\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: err\n\t\t\t};\n\n\t\t\tthis.sendWS(ws, messageDate, method, methodData, serverRes);\n\n\t\t\tLogMethodLatencies.deleteOne({_id: id_methodLatency});\n\t\t});\n\t}\n\n\t// Call/run method internal (No Emit on Socket)\n\tpublic callMethodInternal(method, ...methodData: any[]): Promise<any> {\n\t\tlet that = this;\n\n\t\tif (!that._methods[method]) {\n\t\t\tconsole.log('No Method: ' + method);\n\t\t\treturn;\n\t\t}\n\n\t\tif ((methodData.length > 1 || (methodData[0] && typeof(methodData[0]) !== 'function')) && !that._methods[method].skipValidation) {\n\t\t\tif (!that._methods[method].check) {\n\t\t\t\tconsole.error('No Check Function For Method ' + method);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!that._methods[method].check._schema) {\n\t\t\t\tconsole.error('No Check Schema For Method ' + method);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet promise = that._methods[method].function.call(Object.assign({}, that, MethodManager.prototype), ...methodData);\n\n\t\tif (methodData[methodData.length - 1] && typeof(methodData[methodData.length - 1]) === 'function') {\n\t\t\tpromise.then(res => methodData[methodData.length - 1](null, res), err => methodData[methodData.length - 1](err, null));\n\t\t}\n\n\t\treturn promise;\n\t}\n\n\tprivate sendWS(ws: WebSocket, messageDate: Date, method: string, methodData: any[], data: ServerResponseModel) {\n\t\tthis._sendQueue.splice(0, 0, {\n\t\t\tid_ws: ws['id_socket'],\n\t\t\tmethod: method,\n\t\t\tmethodData: methodData,\n\t\t\tdata: data,\n\t\t\tdate: messageDate\n\t\t});\n\t}\n\n\tpublic sendEmail(sendTo: string, subject: string, text?: string, html?: string, attachments?: any[], send_from?: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif ((this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/www\\.dev\\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200') && !sendTo.match(new RegExp(/\\@resolveio\\.com/))) {\n\t\t\t\tsendTo = 'dev@resolveio.com';\n\t\t\t}\n\n\t\t\t// if (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/www\\.dev\\./)) || this.serverConfig['ROOT_URL'] === 'http://localhost:4200' || sendTo.endsWith('@resolveio.com')) {\n\t\t\t\tthis._mailer.sendMail({\n\t\t\t\t\treplyTo: undefined,\n\t\t\t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t\t\tto: sendTo,\n\t\t\t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) || this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/www\\.dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t\t\ttext: text,\n\t\t\t\t\thtml: html,\n\t\t\t\t\tattachments: attachments\n\t\t\t\t}, (err, info) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\tEmailHistories.create({\n\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t\t\t\t\tuser: this['user'],\n\t\t\t\t\t\t\temail: sendTo,\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\tverified: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tEmailHistories.create({\n\t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\tdate: new Date(),\n\t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t\t\t\t\tuser: this['user'],\n\t\t\t\t\t\t\temail: sendTo,\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\tverified: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t// }\n\t\t\t// else {\n\t\t\t// \tlet oldVerfication = await EmailVerifies.findOne({email: sendTo});\n\n\t\t\t// \tif (oldVerfication) {\n\t\t\t// \t\tthis._mailer.sendMail({\n\t\t\t// \t\t\treplyTo: undefined,\n\t\t\t// \t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t// \t\t\tto: sendTo,\n\t\t\t// \t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t// \t\t\ttext: text,\n\t\t\t// \t\t\thtml: html,\n\t\t\t// \t\t\tattachments: attachments\n\t\t\t// \t\t}, (err, info) => {\n\t\t\t// \t\t\tif (err) {\n\t\t\t// \t\t\t\tconsole.log(err);\n\n\t\t\t// \t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\tsuccess: false,\n\t\t\t// \t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t});\n\t\t\t// \t\t\t}\n\t\t\t// \t\t\telse {\n\t\t\t// \t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\tsuccess: true,\n\t\t\t// \t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t});\n\t\t\t// \t\t\t}\n\t\t\t\t\t\t\n\t\t\t// \t\t\tresolve();\n\t\t\t// \t\t});\n\t\t\t// \t}\n\t\t\t// \telse {\n\t\t\t// \t\tlet verifier = new Verifier(this.serverConfig['WHOISXMLAPI']);\n\t\t\t// \t\tverifier.verify(sendTo, {hardRefresh: true}, (errVerify, resVerify) => {\n\t\t\t// \t\t\tif (errVerify) {\n\t\t\t// \t\t\t\tconsole.log(errVerify);\n\n\t\t\t// \t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\tsuccess: false,\n\t\t\t// \t\t\t\t\tverified: false\n\t\t\t// \t\t\t\t});\n\n\t\t\t// \t\t\t\tresolve();\n\t\t\t// \t\t\t}\n\t\t\t// \t\t\telse {\n\t\t\t// \t\t\t\tEmailVerifies.create({\n\t\t\t// \t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\temail: sendTo\n\t\t\t// \t\t\t\t});\n\n\t\t\t// \t\t\t\tthis._mailer.sendMail({\n\t\t\t// \t\t\t\t\treplyTo: undefined,\n\t\t\t// \t\t\t\t\tfrom: send_from ? send_from : this.serverConfig.MAIL_FROM,\n\t\t\t// \t\t\t\t\tto: sendTo,\n\t\t\t// \t\t\t\t\tsubject: (this.serverConfig['ROOT_URL'].match(new RegExp(/https\\:\\/\\/dev\\./)) ? '(DEV SERVER) - ' : '') + subject,\n\t\t\t// \t\t\t\t\ttext: text,\n\t\t\t// \t\t\t\t\thtml: html,\n\t\t\t// \t\t\t\t\tattachments: attachments\n\t\t\t// \t\t\t\t}, (err, info) => {\n\t\t\t// \t\t\t\t\tif (err) {\n\t\t\t// \t\t\t\t\t\tconsole.log(err);\n\n\t\t\t// \t\t\t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\t\t\tsuccess: false,\n\t\t\t// \t\t\t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t\t\t});\n\t\t\t// \t\t\t\t\t}\n\t\t\t// \t\t\t\t\telse {\n\t\t\t// \t\t\t\t\t\tEmailHistories.create({\n\t\t\t// \t\t\t\t\t\t\t_id: Types.ObjectId().toHexString(),\n\t\t\t// \t\t\t\t\t\t\t__v: 0,\n\t\t\t// \t\t\t\t\t\t\tdate: new Date(),\n\t\t\t// \t\t\t\t\t\t\tid_user: this['id_user'],\n\t\t\t// \t\t\t\t\t\t\tuser: this['user'],\n\t\t\t// \t\t\t\t\t\t\temail: sendTo,\n\t\t\t// \t\t\t\t\t\t\tsuccess: true,\n\t\t\t// \t\t\t\t\t\t\tverified: true\n\t\t\t// \t\t\t\t\t\t});\n\t\t\t// \t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t// \t\t\t\t\tresolve();\n\t\t\t// \t\t\t\t});\n\t\t\t// \t\t\t}\n\t\t\t// \t\t});\n\t\t\t// \t}\n\t\t\t// }\n\t\t});\n\t}\n\n\tpublic getAWS() {\n\t\treturn this._aws;\n\t}\n\n\tpublic readFile(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'utf-8', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic readImage(fileName) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/' + fileName)))) {\n\t\t\t\tfs.readFile(path.join(__dirname, ('../private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/' + fileName)))) {\n\t\t\t\t\tfs.readFile(path.join(this.clientDir, ('./private/' + fileName)), 'base64', (err, res) => { \n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}"]}
@@ -348,9 +348,9 @@ function loadReportBuilderMethods(methodManager) {
348
348
  if (!query.some(function (a) { return a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath_2.replace(/\./g, '_')); })) {
349
349
  sizes.push(fieldPath_2.replace(/\./g, '_'));
350
350
  query.push({ $addFields: (_c = {}, _c['size_' + fieldPath_2.replace(/\./g, '_')] = { $size: { $ifNull: ['$' + fieldPath_2, []] } }, _c) });
351
- if (field.leafValueType !== 'Count') {
352
- query.push({ '$unwind': { path: '$' + fieldPath_2, preserveNullAndEmptyArrays: true } });
353
- }
351
+ }
352
+ if (field.leafValueType !== 'Count' && !query.some(function (a) { return a.$unwind && a.$unwind.path === '$' + fieldPath_2; })) {
353
+ query.push({ '$unwind': { path: '$' + fieldPath_2, preserveNullAndEmptyArrays: true } });
354
354
  }
355
355
  }
356
356
  }
@@ -414,7 +414,7 @@ function loadReportBuilderMethods(methodManager) {
414
414
  };
415
415
  }
416
416
  else {
417
- if (sizes.filter(function (a) { return field.fieldPath.replace(/\.\$\./g, '_').includes(a); }).length) {
417
+ if (reportType !== 'Dated' && sizes.filter(function (a) { return field.fieldPath.replace(/\.\$\./g, '_').includes(a); }).length) {
418
418
  sizes.filter(function (a) { return field.fieldPath.replace(/\.\$\./g, '_').includes(a); }).forEach(function (size) {
419
419
  divFields.$addFields['count_' + field.fieldPath.replace(/\.\$/g, '')] = '$size_' + size;
420
420
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/methods/report-builder.ts"],"names":[],"mappings":"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","file":"report-builder.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nimport { PaginationOptions, PaginationOptionsSchema } from '../models/pagination.model';\nimport { ResolveIOServer } from '../index';\nimport { getReportLookupSchemas, buildTree, mongoCommand } from '../util/schema-report-builder';\n\nexport function loadReportBuilderMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\treportBuilderBuildTree: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection_root: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection_root: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet lookupSchemaData = getReportLookupSchemas(collection_root).sort((a, b) => a.collection_name.localeCompare(b.collection_name));\n\t\t\t\t\tlet lookupSchemaTree = lookupSchemaData.filter(a => a.is_root === true)[0].tree;\n\n\t\t\t\t\tlet treeItems = buildTree(collection_root, lookupSchemaTree);\n\n\t\t\t\t\tObject.keys(lookupSchemaTree).filter(a => a.endsWith('(Lookup)')).forEach(lookup => {\n\t\t\t\t\t\tlet fieldPath = lookup.split('.');\n\t\t\t\t\t\tlet field = null;\n\t\t\t\t\t\tfieldPath.forEach(path => {\n\t\t\t\t\t\t\tif (!field) {\n\t\t\t\t\t\t\t\tfield = treeItems.filter(a => a.fieldName === path)[0];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tfield = field.children.filter(a => a.fieldName === path)[0];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfield.children = buildTree(lookupSchemaTree[lookup].lookup_collection, lookupSchemaData.filter(a => a.collection_name === lookupSchemaTree[lookup].lookup_collection)[0].tree, field);\n\t\t\t\t\t});\n\n\t\t\t\t\t// console.log('----------- Tree Items -----------', treeItems);\n\n\t\t\t\t\tresolve({isLeaf: false, children: treeItems});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treportBuilderGetDistinctValue: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\ttreeLeaf: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(treeLeaf) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tif (treeLeaf.fieldType === 'String') {\n\t\t\t\t\t\tif (treeLeaf.fieldPath.includes('(Lookup)')) {\n\t\t\t\t\t\t\tresolve(await mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/^.+\\(.+\\) \\(Lookup\\)\\.\\$\\./g, '').replace(/\\.\\$/g, '')));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(await mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/\\.\\$/g, '')));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve([]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treportBuilderGetResults: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\treportType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\trootCollectionName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\ttype: PaginationOptionsSchema\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrays: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrays.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrayFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrayFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tselectedFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'selectedFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tcustomFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'customFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tgroupsRow: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'groupsRow.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsTotal: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsTotal.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsLink: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsLink.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdate_field: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdate_interval: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdisplayType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(reportType: string, rootCollectionName: string, rootOptions: PaginationOptions, filters: any[] = [], filterArrays: any[] = [], filterArrayFields: any[] = [], selectedFields: any[] = [], customFields: any[] = [], groupsRow: any[] = [], fieldsTotal: any[] = [], fieldsLink: any[] = [], date_field = '', date_interval = '', displayType = '') {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\n\t\t\t\t\tlet modelCollection = ResolveIOServer.getMainDB().model(rootCollectionName);\n\n\t\t\t\t\t// Query\n\t\t\t\t\tlet query = [];\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t// Non-Lookup Match Filters\n\t\t\t\t\tlet initialQueryMatchCondition = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\t// selectedFields.filter(a => a.collection_name === rootCollectionName).forEach(field => {\n\t\t\t\t\t// \tinitialQueryMatchCondition['$and'].push({\n\t\t\t\t\t// \t\t$and: [\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$exists: 1}},\n\t\t\t\t\t// \t\t\t// {[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: ''}},\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: null}},\n\t\t\t\t\t// \t\t]\n\t\t\t\t\t// \t});\n\t\t\t\t\t// });\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tinitialQueryMatchCondition['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add filter to query\n\t\t\t\t\t// if (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length || selectedFields.filter(a => !a.fieldPath.includes('(Lookup')).length) {\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$match: initialQueryMatchCondition\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add count\n\t\t\t\t\tquery.push({ $addFields: { count: { $sum: 1} } });\n\n\t\t\t\t\tlet sizes = [];\n\n\t\t\t\t\tfilterArrayFields.filter(a => a.fieldPath).forEach(filterField => {\n\t\t\t\t\t\tlet fieldData = filterField.fieldPath.split('.$');\n\n\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === filterField.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\tfrom: filterField.lookup_collection,\n\t\t\t\t\t\t\t\t\t\tlocalField: filterField.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\tforeignField: filterField.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\tas: filterField.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\tsizes.push(filterField.lookup_as.replace(/\\.\\$\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + filterField.lookup_as.replace(/\\.\\$\\./g, '_')]: {$size: {$ifNull: ['$' + filterField.lookup_as.replace(/\\.\\$/g, ''), []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + filterField.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Groups - Lookups / Sizes / Unwinds\n\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\tif (row.field.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = row.field.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === row.treeItem.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: row.treeItem.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: row.treeItem.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: row.treeItem.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: row.treeItem.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_')]: {$size: {$ifNull: ['$' + row.treeItem.lookup_as.replace(/\\.\\$/g, ''), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + row.treeItem.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Selected Fields - Lookups / Sizes / Unwinds\n\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\tif (field.fieldPath.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = field.fieldPath.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === field.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: field.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: field.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: field.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: field.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(field.lookup_as.replace(/\\.\\$\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + field.lookup_as.replace(/\\.\\$\\./g, '_')]: {$size: {$ifNull: ['$' + field.lookup_as.replace(/\\.\\$/g, ''), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + field.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (!fieldData[i].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tif (field.leafValueType !== 'Count') {\n\t\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Divide all number fields by sizes\n\t\t\t\t\tlet divFields = {$addFields: {}};\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'sum').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\t\tif (!field.fieldPath.includes('.$')) {\n\t\t\t\t\t\t\t\tsizes.forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$count';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' && a.leafValueType === 'Sum').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields[field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (sizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).length) {\n\t\t\t\t\t\t\t\tsizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).forEach(size => {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$size_' + size;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$count';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (Object.keys(divFields.$addFields).length > 0) {\n\t\t\t\t\t\tquery.push(divFields);\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldsLink.filter(a => a.field_first && a.field_second).forEach(link => {\n\t\t\t\t\t\tquery.push({$addFields: {[link.id]: {$cmp: ['$' + link.field_first.replace(/\\.\\$/g, ''), '$' + link.field_second.replace(/\\.\\$/g, '')]}}});\n\t\t\t\t\t\tquery.push({$match: {[link.id]: 0}});\n\t\t\t\t\t});\n\n\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\tcust.operations.filter(a => a.operation && !a.fields.some(b => (b.field === null || b.field === '') && b.value === null)).forEach((operation, opIndex) => {\n\t\t\t\t\t\t\tlet custFieldGroup = {};\n\n\t\t\t\t\t\t\tif (operation.operation === 'divide') {\n\t\t\t\t\t\t\t\tlet condCheck = [];\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, 0]});\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, null]});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet tmpOperationFields = [];\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + cust.selFieldId);\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + field.field.replace(/\\.\\$/g, ''));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push(field.value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t$cond: { if: { $or: condCheck }, then: 0, else: {['$' + operation.operation]: tmpOperationFields} }\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t['$' + operation.operation]: []\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $eq: ['$' + cust.selFieldId, null] }, then: 0, else: '$' + cust.selFieldId}});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet condOr = [];\n\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: '$' + field.field.replace(/\\.\\$/g, '')}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: field.value}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tquery.push({$addFields: custFieldGroup});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\tquery.push({$addFields:{[total.id + '_' + field.selFieldId]: '$' + field.selFieldId}});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Filters - Lookups / Arrays\n\t\t\t\t\tlet queryMatchConditionLookup = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tfilterArrays.forEach(filter => {\n\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (queryMatchConditionLookup.$and.length) {\n\t\t\t\t\t\tquery.push({$match: queryMatchConditionLookup});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Group\n\t\t\t\t\tlet queryGroup = {\n\t\t\t\t\t\t_id: {}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (groupsRow.length || !displayType || displayType === 'grouped') {\n\t\t\t\t\t\tif (!groupsRow.length) {\n\t\t\t\t\t\t\tqueryGroup._id = '$_id';\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\tqueryGroup._id[row.id] = '$' + row.field.replace(/\\.\\$/g, '');\n\n\t\t\t\t\t\t\tif (date_field && date_interval) {\n\t\t\t\t\t\t\t\tif (date_interval === 'Daily') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Weekly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['week'] = {'$isoWeek' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$isoWeekYear' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Monthly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Quarterly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Yearly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$avg': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$sum': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$sum': '$count_' + field.fieldPath.replace(/\\.\\$/g, '') };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$push': '$count_' + field.fieldPath.replace(/\\.\\$/g, '') };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$min': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$max': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'First' || (!groupsRow.length && (!field.fieldPath.includes('.$') || field.fieldPath.includes('(Lookup)')))) {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$first': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$last': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$addToSet': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$push': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$avg': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$sum': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$sum': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$push': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$min': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$max': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$first': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$last': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$addToSet': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$push': '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Totals\n\t\t\t\t\t\tif (fieldsTotal.length) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.id] = {$sum: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.selFieldId] = {$sum: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$group: queryGroup});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t//Projection\n\t\t\t\t\t\tlet queryProjection = {\n\t\t\t\t\t\t\t_id: 1\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$avg: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$min: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$max: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$slice: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), 0]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$slice: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), -1]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$avg: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$min: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$max: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'First') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$slice: ['$' + cust.selFieldId, 0]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Last') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$slice: ['$' + cust.selFieldId, -1]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = '$' + cust.selFieldId;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//Totals\n\t\t\t\t\t\tif (fieldsTotal.length && (reportType === 'List' || reportType === 'Dated')) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.id] = {['$' + total.type]: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$project: queryProjection});\n\t\t\t\t\t}\n\n\t\t\t\t\t// SORT\n\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$sort: rootOptions.sort\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (reportType === 'Group' && groupsRow.length > 1) {\n\t\t\t\t\t\tfor (let i = groupsRow.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\tlet projQuery = {_id: 1};\n\n\t\t\t\t\t\t\tprojQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t_id: {[groupsRow[i].id]: '$_id.' + groupsRow[i].id}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (i === groupsRow.length - 1) {\n\t\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.id] = '$' + field.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.selFieldId] = '$' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][groupsRow[i + 1].id] = '$' + groupsRow[i + 1].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tprojQuery[totField.id + '_' + selField.id] = 1;\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + selField.id] = '$' + totField.id + '_' + selField.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + field.selFieldId] = '$' + totField.id + '_' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$project: projQuery});\n\n\t\t\t\t\t\t\tlet grQuery = {\n\t\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j++) {\n\t\t\t\t\t\t\t\tgrQuery._id[groupsRow[j].id] = '$_id.' + groupsRow[j].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgrQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t$push: '$' + groupsRow[i].id\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + selField.id] = {['$' + totField.type]: '$' + totField.id + '_' + selField.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + field.selFieldId] = {['$' + totField.type]: '$' + totField.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$group: grQuery});\n\n\t\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\t\tlet sortKeys = Object.keys(rootOptions.sort);\n\t\t\t\t\t\t\t\tlet sort = {};\n\n\t\t\t\t\t\t\t\tlet groupString = '';\n\t\t\t\t\t\t\t\tgroupsRow.forEach((row, groupIndex) => {\n\t\t\t\t\t\t\t\t\tif (groupIndex > 0) {\n\t\t\t\t\t\t\t\t\t\tgroupString += 'gr_' + (groupIndex + 1) + '.';\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (sortKeys.includes('_id.gr_' + (groupIndex + 1))) {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = rootOptions.sort['_id.gr_' + (groupIndex + 1)];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tsortKeys.filter(a => !a.startsWith('_id.gr_')).forEach(key => {\n\t\t\t\t\t\t\t\t\tsort[groupString + key] = rootOptions.sort[key];\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$sort: sort});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// console.log('_____________ query __________'); console.log(query); console.log(JSON.stringify(query, null, 2));\n\n\t\t\t\t\tlet res = null;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tres = await modelCollection.aggregate(query).allowDiskUse(true);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpTotals = {};\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = Math.round(res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tcustomFields.forEach(custField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = Math.round(res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\tcount: res ? res.length : 0,\n\t\t\t\t\t\tresults: res ? (rootOptions.limit ? res.splice(0, rootOptions.limit) : res) : [],\n\t\t\t\t\t\ttotals: tmpTotals\n\t\t\t\t\t}];\n\n\t\t\t\t\tresolve(tmpRes);\n\t\t\t\t});\n\t\t\t},\n\t\t}\n\t});\n}"]}
1
+ {"version":3,"sources":["../../src/methods/report-builder.ts"],"names":[],"mappings":"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","file":"report-builder.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nimport { PaginationOptions, PaginationOptionsSchema } from '../models/pagination.model';\nimport { ResolveIOServer } from '../index';\nimport { getReportLookupSchemas, buildTree, mongoCommand } from '../util/schema-report-builder';\n\nexport function loadReportBuilderMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\treportBuilderBuildTree: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection_root: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection_root: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet lookupSchemaData = getReportLookupSchemas(collection_root).sort((a, b) => a.collection_name.localeCompare(b.collection_name));\n\t\t\t\t\tlet lookupSchemaTree = lookupSchemaData.filter(a => a.is_root === true)[0].tree;\n\n\t\t\t\t\tlet treeItems = buildTree(collection_root, lookupSchemaTree);\n\n\t\t\t\t\tObject.keys(lookupSchemaTree).filter(a => a.endsWith('(Lookup)')).forEach(lookup => {\n\t\t\t\t\t\tlet fieldPath = lookup.split('.');\n\t\t\t\t\t\tlet field = null;\n\t\t\t\t\t\tfieldPath.forEach(path => {\n\t\t\t\t\t\t\tif (!field) {\n\t\t\t\t\t\t\t\tfield = treeItems.filter(a => a.fieldName === path)[0];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tfield = field.children.filter(a => a.fieldName === path)[0];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfield.children = buildTree(lookupSchemaTree[lookup].lookup_collection, lookupSchemaData.filter(a => a.collection_name === lookupSchemaTree[lookup].lookup_collection)[0].tree, field);\n\t\t\t\t\t});\n\n\t\t\t\t\t// console.log('----------- Tree Items -----------', treeItems);\n\n\t\t\t\t\tresolve({isLeaf: false, children: treeItems});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treportBuilderGetDistinctValue: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\ttreeLeaf: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(treeLeaf) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tif (treeLeaf.fieldType === 'String') {\n\t\t\t\t\t\tif (treeLeaf.fieldPath.includes('(Lookup)')) {\n\t\t\t\t\t\t\tresolve(await mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/^.+\\(.+\\) \\(Lookup\\)\\.\\$\\./g, '').replace(/\\.\\$/g, '')));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(await mongoCommand('distinct', treeLeaf.collection_name, treeLeaf.fieldPath.replace(/\\.\\$/g, '')));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve([]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treportBuilderGetResults: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\treportType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\trootCollectionName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\ttype: PaginationOptionsSchema\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrays: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrays.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfilterArrayFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'filterArrayFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tselectedFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'selectedFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tcustomFields: {\n\t\t\t\t\ttype: Array,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\t'customFields.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tgroupsRow: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'groupsRow.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsTotal: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsTotal.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tfieldsLink: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fieldsLink.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdate_field: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdate_interval: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tdisplayType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(reportType: string, rootCollectionName: string, rootOptions: PaginationOptions, filters: any[] = [], filterArrays: any[] = [], filterArrayFields: any[] = [], selectedFields: any[] = [], customFields: any[] = [], groupsRow: any[] = [], fieldsTotal: any[] = [], fieldsLink: any[] = [], date_field = '', date_interval = '', displayType = '') {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\n\t\t\t\t\tlet modelCollection = ResolveIOServer.getMainDB().model(rootCollectionName);\n\n\t\t\t\t\t// Query\n\t\t\t\t\tlet query = [];\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t// Non-Lookup Match Filters\n\t\t\t\t\tlet initialQueryMatchCondition = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\t// selectedFields.filter(a => a.collection_name === rootCollectionName).forEach(field => {\n\t\t\t\t\t// \tinitialQueryMatchCondition['$and'].push({\n\t\t\t\t\t// \t\t$and: [\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$exists: 1}},\n\t\t\t\t\t// \t\t\t// {[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: ''}},\n\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: null}},\n\t\t\t\t\t// \t\t]\n\t\t\t\t\t// \t});\n\t\t\t\t\t// });\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tinitialQueryMatchCondition['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add filter to query\n\t\t\t\t\t// if (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length || selectedFields.filter(a => !a.fieldPath.includes('(Lookup')).length) {\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && !Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && !a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$match: initialQueryMatchCondition\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add count\n\t\t\t\t\tquery.push({ $addFields: { count: { $sum: 1} } });\n\n\t\t\t\t\tlet sizes = [];\n\n\t\t\t\t\tfilterArrayFields.filter(a => a.fieldPath).forEach(filterField => {\n\t\t\t\t\t\tlet fieldData = filterField.fieldPath.split('.$');\n\n\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === filterField.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\tfrom: filterField.lookup_collection,\n\t\t\t\t\t\t\t\t\t\tlocalField: filterField.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\tforeignField: filterField.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\tas: filterField.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\tsizes.push(filterField.lookup_as.replace(/\\.\\$\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + filterField.lookup_as.replace(/\\.\\$\\./g, '_')]: {$size: {$ifNull: ['$' + filterField.lookup_as.replace(/\\.\\$/g, ''), []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + filterField.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\n\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Groups - Lookups / Sizes / Unwinds\n\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\tif (row.field.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = row.field.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === row.treeItem.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: row.treeItem.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: row.treeItem.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: row.treeItem.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: row.treeItem.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_')]: {$size: {$ifNull: ['$' + row.treeItem.lookup_as.replace(/\\.\\$/g, ''), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + row.treeItem.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Selected Fields - Lookups / Sizes / Unwinds\n\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\tif (field.fieldPath.includes('$')) {\n\t\t\t\t\t\t\tlet fieldData = field.fieldPath.split('.$');\n\n\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\t\t\t\t\t\t\tif (fieldPath.split('.$')[fieldPath.split('.$').length - 1].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$lookup && a.$lookup.as === field.lookup_as.replace(/\\.\\$/g, ''))) {\n\t\t\t\t\t\t\t\t\t\tquery.push({$lookup: {\n\t\t\t\t\t\t\t\t\t\t\tfrom: field.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: field.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: field.lookup_foreign_key,\n\t\t\t\t\t\t\t\t\t\t\tas: field.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(field.lookup_as.replace(/\\.\\$\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + field.lookup_as.replace(/\\.\\$\\./g, '_')]: {$size: {$ifNull: ['$' + field.lookup_as.replace(/\\.\\$/g, ''), []]}}}});\n\t\t\t\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + field.lookup_as.replace(/\\.\\$/g, ''), preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (!fieldData[i].includes('(Lookup)')) {\n\t\t\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (!query.some(a => a.$addFields && Object.keys(a.$addFields).includes('size_' + fieldPath.replace(/\\./g, '_')))) {\n\t\t\t\t\t\t\t\t\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + fieldPath.replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + fieldPath, []]}}}});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (field.leafValueType !== 'Count' && !query.some(a => a.$unwind && a.$unwind.path === '$' + fieldPath)) {\n\t\t\t\t\t\t\t\t\t\tquery.push({'$unwind': {path: '$' + fieldPath, preserveNullAndEmptyArrays: true}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Divide all number fields by sizes\n\t\t\t\t\tlet divFields = {$addFields: {}};\n\n\t\t\t\t\tfieldsTotal.filter(a => a.type === 'sum').forEach(total => {\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\t\tif (!field.fieldPath.includes('.$')) {\n\t\t\t\t\t\t\t\tsizes.forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\t\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t\t\t};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$count';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' && a.leafValueType === 'Sum').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields[field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tselectedFields.filter(a => a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\tlet multFields = [];\n\t\t\t\t\t\t\n\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').includes(a))).forEach(size => {\n\t\t\t\t\t\t\tmultFields.push({$cond: { if: { $gt: ['$size_' + size, 0 ] }, then: '$size_' + size, else: 1 }});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (reportType !== 'Dated' && sizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).length) {\n\t\t\t\t\t\t\t\tsizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).forEach(size => {\n\t\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$size_' + size;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$count';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (Object.keys(divFields.$addFields).length > 0) {\n\t\t\t\t\t\tquery.push(divFields);\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldsLink.filter(a => a.field_first && a.field_second).forEach(link => {\n\t\t\t\t\t\tquery.push({$addFields: {[link.id]: {$cmp: ['$' + link.field_first.replace(/\\.\\$/g, ''), '$' + link.field_second.replace(/\\.\\$/g, '')]}}});\n\t\t\t\t\t\tquery.push({$match: {[link.id]: 0}});\n\t\t\t\t\t});\n\n\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\tcust.operations.filter(a => a.operation && !a.fields.some(b => (b.field === null || b.field === '') && b.value === null)).forEach((operation, opIndex) => {\n\t\t\t\t\t\t\tlet custFieldGroup = {};\n\n\t\t\t\t\t\t\tif (operation.operation === 'divide') {\n\t\t\t\t\t\t\t\tlet condCheck = [];\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, 0]});\n\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, null]});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet tmpOperationFields = [];\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + cust.selFieldId);\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + field.field.replace(/\\.\\$/g, ''));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push(field.value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t$cond: { if: { $or: condCheck }, then: 0, else: {['$' + operation.operation]: tmpOperationFields} }\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t['$' + operation.operation]: []\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $eq: ['$' + cust.selFieldId, null] }, then: 0, else: '$' + cust.selFieldId}});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet condOr = [];\n\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcondOr.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\t\t\toperation.fields.filter(a => a.field || a.value !== null).forEach(field => {\n\t\t\t\t\t\t\t\t\tif (field.field) {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: '$' + field.field.replace(/\\.\\$/g, '')}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId]['$' + operation.operation].push({$cond: { if: { $or: condOr }, then: 0, else: field.value}});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tquery.push({$addFields: custFieldGroup});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\tquery.push({$addFields:{[total.id + '_' + field.selFieldId]: '$' + field.selFieldId}});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Filters - Lookups / Arrays\n\t\t\t\t\tlet queryMatchConditionLookup = {\n\t\t\t\t\t\t$and: []\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).length) {\n\t\t\t\t\t\tfilters.filter(a => (!a['$or'] && Object.keys(a).some(b => b.includes('(Lookup)'))) || (a['$or'] && a['$or'].some(b => Object.keys(b).some(c => c.includes('(Lookup)'))))).forEach(filter => {\n\t\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tfilterArrays.forEach(filter => {\n\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (queryMatchConditionLookup.$and.length) {\n\t\t\t\t\t\tquery.push({$match: queryMatchConditionLookup});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Group\n\t\t\t\t\tlet queryGroup = {\n\t\t\t\t\t\t_id: {}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (groupsRow.length || !displayType || displayType === 'grouped') {\n\t\t\t\t\t\tif (!groupsRow.length) {\n\t\t\t\t\t\t\tqueryGroup._id = '$_id';\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\tqueryGroup._id[row.id] = '$' + row.field.replace(/\\.\\$/g, '');\n\n\t\t\t\t\t\t\tif (date_field && date_interval) {\n\t\t\t\t\t\t\t\tif (date_interval === 'Daily') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['day'] = {'$dayOfMonth' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Weekly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['week'] = {'$isoWeek' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$isoWeekYear' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Monthly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Quarterly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (date_interval === 'Yearly') {\n\t\t\t\t\t\t\t\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$avg': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$sum': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$sum': '$count_' + field.fieldPath.replace(/\\.\\$/g, '') };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = { '$push': '$count_' + field.fieldPath.replace(/\\.\\$/g, '') };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$min': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$max': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'First' || (!groupsRow.length && (!field.fieldPath.includes('.$') || field.fieldPath.includes('(Lookup)')))) {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$first': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$last': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$addToSet': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$push': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$avg': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$sum': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$sum': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$push': '$count_' + cust.selFieldId };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$min': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$max': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$first': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$last': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$addToSet': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$push': '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Totals\n\t\t\t\t\t\tif (fieldsTotal.length) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.id] = {$sum: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryGroup[total.id + '_' + field.selFieldId] = {$sum: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$group: queryGroup});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t//Projection\n\t\t\t\t\t\tlet queryProjection = {\n\t\t\t\t\t\t\t_id: 1\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$avg: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$min: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$max: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'First') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$slice: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), 0]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$slice: ['$' + field.fieldPath.replace(/\\.\\$/g, ''), -1]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\t\t\t\t\t\tif (cust === 'Average') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$avg: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Sum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Count') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Minimum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$min: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Maximum') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$max: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'First') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$slice: ['$' + cust.selFieldId, 0]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (cust === 'Last') {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$slice: ['$' + cust.selFieldId, -1]};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = '$' + cust.selFieldId;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//Totals\n\t\t\t\t\t\tif (fieldsTotal.length && (reportType === 'List' || reportType === 'Dated')) {\n\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' || a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.id] = {['$' + total.type]: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tqueryProjection[total.id + '_' + field.selFieldId] = {['$' + total.type]: '$' + total.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tquery.push({$project: queryProjection});\n\t\t\t\t\t}\n\n\t\t\t\t\t// SORT\n\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t$sort: rootOptions.sort\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (reportType === 'Group' && groupsRow.length > 1) {\n\t\t\t\t\t\tfor (let i = groupsRow.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\tlet projQuery = {_id: 1};\n\n\t\t\t\t\t\t\tprojQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t_id: {[groupsRow[i].id]: '$_id.' + groupsRow[i].id}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (i === groupsRow.length - 1) {\n\t\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.id] = '$' + field.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][field.selFieldId] = '$' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][groupsRow[i + 1].id] = '$' + groupsRow[i + 1].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tprojQuery[totField.id + '_' + selField.id] = 1;\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + selField.id] = '$' + totField.id + '_' + selField.id;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id][totField.id + '_' + field.selFieldId] = '$' + totField.id + '_' + field.selFieldId;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$project: projQuery});\n\n\t\t\t\t\t\t\tlet grQuery = {\n\t\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (let j = 0; j < i; j++) {\n\t\t\t\t\t\t\t\tgrQuery._id[groupsRow[j].id] = '$_id.' + groupsRow[j].id;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgrQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t$push: '$' + groupsRow[i].id\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + selField.id] = {['$' + totField.type]: '$' + totField.id + '_' + selField.id};\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tgrQuery[totField.id + '_' + field.selFieldId] = {['$' + totField.type]: '$' + totField.id + '_' + field.selFieldId};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tquery.push({$group: grQuery});\n\n\t\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\t\tlet sortKeys = Object.keys(rootOptions.sort);\n\t\t\t\t\t\t\t\tlet sort = {};\n\n\t\t\t\t\t\t\t\tlet groupString = '';\n\t\t\t\t\t\t\t\tgroupsRow.forEach((row, groupIndex) => {\n\t\t\t\t\t\t\t\t\tif (groupIndex > 0) {\n\t\t\t\t\t\t\t\t\t\tgroupString += 'gr_' + (groupIndex + 1) + '.';\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (sortKeys.includes('_id.gr_' + (groupIndex + 1))) {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = rootOptions.sort['_id.gr_' + (groupIndex + 1)];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tsortKeys.filter(a => !a.startsWith('_id.gr_')).forEach(key => {\n\t\t\t\t\t\t\t\t\tsort[groupString + key] = rootOptions.sort[key];\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$sort: sort});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// console.log('_____________ query __________'); console.log(query); console.log(JSON.stringify(query, null, 2));\n\n\t\t\t\t\tlet res = null;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tres = await modelCollection.aggregate(query).allowDiskUse(true);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpTotals = {};\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\t\t\t\t\t\tselectedFields.filter(b => b.fieldType === 'Number' || b.leafValueType === 'Count').forEach(selField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + selField.id] = Math.round(res.map(a => a[totField.id + '_' + selField.id] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tcustomFields.forEach(custField => {\n\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\t\t\t\t\t\t\t\ttmpTotals[totField.id + '_' + custField.selFieldId] = Math.round(res.map(a => a[totField.id + '_' + custField.selFieldId] || 0).reduce((a, b) => a + b, 0) / res.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\tcount: res ? res.length : 0,\n\t\t\t\t\t\tresults: res ? (rootOptions.limit ? res.splice(0, rootOptions.limit) : res) : [],\n\t\t\t\t\t\ttotals: tmpTotals\n\t\t\t\t\t}];\n\n\t\t\t\t\tresolve(tmpRes);\n\t\t\t\t});\n\t\t\t},\n\t\t}\n\t});\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "8.0.30",
3
+ "version": "8.0.32",
4
4
  "description": "",
5
5
  "main": "index.ts",
6
6
  "scripts": {