@resolveio/server-lib 9.2.23 → 9.2.25
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.
- package/methods/aws.js +14 -32
- package/methods/aws.js.map +1 -1
- package/methods/report-builder.js +8 -4
- package/methods/report-builder.js.map +1 -1
- package/package.json +1 -1
package/methods/aws.js
CHANGED
|
@@ -70,42 +70,24 @@ function loadAWSMethods(methodManager) {
|
|
|
70
70
|
var _this = this;
|
|
71
71
|
var that = this;
|
|
72
72
|
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
73
|
-
var key_1,
|
|
74
|
-
var _this = this;
|
|
73
|
+
var key_1, newParams;
|
|
75
74
|
return __generator(this, function (_a) {
|
|
76
75
|
if (fileName) {
|
|
77
76
|
key_1 = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
};
|
|
88
|
-
file_collection_1.Files.create(file_1).then(function (resFile) {
|
|
89
|
-
_this.callMethodInternal('compressBase64AndUploadPDF', file_1._id, fileName, key_1, fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), function (errCompress, resCompress) {
|
|
77
|
+
newParams = { Bucket: that.serverConfig.AWSBUCKET, Key: key_1, Body: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), ACL: 'private', ContentType: fileData.split(',')[0].split(':')[1].split(';')[0], ContentDisposition: 'inline' };
|
|
78
|
+
that.getAWS().upload(newParams, function (err, res) {
|
|
79
|
+
if (err) {
|
|
80
|
+
reject(err);
|
|
81
|
+
}
|
|
82
|
+
else if (res) {
|
|
83
|
+
file_collection_1.Files.create({
|
|
84
|
+
_id: mongo_manager_1.objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key_1, order: fileOrder, type: fileType
|
|
85
|
+
}).then(function (resFile) {
|
|
90
86
|
resolve(resFile);
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
newParams = { Bucket: that.serverConfig.AWSBUCKET, Key: key_1, Body: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), ACL: 'private', ContentType: fileData.split(',')[0].split(':')[1].split(';')[0], ContentDisposition: 'inline' };
|
|
96
|
-
that.getAWS().upload(newParams, function (err, res) {
|
|
97
|
-
if (err) {
|
|
98
|
-
reject(err);
|
|
99
|
-
}
|
|
100
|
-
else if (res) {
|
|
101
|
-
file_collection_1.Files.create({
|
|
102
|
-
_id: mongo_manager_1.objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key_1, order: fileOrder, type: fileType
|
|
103
|
-
}).then(function (resFile) {
|
|
104
|
-
resolve(resFile);
|
|
105
|
-
}, function (errFile) { return reject(errFile); });
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
87
|
+
}, function (errFile) { return reject(errFile); });
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
// }
|
|
109
91
|
}
|
|
110
92
|
return [2 /*return*/];
|
|
111
93
|
});
|
package/methods/aws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/aws.ts"],"names":[],"mappings":"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","file":"aws.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { Files } from '../collections/file.collection';\nimport SimpleSchema from 'simpl-schema';\nimport { ResolveIOServer } from '../index';\nimport { objectIdHexString } from '../managers/mongo.manager';\nlet request = require('request').defaults({ encoding: null });\n\nlet pdfCnt = 1000000;\n\nexport function loadAWSMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tuploadFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileData: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileSize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileOrder: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcompress: {\n\t\t\t\t\ttype: Boolean\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string, compress: Boolean) {\n\t\t\t\tlet that = this;\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tif (fileName) {\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\t\tif (fileData.split(',')[0].split(':')[1].split(';')[0] === 'application/pdf' && compress) {\n\t\t\t\t\t\t\tlet file = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(), \n\t\t\t\t\t\t\t\t__v: 0, \n\t\t\t\t\t\t\t\tname: fileName, \n\t\t\t\t\t\t\t\tsize: fileSize, \n\t\t\t\t\t\t\t\tkey: key, \n\t\t\t\t\t\t\t\torder: fileOrder, \n\t\t\t\t\t\t\t\ttype: fileType\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tFiles.create(file).then(resFile => {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('compressBase64AndUploadPDF', file._id, fileName, key, fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), (errCompress, resCompress) => {\n\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}, errFile => reject(errFile));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet newParams = {Bucket: that.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), ACL: 'private', ContentType: fileData.split(',')[0].split(':')[1].split(';')[0], ContentDisposition: 'inline'};\n\n\t\t\t\t\t\t\tthat.getAWS().upload(newParams, (err, res) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (res) {\n\t\t\t\t\t\t\t\t\tFiles.create({\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t\t}).then(resFile => {\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\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});\n\t\t\t}\n\t\t},\n\t\tuploadNonPDFFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\treturn new Promise((resolve, reject) => {\t\n\t\t\t\t\tif (fileName) {\t\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\n\t\t\t\t\t\tlet newParams = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData), ACL: 'private', ContentType: 'application/gzip', ContentDisposition: 'inline'};\t\n\n\t\t\t\t\t\tthis.getAWS().upload(newParams, (err, res) => {\t\n\t\t\t\t\t\t\tif (err) {\t\n\t\t\t\t\t\t\t\treject(err);\t\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t\telse if (res) {\t\n\t\t\t\t\t\t\t\tFiles.create({\t\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t}).then(resFile => {\t\n\t\t\t\t\t\t\t\t\tresolve(resFile);\t\n\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\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\n\t\t},\n\t\tdeleteFiles: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[]) {\t\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet files = await Files.find({key: {$in: keys}});\n\t\t\n\t\t\t\t\tlet deleteCnt = files.length;\n\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\n\t\t\t\t\t\tlet delParams = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key};\n\t\t\t\n\t\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdeleteCnt--;\n\t\t\t\t\t\t\t\tif (!deleteCnt) {\n\t\t\t\t\t\t\t\t\tresolve(files.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\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdeleteFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({key: key});\n\t\t\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\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},\n\t\tdeleteFileWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: file.key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (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\n\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlsAndFilesWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tids: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'ids.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(ids: string[], expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\t\t\t\t\tlet fileArray = [];\n\n\t\t\t\t\tlet files = await Files.find({_id: {$in: ids}});\n\t\t\t\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresolve({res: res, fileArray: files.map(a => a.name)});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (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\tgetSignedUrl: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string, expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (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\tgetSignedUrls: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[], expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\n\t\t\t\t\tkeys.forEach(key => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(res);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetDataURIfromURL: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\turl: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(url: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\trequest.get(url, function (error, response, body) {\n\t\t\t\t\t\tif (!error && response.statusCode === 200) {\n\t\t\t\t\t\t\tlet data = 'data:' + response.headers['content-type'] + ';base64,' + new Buffer(body).toString('base64');\n\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(error);\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\temailFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\temail: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n additional_message: {\n type: String\n }\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, email: string, additional_message) {\n\t\t\t\tlet that = this;\n\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findById(id_file);\n\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthat.callMethodInternal.call(that, 'getSignedUrl', file.key, 259200, (errPDF, resPDF) => {\n\t\t\t\t\t\tif (resPDF) {\n\t\t\t\t\t\t\tif (file.size < 5000000) {\n\t\t\t\t\t\t\t\tlet emailMessage = 'Attached is the file requested for email.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage, '', [{\n\t\t\t\t\t\t\t\t\tfilename: file.name,\n\t\t\t\t\t\t\t\t\tpath: resPDF\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\tlet emailMessage = 'Please click the link to the requested file.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage + resPDF, '');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject('Could not get file URL');\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/methods/aws.ts"],"names":[],"mappings":"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","file":"aws.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { Files } from '../collections/file.collection';\nimport SimpleSchema from 'simpl-schema';\nimport { ResolveIOServer } from '../index';\nimport { objectIdHexString } from '../managers/mongo.manager';\nlet request = require('request').defaults({ encoding: null });\n\nlet pdfCnt = 1000000;\n\nexport function loadAWSMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tuploadFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileData: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileSize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileOrder: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcompress: {\n\t\t\t\t\ttype: Boolean\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string, compress: Boolean) {\n\t\t\t\tlet that = this;\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tif (fileName) {\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\t\t// if (fileData.split(',')[0].split(':')[1].split(';')[0] === 'application/pdf' && compress) {\n\t\t\t\t\t\t// \tlet file = {\n\t\t\t\t\t\t// \t\t_id: objectIdHexString(), \n\t\t\t\t\t\t// \t\t__v: 0, \n\t\t\t\t\t\t// \t\tname: fileName, \n\t\t\t\t\t\t// \t\tsize: fileSize, \n\t\t\t\t\t\t// \t\tkey: key, \n\t\t\t\t\t\t// \t\torder: fileOrder, \n\t\t\t\t\t\t// \t\ttype: fileType\n\t\t\t\t\t\t// \t};\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t// \tFiles.create(file).then(resFile => {\n\t\t\t\t\t\t// \t\tthis.callMethodInternal('compressBase64AndUploadPDF', file._id, fileName, key, fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), (errCompress, resCompress) => {\n\t\t\t\t\t\t// \t\t\tresolve(resFile);\n\t\t\t\t\t\t// \t\t});\n\t\t\t\t\t\t// \t}, errFile => reject(errFile));\n\t\t\t\t\t\t// }\n\t\t\t\t\t\t// else {\n\t\t\t\t\t\t\tlet newParams = {Bucket: that.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), ACL: 'private', ContentType: fileData.split(',')[0].split(':')[1].split(';')[0], ContentDisposition: 'inline'};\n\n\t\t\t\t\t\t\tthat.getAWS().upload(newParams, (err, res) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (res) {\n\t\t\t\t\t\t\t\t\tFiles.create({\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t\t}).then(resFile => {\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\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});\n\t\t\t}\n\t\t},\n\t\tuploadNonPDFFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\treturn new Promise((resolve, reject) => {\t\n\t\t\t\t\tif (fileName) {\t\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\n\t\t\t\t\t\tlet newParams = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData), ACL: 'private', ContentType: 'application/gzip', ContentDisposition: 'inline'};\t\n\n\t\t\t\t\t\tthis.getAWS().upload(newParams, (err, res) => {\t\n\t\t\t\t\t\t\tif (err) {\t\n\t\t\t\t\t\t\t\treject(err);\t\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t\telse if (res) {\t\n\t\t\t\t\t\t\t\tFiles.create({\t\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t}).then(resFile => {\t\n\t\t\t\t\t\t\t\t\tresolve(resFile);\t\n\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\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\n\t\t},\n\t\tdeleteFiles: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[]) {\t\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet files = await Files.find({key: {$in: keys}});\n\t\t\n\t\t\t\t\tlet deleteCnt = files.length;\n\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\n\t\t\t\t\t\tlet delParams = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key};\n\t\t\t\n\t\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdeleteCnt--;\n\t\t\t\t\t\t\t\tif (!deleteCnt) {\n\t\t\t\t\t\t\t\t\tresolve(files.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\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdeleteFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({key: key});\n\t\t\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\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},\n\t\tdeleteFileWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: file.key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (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\n\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlsAndFilesWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tids: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'ids.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(ids: string[], expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\t\t\t\t\tlet fileArray = [];\n\n\t\t\t\t\tlet files = await Files.find({_id: {$in: ids}});\n\t\t\t\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresolve({res: res, fileArray: files.map(a => a.name)});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (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\tgetSignedUrl: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string, expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (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\tgetSignedUrls: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[], expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\n\t\t\t\t\tkeys.forEach(key => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(res);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetDataURIfromURL: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\turl: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(url: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\trequest.get(url, function (error, response, body) {\n\t\t\t\t\t\tif (!error && response.statusCode === 200) {\n\t\t\t\t\t\t\tlet data = 'data:' + response.headers['content-type'] + ';base64,' + new Buffer(body).toString('base64');\n\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(error);\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\temailFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\temail: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n additional_message: {\n type: String\n }\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, email: string, additional_message) {\n\t\t\t\tlet that = this;\n\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findById(id_file);\n\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthat.callMethodInternal.call(that, 'getSignedUrl', file.key, 259200, (errPDF, resPDF) => {\n\t\t\t\t\t\tif (resPDF) {\n\t\t\t\t\t\t\tif (file.size < 5000000) {\n\t\t\t\t\t\t\t\tlet emailMessage = 'Attached is the file requested for email.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage, '', [{\n\t\t\t\t\t\t\t\t\tfilename: file.name,\n\t\t\t\t\t\t\t\t\tpath: resPDF\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\tlet emailMessage = 'Please click the link to the requested file.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage + resPDF, '');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject('Could not get file URL');\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}"]}
|
|
@@ -534,11 +534,15 @@ function loadReportBuilderMethods(methodManager) {
|
|
|
534
534
|
groupedSorts_1 = {};
|
|
535
535
|
Object.keys(rootOptions.sort).forEach(function (sortField) {
|
|
536
536
|
var selField = selectedFields.filter(function (a) { return a.id === sortField; })[0];
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
$sort: groupedSorts_1
|
|
537
|
+
if (selField) {
|
|
538
|
+
groupedSorts_1[selField.fieldPath.replace(/\.\$/g, '')] = rootOptions.sort[sortField];
|
|
539
|
+
}
|
|
541
540
|
});
|
|
541
|
+
if (Object.keys(groupedSorts_1).length > 0) {
|
|
542
|
+
query_1.push({
|
|
543
|
+
$sort: groupedSorts_1
|
|
544
|
+
});
|
|
545
|
+
}
|
|
542
546
|
}
|
|
543
547
|
}
|
|
544
548
|
groupsRow.forEach(function (row) {
|
|
@@ -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\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\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\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.getMongoManager().collection(rootCollectionName);\n\n\t\t\t\t\tif (!modelCollection) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Query\n\t\t\t\t\t\tlet query = [];\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t// Non-Lookup Match Filters\n\t\t\t\t\t\tlet initialQueryMatchCondition = {\n\t\t\t\t\t\t\t$and: []\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// selectedFields.filter(a => a.collection_name === rootCollectionName).forEach(field => {\n\t\t\t\t\t\t// \tinitialQueryMatchCondition['$and'].push({\n\t\t\t\t\t\t// \t\t$and: [\n\t\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$exists: 1}},\n\t\t\t\t\t\t// \t\t\t// {[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: ''}},\n\t\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: null}},\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\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\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\t\tinitialQueryMatchCondition['$and'].push(filter);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add filter to query\n\t\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\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\t\tquery.push({\n\t\t\t\t\t\t\t\t$match: initialQueryMatchCondition\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add count\n\t\t\t\t\t\tquery.push({ $addFields: { count: { $sum: 1} } });\n\n\t\t\t\t\t\tlet sizes = [];\n\n\t\t\t\t\t\tfilterArrayFields.filter(a => a.fieldPath).forEach(filterField => {\n\t\t\t\t\t\t\tlet fieldData = filterField.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 === filterField.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: filterField.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: filterField.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: filterField.lookup_foreign_key,\n\t\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\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + filterField.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\n\t\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\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\n\t\t\t\t\t\t// Groups - Lookups / Sizes / Unwinds\n\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\tif (row.field.includes('$')) {\n\t\t\t\t\t\t\t\tlet fieldData = row.field.split('.$');\n\n\t\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\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\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\t\tquery.push({$lookup: {\n\t\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\t\tlocalField: row.treeItem.lookup_local_key,\n\t\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\t\tas: row.treeItem.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\t\tsizes.push(row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + row.treeItem.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\t\n\t\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\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\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\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\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\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\n\t\t\t\t\t\t// Selected Fields - Lookups / Sizes / Unwinds\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.fieldPath.includes('$')) {\n\t\t\t\t\t\t\t\tlet fieldData = field.fieldPath.split('.$');\n\n\t\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\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\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\t\tquery.push({$lookup: {\n\t\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\t\tlocalField: field.lookup_local_key,\n\t\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\t\tas: field.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\t\tsizes.push(field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + field.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\t\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\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\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\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\t\n\t\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\t}\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\telse {\n\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\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\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\t\t\t\t\t}\n\n\t\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\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\n\t\t\t\t\t\t// Divide all number fields by sizes\n\t\t\t\t\t\tlet divFields = {$addFields: {}};\n\n\t\t\t\t\t\tfieldsTotal.filter(a => a.type === 'sum').forEach(total => {\n\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\tlet multFields = [];\n\n\t\t\t\t\t\t\t\tif (!field.fieldPath.includes('.$')) {\n\t\t\t\t\t\t\t\t\tsizes.forEach(size => {\n\t\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\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\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\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\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\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\t$divide: ['$count', {$multiply: multFields}]\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\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\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};\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 (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$count';\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\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\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\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' && a.leafValueType === 'Sum').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\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});\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tdivFields.$addFields[field.fieldPath.replace(/\\.\\$/g, '')] = {\n\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};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tselectedFields.filter(a => a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\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});\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\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 (reportType !== 'Dated' && sizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).length) {\n\t\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\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$size_' + size;\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['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$count';\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\tfieldsTotal.filter(a => a.type === 'avg').forEach(total => {\n\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\tdivFields.$addFields[total.id + '_' + 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\tif (Object.keys(divFields.$addFields).length > 0) {\n\t\t\t\t\t\t\tquery.push(divFields);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfieldsLink.filter(a => a.field_first && a.field_second).forEach(link => {\n\t\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\t\tquery.push({$match: {[link.id]: 0}});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\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\t\tlet custFieldGroup = {};\n\n\t\t\t\t\t\t\t\tif (operation.operation === 'divide') {\n\t\t\t\t\t\t\t\t\tlet condCheck = [];\n\t\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\t\tif (field.field) {\n\t\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\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t\tcondCheck.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, null]});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tlet tmpOperationFields = [];\n\n\t\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + cust.selFieldId);\n\t\t\t\t\t\t\t\t\t}\n\t\t\n\t\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\t\tif (field.field) {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push(field.value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\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\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\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t\t['$' + operation.operation]: []\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\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\t}\n\n\t\t\t\t\t\t\t\t\tlet condOr = [];\n\n\t\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\t\tif (field.field) {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\n\t\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\t\tif (field.field) {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\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\tquery.push({$addFields: custFieldGroup});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\tquery.push({$addFields:{[total.id + '_' + field.selFieldId]: '$' + field.selFieldId}});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Filters - Lookups / Arrays\n\t\t\t\t\t\tlet queryMatchConditionLookup = {\n\t\t\t\t\t\t\t$and: []\n\t\t\t\t\t\t};\n\n\t\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\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\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfilterArrays.forEach(filter => {\n\t\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (queryMatchConditionLookup.$and.length) {\n\t\t\t\t\t\t\tquery.push({$match: queryMatchConditionLookup});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Group\n\t\t\t\t\t\tlet queryGroup = {\n\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (groupsRow.length || !displayType || displayType === 'grouped') {\n\t\t\t\t\t\t\tif (!groupsRow.length) {\n\t\t\t\t\t\t\t\tqueryGroup._id = '$_id';\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 (rootOptions.sort) { \n\t\t\t\t\t\t\t\t\tlet groupedSorts = {};\n\t\t\t\t\t\t\t\t\tObject.keys(rootOptions.sort).forEach(sortField => {\n\t\t\t\t\t\t\t\t\t\tlet selField = selectedFields.filter(a => a.id === sortField)[0];\n\t\t\t\t\t\t\t\t\t\tgroupedSorts[selField.fieldPath.replace(/\\.\\$/g, '')] = rootOptions.sort[sortField];\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t\t\t\t$sort: groupedSorts\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\t\n\t\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\t\tqueryGroup._id[row.id] = '$' + row.field.replace(/\\.\\$/g, '');\n\n\t\t\t\t\t\t\t\tif (date_field && date_interval) {\n\t\t\t\t\t\t\t\t\tif (date_interval === 'Daily') {\n\t\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\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Weekly') {\n\t\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\t\tqueryGroup._id['year'] = {'$isoWeekYear' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Monthly') {\n\t\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\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Quarterly') {\n\t\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\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Yearly') {\n\t\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\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\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$avg': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$sum': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$min': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$max': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\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\t\tqueryGroup[field.id] = {'$first': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$last': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$addToSet': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\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\tqueryGroup[field.id] = {'$push': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\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(cust => {\n\t\t\t\t\t\t\t\tif (cust.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$avg': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$sum': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$sum': '$count_' + cust.selFieldId };\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\tqueryGroup[cust.selFieldId] = { '$push': '$count_' + cust.selFieldId };\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 if (cust.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$min': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$max': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'First') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$first': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$last': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$addToSet': '$' + cust.selFieldId};\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\tqueryGroup[cust.selFieldId] = {'$push': '$' + cust.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\t// Totals\n\t\t\t\t\t\t\tif (fieldsTotal.length) {\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\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\t\tqueryGroup[total.id + '_' + field.id] = {$sum: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\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({$group: queryGroup});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t//Projection\n\t\t\t\t\t\t\tlet queryProjection = {\n\t\t\t\t\t\t\t\t_id: 1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$avg: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: 1};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$min: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$max: '$' + 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\tqueryProjection[field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\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(cust => {\n\t\t\t\t\t\t\t\tif (cust === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$avg: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Count') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: 1};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$min: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$max: '$' + 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\tqueryProjection[cust.selFieldId] = '$' + cust.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\t//Totals\n\t\t\t\t\t\t\tif (fieldsTotal.length && (reportType === 'List' || reportType === 'Dated')) {\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\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\t\tqueryProjection[total.id + '_' + field.id] = {['$' + total.type]: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\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({$project: queryProjection});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// SORT\n\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t\t$sort: rootOptions.sort\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (reportType === 'Group' && groupsRow.length > 1) {\n\t\t\t\t\t\t\tfor (let i = groupsRow.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\t\tlet projQuery = {_id: 1};\n\n\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t\t_id: {[groupsRow[i].id]: '$_id.' + groupsRow[i].id}\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (i === groupsRow.length - 1) {\n\t\t\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\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\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\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\tprojQuery[groupsRow[i].id][groupsRow[i + 1].id] = '$' + groupsRow[i + 1].id;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\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\t\tprojQuery[totField.id + '_' + selField.id] = 1;\n\t\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\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\t});\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$project: projQuery});\n\n\t\t\t\t\t\t\t\tlet grQuery = {\n\t\t\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tfor (let j = 0; j < i; j++) {\n\t\t\t\t\t\t\t\t\tgrQuery._id[groupsRow[j].id] = '$_id.' + groupsRow[j].id;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tgrQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t\t$push: '$' + groupsRow[i].id\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\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\t\tgrQuery[totField.id + '_' + selField.id] = {['$' + totField.type]: '$' + totField.id + '_' + selField.id};\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\t});\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$group: grQuery});\n\n\t\t\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\t\t\tlet sortKeys = Object.keys(rootOptions.sort);\n\t\t\t\t\t\t\t\t\tlet sort = {};\n\n\t\t\t\t\t\t\t\t\tlet groupString = '';\n\t\t\t\t\t\t\t\t\tgroupsRow.forEach((row, groupIndex) => {\n\t\t\t\t\t\t\t\t\t\tif (groupIndex > 0) {\n\t\t\t\t\t\t\t\t\t\t\tgroupString += 'gr_' + (groupIndex + 1) + '.';\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\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\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = rootOptions.sort['_id.gr_' + (groupIndex + 1)];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\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\t\tsort[groupString + key] = rootOptions.sort[key];\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tquery.push({$sort: sort});\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\t// console.log('_____________ query __________'); console.log(query); console.log(JSON.stringify(query, null, 2));\n\n\t\t\t\t\t\tlet res = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tres = await modelCollection.aggregate(query, {allowDiskUse: true, readPreference: 'secondary'});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet tmpTotals = {};\n\n\t\t\t\t\t\tif (res) {\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\tif (totField.type === 'sum') {\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\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\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(custField => {\n\t\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\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\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\n\t\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\t\tcount: res ? res.length : 0,\n\t\t\t\t\t\t\tresults: res ? (rootOptions.limit ? res.splice(0, rootOptions.limit) : res) : [],\n\t\t\t\t\t\t\ttotals: tmpTotals\n\t\t\t\t\t\t}];\n\n\t\t\t\t\t\tresolve(tmpRes);\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/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\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\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\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.getMongoManager().collection(rootCollectionName);\n\n\t\t\t\t\tif (!modelCollection) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Query\n\t\t\t\t\t\tlet query = [];\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t// Non-Lookup Match Filters\n\t\t\t\t\t\tlet initialQueryMatchCondition = {\n\t\t\t\t\t\t\t$and: []\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// selectedFields.filter(a => a.collection_name === rootCollectionName).forEach(field => {\n\t\t\t\t\t\t// \tinitialQueryMatchCondition['$and'].push({\n\t\t\t\t\t\t// \t\t$and: [\n\t\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$exists: 1}},\n\t\t\t\t\t\t// \t\t\t// {[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: ''}},\n\t\t\t\t\t\t// \t\t\t{[field.fieldPath.replace(/\\.\\$/g, '')]: {$ne: null}},\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\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\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\t\tinitialQueryMatchCondition['$and'].push(filter);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add filter to query\n\t\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\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\t\tquery.push({\n\t\t\t\t\t\t\t\t$match: initialQueryMatchCondition\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add count\n\t\t\t\t\t\tquery.push({ $addFields: { count: { $sum: 1} } });\n\n\t\t\t\t\t\tlet sizes = [];\n\n\t\t\t\t\t\tfilterArrayFields.filter(a => a.fieldPath).forEach(filterField => {\n\t\t\t\t\t\t\tlet fieldData = filterField.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 === filterField.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: filterField.lookup_collection,\n\t\t\t\t\t\t\t\t\t\t\tlocalField: filterField.lookup_local_key,\n\t\t\t\t\t\t\t\t\t\t\tforeignField: filterField.lookup_foreign_key,\n\t\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\t}});\n\n\t\t\t\t\t\t\t\t\t\tsizes.push(filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + filterField.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + filterField.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\n\t\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\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\n\t\t\t\t\t\t// Groups - Lookups / Sizes / Unwinds\n\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\tif (row.field.includes('$')) {\n\t\t\t\t\t\t\t\tlet fieldData = row.field.split('.$');\n\n\t\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\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\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\t\tquery.push({$lookup: {\n\t\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\t\tlocalField: row.treeItem.lookup_local_key,\n\t\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\t\tas: row.treeItem.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\t\tsizes.push(row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + row.treeItem.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + row.treeItem.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\t\n\t\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\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\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\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\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\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\n\t\t\t\t\t\t// Selected Fields - Lookups / Sizes / Unwinds\n\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\tif (field.fieldPath.includes('$')) {\n\t\t\t\t\t\t\t\tlet fieldData = field.fieldPath.split('.$');\n\n\t\t\t\t\t\t\t\tlet fieldPath = '';\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fieldData.length - 1; i++) {\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfieldPath += fieldData[i];\n\n\t\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\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\t\tquery.push({$lookup: {\n\t\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\t\tlocalField: field.lookup_local_key,\n\t\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\t\tas: field.lookup_as.replace(/\\.\\$/g, '')\n\t\t\t\t\t\t\t\t\t\t\t}});\n\n\t\t\t\t\t\t\t\t\t\t\tsizes.push(field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_'));\n\t\t\t\t\t\t\t\t\t\t\tquery.push({$addFields: {['size_' + field.lookup_as.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_')]: {$size: {$ifNull: ['$' + field.lookup_as.replace(/\\.\\$/g, '').replace(/\\./g, '_'), []]}}}});\n\t\t\t\t\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\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\t\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\t\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\t\n\t\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\t}\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\telse {\n\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\tsizes.push(fieldPath.replace(/\\./g, '_'));\n\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\t\t\t\t\t}\n\n\t\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\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\n\t\t\t\t\t\t// Divide all number fields by sizes\n\t\t\t\t\t\tlet divFields = {$addFields: {}};\n\n\t\t\t\t\t\tfieldsTotal.filter(a => a.type === 'sum').forEach(total => {\n\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\tlet multFields = [];\n\n\t\t\t\t\t\t\t\tif (!field.fieldPath.includes('.$')) {\n\t\t\t\t\t\t\t\t\tsizes.forEach(size => {\n\t\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\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\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\t\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\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\t\tif (field.leafValueType === 'Count') {\n\t\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\t$divide: ['$count', {$multiply: multFields}]\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\tdivFields.$addFields[total.id + '_' + field.id] = {\n\t\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};\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 (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\t\tdivFields.$addFields[total.id + '_' + field.id] = '$count';\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\tdivFields.$addFields[total.id + '_' + field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\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\n\t\t\t\t\t\tselectedFields.filter(a => a.fieldType === 'Number' && a.leafValueType === 'Sum').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\n\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\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});\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tdivFields.$addFields[field.fieldPath.replace(/\\.\\$/g, '')] = {\n\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};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tselectedFields.filter(a => a.leafValueType === 'Count').forEach(field => {\n\t\t\t\t\t\t\tlet multFields = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tsizes.filter(a => !field.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) && !groupsRow.some(b => b.field.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !filterArrayFields.filter(a => a.fieldPath).some(b => b.fieldPath.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a)) && !fieldsLink.some(b => b.field_first.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a) || b.field_second.replace(/\\.\\$\\./g, '_').replace(/\\./g, '_').includes(a))).forEach(size => {\n\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});\n\n\t\t\t\t\t\t\tif (multFields.length) {\n\t\t\t\t\t\t\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = {\n\t\t\t\t\t\t\t\t\t$divide: ['$count', {$multiply: multFields}]\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 (reportType !== 'Dated' && sizes.filter(a => field.fieldPath.replace(/\\.\\$\\./g, '_').includes(a)).length) {\n\t\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\t\tdivFields.$addFields['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$size_' + size;\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['count_' + field.fieldPath.replace(/\\.\\$/g, '')] = '$count';\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\tfieldsTotal.filter(a => a.type === 'avg').forEach(total => {\n\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\tdivFields.$addFields[total.id + '_' + 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\tif (Object.keys(divFields.$addFields).length > 0) {\n\t\t\t\t\t\t\tquery.push(divFields);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfieldsLink.filter(a => a.field_first && a.field_second).forEach(link => {\n\t\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\t\tquery.push({$match: {[link.id]: 0}});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcustomFields.forEach(cust => {\n\t\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\t\tlet custFieldGroup = {};\n\n\t\t\t\t\t\t\t\tif (operation.operation === 'divide') {\n\t\t\t\t\t\t\t\t\tlet condCheck = [];\n\t\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\t\tif (field.field) {\n\t\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\t\tcondCheck.push({$eq: ['$' + field.field.replace(/\\.\\$/g, ''), null]});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t\tcondCheck.push({$eq: [field.value, null]});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, 0]});\n\t\t\t\t\t\t\t\t\t\tcondCheck.push({$eq: ['$' + cust.selFieldId, null]});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tlet tmpOperationFields = [];\n\n\t\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push('$' + cust.selFieldId);\n\t\t\t\t\t\t\t\t\t}\n\t\t\n\t\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\t\tif (field.field) {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\ttmpOperationFields.push(field.value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustFieldGroup[cust.selFieldId] = {\n\t\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\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\tcustFieldGroup[cust.selFieldId] = {\n\t\t\t\t\t\t\t\t\t\t['$' + operation.operation]: []\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tif (opIndex > 0) {\n\t\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\t}\n\n\t\t\t\t\t\t\t\t\tlet condOr = [];\n\n\t\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\t\tif (field.field) {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\n\t\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\t\tif (field.field) {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\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\tquery.push({$addFields: custFieldGroup});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\t\t\t\t\t\t\tquery.push({$addFields:{[total.id + '_' + field.selFieldId]: '$' + field.selFieldId}});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Filters - Lookups / Arrays\n\t\t\t\t\t\tlet queryMatchConditionLookup = {\n\t\t\t\t\t\t\t$and: []\n\t\t\t\t\t\t};\n\n\t\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\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\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfilterArrays.forEach(filter => {\n\t\t\t\t\t\t\tqueryMatchConditionLookup['$and'].push(filter);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (queryMatchConditionLookup.$and.length) {\n\t\t\t\t\t\t\tquery.push({$match: queryMatchConditionLookup});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Group\n\t\t\t\t\t\tlet queryGroup = {\n\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (groupsRow.length || !displayType || displayType === 'grouped') {\n\t\t\t\t\t\t\tif (!groupsRow.length) {\n\t\t\t\t\t\t\t\tqueryGroup._id = '$_id';\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 (rootOptions.sort) { \n\t\t\t\t\t\t\t\t\tlet groupedSorts = {};\n\t\t\t\t\t\t\t\t\tObject.keys(rootOptions.sort).forEach(sortField => {\n\t\t\t\t\t\t\t\t\t\tlet selField = selectedFields.filter(a => a.id === sortField)[0];\n\n\t\t\t\t\t\t\t\t\t\tif (selField) {\n\t\t\t\t\t\t\t\t\t\t\tgroupedSorts[selField.fieldPath.replace(/\\.\\$/g, '')] = rootOptions.sort[sortField];\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\tif (Object.keys(groupedSorts).length > 0) {\n\t\t\t\t\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t\t\t\t\t$sort: groupedSorts\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\t\n\t\t\t\t\t\t\tgroupsRow.forEach(row => {\n\t\t\t\t\t\t\t\tqueryGroup._id[row.id] = '$' + row.field.replace(/\\.\\$/g, '');\n\n\t\t\t\t\t\t\t\tif (date_field && date_interval) {\n\t\t\t\t\t\t\t\t\tif (date_interval === 'Daily') {\n\t\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\t\tqueryGroup._id['month'] = {'$month' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Weekly') {\n\t\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\t\tqueryGroup._id['year'] = {'$isoWeekYear' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Monthly') {\n\t\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\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Quarterly') {\n\t\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\t\tqueryGroup._id['year'] = {'$year' : {'date': '$' + date_field.replace(/\\.\\$/g, ''), 'timezone': this.serverConfig['TIMEZONE']}};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (date_interval === 'Yearly') {\n\t\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\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\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$avg': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$sum': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$min': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$max': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\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\t\tqueryGroup[field.id] = {'$first': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$last': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\t\tqueryGroup[field.id] = {'$addToSet': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\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\tqueryGroup[field.id] = {'$push': '$' + field.fieldPath.replace(/\\.\\$/g, '')};\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(cust => {\n\t\t\t\t\t\t\t\tif (cust.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$avg': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$sum': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tif (reportType === 'Dated') {\n\t\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = { '$sum': '$count_' + cust.selFieldId };\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\tqueryGroup[cust.selFieldId] = { '$push': '$count_' + cust.selFieldId };\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 if (cust.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$min': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$max': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'First') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$first': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Last') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$last': '$' + cust.selFieldId};\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust.leafValueType === 'Unique') {\n\t\t\t\t\t\t\t\t\tqueryGroup[cust.selFieldId] = {'$addToSet': '$' + cust.selFieldId};\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\tqueryGroup[cust.selFieldId] = {'$push': '$' + cust.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\t// Totals\n\t\t\t\t\t\t\tif (fieldsTotal.length) {\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\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\t\tqueryGroup[total.id + '_' + field.id] = {$sum: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\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({$group: queryGroup});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t//Projection\n\t\t\t\t\t\t\tlet queryProjection = {\n\t\t\t\t\t\t\t\t_id: 1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\t\t\t\t\t\t\tif (field.leafValueType === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$avg: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Count') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$sum: 1};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$min: '$' + field.fieldPath.replace(/\\.\\$/g, '')};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (field.leafValueType === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[field.id] = {$max: '$' + 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\tqueryProjection[field.id] = '$' + field.fieldPath.replace(/\\.\\$/g, '');\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(cust => {\n\t\t\t\t\t\t\t\tif (cust === 'Average') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$avg: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Sum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Count') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$sum: 1};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Minimum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$min: '$' + cust.selFieldId};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (cust === 'Maximum') {\n\t\t\t\t\t\t\t\t\tqueryProjection[cust.selFieldId] = {$max: '$' + 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\tqueryProjection[cust.selFieldId] = '$' + cust.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\t//Totals\n\t\t\t\t\t\t\tif (fieldsTotal.length && (reportType === 'List' || reportType === 'Dated')) {\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(total => {\n\t\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\t\tqueryProjection[total.id + '_' + field.id] = {['$' + total.type]: '$' + total.id + '_' + field.id};\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\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({$project: queryProjection});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// SORT\n\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\tquery.push({\n\t\t\t\t\t\t\t\t$sort: rootOptions.sort\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (reportType === 'Group' && groupsRow.length > 1) {\n\t\t\t\t\t\t\tfor (let i = groupsRow.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\t\tlet projQuery = {_id: 1};\n\n\t\t\t\t\t\t\t\tprojQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t\t_id: {[groupsRow[i].id]: '$_id.' + groupsRow[i].id}\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (i === groupsRow.length - 1) {\n\t\t\t\t\t\t\t\t\tselectedFields.forEach(field => {\n\t\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\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\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\tprojQuery[groupsRow[i].id][groupsRow[i + 1].id] = '$' + groupsRow[i + 1].id;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\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\t\tprojQuery[totField.id + '_' + selField.id] = 1;\n\t\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\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\t});\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$project: projQuery});\n\n\t\t\t\t\t\t\t\tlet grQuery = {\n\t\t\t\t\t\t\t\t\t_id: {}\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tfor (let j = 0; j < i; j++) {\n\t\t\t\t\t\t\t\t\tgrQuery._id[groupsRow[j].id] = '$_id.' + groupsRow[j].id;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tgrQuery[groupsRow[i].id] = {\n\t\t\t\t\t\t\t\t\t$push: '$' + groupsRow[i].id\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tfieldsTotal.forEach(totField => {\n\t\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\t\tgrQuery[totField.id + '_' + selField.id] = {['$' + totField.type]: '$' + totField.id + '_' + selField.id};\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tcustomFields.forEach(field => {\n\t\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\t});\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquery.push({$group: grQuery});\n\n\t\t\t\t\t\t\t\tif (rootOptions.sort) {\n\t\t\t\t\t\t\t\t\tlet sortKeys = Object.keys(rootOptions.sort);\n\t\t\t\t\t\t\t\t\tlet sort = {};\n\n\t\t\t\t\t\t\t\t\tlet groupString = '';\n\t\t\t\t\t\t\t\t\tgroupsRow.forEach((row, groupIndex) => {\n\t\t\t\t\t\t\t\t\t\tif (groupIndex > 0) {\n\t\t\t\t\t\t\t\t\t\t\tgroupString += 'gr_' + (groupIndex + 1) + '.';\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\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\t\tsort[groupString + '_id.gr_' + (groupIndex + 1)] = rootOptions.sort['_id.gr_' + (groupIndex + 1)];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\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\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\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\t\tsort[groupString + key] = rootOptions.sort[key];\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tquery.push({$sort: sort});\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\t// console.log('_____________ query __________'); console.log(query); console.log(JSON.stringify(query, null, 2));\n\n\t\t\t\t\t\tlet res = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tres = await modelCollection.aggregate(query, {allowDiskUse: true, readPreference: 'secondary'});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet tmpTotals = {};\n\n\t\t\t\t\t\tif (res) {\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\tif (totField.type === 'sum') {\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\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\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcustomFields.forEach(custField => {\n\t\t\t\t\t\t\t\t\tif (totField.type === 'sum') {\n\t\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\t}\n\t\t\t\t\t\t\t\t\telse if (totField.type === 'avg') {\n\t\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\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\n\t\t\t\t\t\tlet tmpRes = [{\n\t\t\t\t\t\t\tcount: res ? res.length : 0,\n\t\t\t\t\t\t\tresults: res ? (rootOptions.limit ? res.splice(0, rootOptions.limit) : res) : [],\n\t\t\t\t\t\t\ttotals: tmpTotals\n\t\t\t\t\t\t}];\n\n\t\t\t\t\t\tresolve(tmpRes);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t}\n\t});\n}"]}
|