@optimiser/common 1.0.365 → 1.0.367

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.
Files changed (69) hide show
  1. package/dist/aws/awsservices.d.ts +39 -39
  2. package/dist/aws/awsservices.js +398 -398
  3. package/dist/constants.d.ts +35 -35
  4. package/dist/constants.js +36 -36
  5. package/dist/enums/databasetype.enum.d.ts +7 -7
  6. package/dist/enums/databasetype.enum.js +11 -11
  7. package/dist/enums/log.enum.d.ts +22 -22
  8. package/dist/enums/log.enum.js +26 -26
  9. package/dist/index.d.ts +25 -25
  10. package/dist/index.js +69 -61
  11. package/dist/lib/activity.d.ts +1 -1
  12. package/dist/lib/activity.js +44 -44
  13. package/dist/lib/calculatedbsize.d.ts +15 -15
  14. package/dist/lib/calculatedbsize.js +75 -75
  15. package/dist/lib/connection.d.ts +116 -116
  16. package/dist/lib/connection.js +595 -595
  17. package/dist/lib/convertfilesize.d.ts +2 -2
  18. package/dist/lib/convertfilesize.js +15 -15
  19. package/dist/lib/countrycode.d.ts +2 -2
  20. package/dist/lib/countrycode.js +255 -255
  21. package/dist/lib/event.d.ts +26 -26
  22. package/dist/lib/event.js +252 -248
  23. package/dist/lib/helper.d.ts +94 -93
  24. package/dist/lib/helper.js +1016 -1009
  25. package/dist/lib/memoryserverclient.d.ts +40 -40
  26. package/dist/lib/memoryserverclient.js +256 -252
  27. package/dist/lib/operautilitycommon.d.ts +65 -65
  28. package/dist/lib/operautilitycommon.js +620 -620
  29. package/dist/lib/redis.d.ts +21 -21
  30. package/dist/lib/redis.js +46 -46
  31. package/dist/lib/socketidfromredis.d.ts +3 -3
  32. package/dist/lib/socketidfromredis.js +5 -5
  33. package/dist/lib/taskutils.d.ts +40 -40
  34. package/dist/lib/taskutils.js +656 -656
  35. package/dist/lib/utility.d.ts +300 -298
  36. package/dist/lib/utility.js +5626 -5621
  37. package/dist/lib/validateRequest.d.ts +3 -3
  38. package/dist/lib/validateRequest.js +13 -13
  39. package/dist/logs/auditlog.d.ts +25 -25
  40. package/dist/logs/auditlog.js +1033 -1029
  41. package/dist/logs/checklogtable.d.ts +3 -3
  42. package/dist/logs/checklogtable.js +67 -67
  43. package/dist/logs/log.table.d.ts +7 -7
  44. package/dist/logs/log.table.js +127 -127
  45. package/dist/modals/connection.modal.d.ts +32 -32
  46. package/dist/modals/connection.modal.js +2 -2
  47. package/dist/modals/globalNotification.modal.d.ts +8 -8
  48. package/dist/modals/globalNotification.modal.js +2 -2
  49. package/dist/modals/log.modal.d.ts +64 -64
  50. package/dist/modals/log.modal.js +2 -2
  51. package/dist/modals/mail.modal.d.ts +6 -6
  52. package/dist/modals/mail.modal.js +2 -2
  53. package/dist/modals/notificationData.modal.d.ts +29 -29
  54. package/dist/modals/notificationData.modal.js +2 -2
  55. package/dist/modals/redisconfig.modal.d.ts +6 -6
  56. package/dist/modals/redisconfig.modal.js +2 -2
  57. package/dist/modals/sqsconfig.modal.d.ts +8 -8
  58. package/dist/modals/sqsconfig.modal.js +2 -2
  59. package/dist/modals/utility.modal.d.ts +17 -17
  60. package/dist/modals/utility.modal.js +2 -2
  61. package/dist/utility/crypto.d.ts +4 -4
  62. package/dist/utility/crypto.js +43 -43
  63. package/dist/utility/errorHandler.d.ts +30 -30
  64. package/dist/utility/errorHandler.js +24 -24
  65. package/dist/utility/errorHandlerForServices.d.ts +22 -22
  66. package/dist/utility/errorHandlerForServices.js +19 -19
  67. package/dist/utility/mail.d.ts +21 -21
  68. package/dist/utility/mail.js +91 -87
  69. package/package.json +3 -3
@@ -1,1029 +1,1033 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || function (mod) {
26
- if (mod && mod.__esModule) return mod;
27
- var result = {};
28
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
- __setModuleDefault(result, mod);
30
- return result;
31
- };
32
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
33
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
- return new (P || (P = Promise))(function (resolve, reject) {
35
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
- step((generator = generator.apply(thisArg, _arguments || [])).next());
39
- });
40
- };
41
- var __generator = (this && this.__generator) || function (thisArg, body) {
42
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
- function verb(n) { return function (v) { return step([n, v]); }; }
45
- function step(op) {
46
- if (f) throw new TypeError("Generator is already executing.");
47
- while (_) try {
48
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
- if (y = 0, t) op = [op[0] & 2, t.value];
50
- switch (op[0]) {
51
- case 0: case 1: t = op; break;
52
- case 4: _.label++; return { value: op[1], done: false };
53
- case 5: _.label++; y = op[1]; op = [0]; continue;
54
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
- default:
56
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
- if (t[2]) _.ops.pop();
61
- _.trys.pop(); continue;
62
- }
63
- op = body.call(thisArg, _);
64
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
- }
67
- };
68
- var __importDefault = (this && this.__importDefault) || function (mod) {
69
- return (mod && mod.__esModule) ? mod : { "default": mod };
70
- };
71
- Object.defineProperty(exports, "__esModule", { value: true });
72
- exports.createSessionLogs = exports.generateLog = void 0;
73
- var checklogtable_1 = __importDefault(require("./checklogtable"));
74
- var constants_1 = __importDefault(require("../constants"));
75
- var _utility = __importStar(require("../lib/utility"));
76
- var mongodb_1 = __importDefault(require("mongodb"));
77
- var promise_allsettled_1 = __importDefault(require("promise.allsettled"));
78
- var bson_1 = require("bson");
79
- var utility_1 = require("../lib/utility");
80
- var log_enum_1 = require("../enums/log.enum");
81
- /**
82
- *
83
- *
84
- *
85
- * Created By : Ansh
86
- * Parameter Required :
87
- * logobj(log object)
88
- {
89
- "EventType":"<TypeOfChange>", Default value: Required value can't be empty type string "Create/Delete/Update"
90
- "Module":"<ModuleChanged>", Default value: Required value can't be empty type string "Account/Contact/Pipeline"
91
- "OldValue":"<OldValueObject>", Default value: Required value can't be empty type Object
92
- "NewValue":"<NewValue>", Default value: Required value can't be empty type object
93
- }
94
- * keysToDisplay if you want to display only certain keys in logs object rather than the entire object in a collection
95
- * req Request (For db refrerence)
96
- * @param {Request (For Database Reference)} req
97
- * @param { Log object } logObject
98
- * @param {if you want to display only certain keys in logs object rather than the entire object in a collection } keysToDisplay
99
- * @param { Connection to logs database }
100
- */
101
- var generateLog = function (req, logObject, keysToDisplay, logsDbConnetion) {
102
- if (keysToDisplay === void 0) { keysToDisplay = []; }
103
- return __awaiter(void 0, void 0, void 0, function () {
104
- var db, ip, _a, userName, userEmail, companyID, allLogsPromisses, templateStatus, _b, i, oldValue, newValue, comparedObj, i, i, comparedObj, oldObject_1, newObject_1, newObject, oldObject, i, oldObject_2, newObject_2, i, oldObject_3, newObject_3, comparedObj, i, oldObject_4, newObject_4, i, mapedNewObj, mapedOldObj, comparedObj, i, comparedObj, e_1;
105
- return __generator(this, function (_c) {
106
- switch (_c.label) {
107
- case 0:
108
- _c.trys.push([0, 21, , 22]);
109
- db = global['dbConnections'][req.DBName];
110
- return [4 /*yield*/, getIPLocationDetails(req)];
111
- case 1:
112
- ip = _c.sent();
113
- _a = req.cookies.msp_d, userName = _a.username, userEmail = _a.useremail, companyID = _a.ci;
114
- allLogsPromisses = [];
115
- templateStatus = void 0;
116
- return [4 /*yield*/, removeExtraKeys(logObject, keysToDisplay)];
117
- case 2:
118
- logObject = (_c.sent());
119
- _b = logObject.EventType;
120
- switch (_b) {
121
- case log_enum_1.EventType.CalendarAdd: return [3 /*break*/, 3];
122
- case log_enum_1.EventType.CalendarUpdate: return [3 /*break*/, 3];
123
- case log_enum_1.EventType.CalendarDelete: return [3 /*break*/, 3];
124
- case log_enum_1.EventType.DriveAdd: return [3 /*break*/, 9];
125
- case log_enum_1.EventType.DriveUpdate: return [3 /*break*/, 9];
126
- case log_enum_1.EventType.DriveDelete: return [3 /*break*/, 9];
127
- case log_enum_1.EventType.ContentStudioAdd: return [3 /*break*/, 15];
128
- case log_enum_1.EventType.ContentStudioUpdate: return [3 /*break*/, 15];
129
- case log_enum_1.EventType.ContentStudioDelete: return [3 /*break*/, 15];
130
- case log_enum_1.EventType.TemplateAdd: return [3 /*break*/, 16];
131
- case log_enum_1.EventType.TemplateUpdate: return [3 /*break*/, 16];
132
- case log_enum_1.EventType.TemplateDelete: return [3 /*break*/, 16];
133
- case log_enum_1.EventType.RecipientListAdd: return [3 /*break*/, 17];
134
- case log_enum_1.EventType.RecipientListDelete: return [3 /*break*/, 17];
135
- case log_enum_1.EventType.RecipientListUpdate: return [3 /*break*/, 17];
136
- case log_enum_1.EventType.SingleRecipientAdded: return [3 /*break*/, 17];
137
- case log_enum_1.EventType.AddTag: return [3 /*break*/, 18];
138
- }
139
- return [3 /*break*/, 19];
140
- case 3:
141
- switch (logObject.EventType) {
142
- case log_enum_1.EventType.CalendarAdd:
143
- logObject.EventType = log_enum_1.EventType.Add;
144
- break;
145
- case log_enum_1.EventType.CalendarUpdate:
146
- logObject.EventType = log_enum_1.EventType.Update;
147
- break;
148
- case log_enum_1.EventType.CalendarDelete:
149
- logObject.EventType = log_enum_1.EventType.Delete;
150
- break;
151
- }
152
- i = 0;
153
- _c.label = 4;
154
- case 4:
155
- if (!(i < logObject.NewValue.length)) return [3 /*break*/, 8];
156
- return [4 /*yield*/, mapAttendeesData(logObject.OldValue[i], req)];
157
- case 5:
158
- oldValue = _c.sent();
159
- return [4 /*yield*/, mapAttendeesData(logObject.NewValue[i], req)];
160
- case 6:
161
- newValue = _c.sent();
162
- comparedObj = comparePreviousAndNewObject(oldValue, newValue);
163
- allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
164
- _c.label = 7;
165
- case 7:
166
- ++i;
167
- return [3 /*break*/, 4];
168
- case 8:
169
- ;
170
- promise_allsettled_1.default(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
171
- return [3 /*break*/, 20];
172
- case 9:
173
- switch (logObject.EventType) {
174
- case log_enum_1.EventType.DriveAdd:
175
- logObject.EventType = log_enum_1.EventType.Add;
176
- break;
177
- case log_enum_1.EventType.DriveUpdate:
178
- logObject.EventType = log_enum_1.EventType.Update;
179
- break;
180
- case log_enum_1.EventType.DriveDelete:
181
- logObject.EventType = log_enum_1.EventType.Delete;
182
- break;
183
- }
184
- i = 0;
185
- _c.label = 10;
186
- case 10:
187
- if (!(i < logObject.NewValue.length)) return [3 /*break*/, 14];
188
- return [4 /*yield*/, mapDriveFolderIdToFolderName(logObject.NewValue[i], db)];
189
- case 11:
190
- _c.sent();
191
- return [4 /*yield*/, mapDriveFolderIdToFolderName(logObject.OldValue[i], db)];
192
- case 12:
193
- _c.sent();
194
- allLogsPromisses.push(createLogs(companyID, logObject.OldValue[i], logObject.NewValue[i], logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
195
- _c.label = 13;
196
- case 13:
197
- ++i;
198
- return [3 /*break*/, 10];
199
- case 14:
200
- ;
201
- promise_allsettled_1.default(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
202
- return [3 /*break*/, 20];
203
- case 15:
204
- switch (logObject.EventType) {
205
- case log_enum_1.EventType.ContentStudioAdd:
206
- logObject.EventType = log_enum_1.EventType.Add;
207
- break;
208
- case log_enum_1.EventType.ContentStudioUpdate:
209
- logObject.EventType = log_enum_1.EventType.Update;
210
- break;
211
- case log_enum_1.EventType.ContentStudioDelete:
212
- logObject.EventType = log_enum_1.EventType.Delete;
213
- break;
214
- }
215
- for (i = 0; i < logObject.NewValue.length; ++i) {
216
- comparedObj = comparePreviousAndNewObject(logObject.OldValue[i], logObject.NewValue[i]);
217
- oldObject_1 = mapContentStudioObject(comparedObj.previousObj);
218
- newObject_1 = mapContentStudioObject(comparedObj.updatedObj);
219
- allLogsPromisses.push(createLogs(companyID, oldObject_1, newObject_1, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
220
- }
221
- promise_allsettled_1.default(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
222
- return [3 /*break*/, 20];
223
- case 16:
224
- newObject = void 0;
225
- oldObject = void 0;
226
- switch (logObject.EventType) {
227
- case log_enum_1.EventType.TemplateAdd:
228
- logObject.EventType = log_enum_1.EventType.Add;
229
- templateStatus = 'Template Added';
230
- oldObject = mapTemplateObject(logObject.OldValue[0], '');
231
- newObject = mapTemplateObject(logObject.NewValue[0], templateStatus);
232
- break;
233
- case log_enum_1.EventType.TemplateUpdate:
234
- logObject.EventType = log_enum_1.EventType.Update;
235
- templateStatus = 'Template Updated';
236
- oldObject = mapTemplateObject(logObject.OldValue[0], '');
237
- newObject = mapTemplateObject(logObject.NewValue[0], templateStatus);
238
- break;
239
- case log_enum_1.EventType.TemplateDelete:
240
- logObject.EventType = log_enum_1.EventType.Update;
241
- templateStatus = 'Template Deleted';
242
- oldObject = mapTemplateObject(logObject.OldValue[0], templateStatus);
243
- newObject = mapTemplateObject(logObject.NewValue[0], '');
244
- break;
245
- }
246
- allLogsPromisses.push(createLogs(companyID, oldObject, newObject, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
247
- return [3 /*break*/, 20];
248
- case 17:
249
- switch (logObject.EventType) {
250
- case log_enum_1.EventType.RecipientListAdd:
251
- logObject.EventType = log_enum_1.EventType.Add;
252
- status = 'Recipient List Added';
253
- for (i = 0; i < logObject.NewValue.length; i++) {
254
- oldObject_2 = {};
255
- newObject_2 = mapRecipientList(logObject.NewValue[i], status);
256
- allLogsPromisses.push(createLogs(companyID, oldObject_2, newObject_2, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
257
- }
258
- promise_allsettled_1.default(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
259
- break;
260
- case log_enum_1.EventType.SingleRecipientAdded:
261
- logObject.EventType = log_enum_1.EventType.Add;
262
- status = 'Recipient Added';
263
- for (i = 0; i < logObject.NewValue.length; i++) {
264
- oldObject_3 = logObject.OldValue[i];
265
- oldObject_3 = mapRecipientList(logObject.OldValue[i], '');
266
- newObject_3 = mapRecipientList(logObject.NewValue[i], status);
267
- comparedObj = comparePreviousAndNewObject(oldObject_3, newObject_3);
268
- allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
269
- }
270
- promise_allsettled_1.default(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
271
- break;
272
- case log_enum_1.EventType.RecipientListDelete:
273
- logObject.EventType = log_enum_1.EventType.Delete;
274
- status = 'Template Deleted';
275
- for (i = 0; i < logObject.OldValue.length; i++) {
276
- oldObject_4 = mapRecipientList(logObject.OldValue[i], status);
277
- newObject_4 = {};
278
- allLogsPromisses.push(createLogs(companyID, oldObject_4, newObject_4, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
279
- }
280
- break;
281
- }
282
- return [3 /*break*/, 20];
283
- case 18:
284
- logObject.EventType = log_enum_1.EventType.Add;
285
- for (i = 0; i < logObject.NewValue.length; i++) {
286
- mapedNewObj = mapTagObject(logObject.NewValue[i]);
287
- mapedOldObj = mapTagObject(logObject.OldValue[i]);
288
- addNameFieldToObject(logObject.NewValue[i], mapedNewObj);
289
- addNameFieldToObject(logObject.OldValue[i], mapedOldObj);
290
- comparedObj = comparePreviousAndNewObject(mapedOldObj, mapedNewObj);
291
- allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
292
- }
293
- promise_allsettled_1.default(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
294
- return [3 /*break*/, 20];
295
- case 19:
296
- for (i = 0; i < logObject.OldValue.length; ++i) {
297
- comparedObj = { previousObj: {}, updatedObj: logObject.NewValue[i] };
298
- if (logObject.EventType != log_enum_1.EventType.Delete)
299
- comparedObj = comparePreviousAndNewObject(logObject.OldValue[i], logObject.NewValue[i]);
300
- allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
301
- }
302
- ;
303
- promise_allsettled_1.default(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
304
- _c.label = 20;
305
- case 20: return [3 /*break*/, 22];
306
- case 21:
307
- e_1 = _c.sent();
308
- console.log('Error Occured While Createing Log:', e_1);
309
- return [3 /*break*/, 22];
310
- case 22: return [2 /*return*/];
311
- }
312
- });
313
- });
314
- };
315
- exports.generateLog = generateLog;
316
- var mapTagObject = function (object) {
317
- var obj = { Tags: [] };
318
- if (object && object.Tag_LookupData) {
319
- for (var i = 0; i < object.Tag_LookupData.length; ++i) {
320
- var TagObj = {};
321
- if (object.Tag_LookupData[i].Name) {
322
- TagObj['TagName'] = object.Tag_LookupData[i].Name;
323
- }
324
- if (object.Tag_LookupData[i].UserDetail) {
325
- TagObj['TagOwner'] = object.Tag_LookupData[i].UserDetail.FirstName + ' ' + object.Tag_LookupData[i].UserDetail.LastName;
326
- }
327
- obj.Tags.push(TagObj);
328
- }
329
- }
330
- return obj;
331
- };
332
- /**
333
- * CreatedBy Ansh
334
- * @param {CompanyId in String Format } companyID
335
- * @param {logObject (OldValue) } oldObjValue
336
- * @param {logObject (NewValue) } newObjValue
337
- * @param {logObject Module (ModuleName)} module
338
- * @param {logObject EventType (add/update/delete/calanderAdd/..)} eventType
339
- * @param {logObject ObjectSchema (Fields in Schema of Object to be loged)} schemaFields
340
- * @param { User's Name } userName
341
- * @param {User's Email} userEmail
342
- * @param {User's Ip} ip
343
- * @param {Request for database name } req
344
- *
345
- * Main Log Function that Map's Field as per object schema and insert log into the mysql database
346
- *
347
- */
348
- var createLogs = function (companyID, oldObjValue, newObjValue, module, eventType, schemaFields, userName, userEmail, ip, req, sequelize) {
349
- return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
350
- var TableName, convertedObj, cleanNewValue, cleanOldValue, changeField, strOldValue, strNewValue, quoteOldValue, quoteNewValue, oldValue, newValue, query, SaveToDB;
351
- return __generator(this, function (_a) {
352
- switch (_a.label) {
353
- case 0:
354
- TableName = "log-" + companyID.toString();
355
- return [4 /*yield*/, restoreFieldsAsPerObjectSchema(oldObjValue, newObjValue, schemaFields, req)];
356
- case 1:
357
- convertedObj = _a.sent();
358
- cleanNewValue = removeLookupFields(convertedObj.updatedObj);
359
- cleanOldValue = removeLookupFields(convertedObj.previousObj);
360
- return [4 /*yield*/, checklogtable_1.default(TableName, sequelize)];
361
- case 2:
362
- _a.sent();
363
- if (cleanNewValue.Message)
364
- cleanNewValue.Message = JSON.stringify(cleanNewValue.Message).replace(/\"/g, "");
365
- if (cleanOldValue.Message)
366
- cleanOldValue.Message = JSON.stringify(cleanOldValue.Message).replace(/\"/g, "");
367
- changeField = Object.keys(cleanNewValue).length > 0 ? Object.keys(cleanNewValue).join(',') : Object.keys(cleanOldValue).join(',');
368
- strOldValue = JSON.stringify(cleanOldValue);
369
- strNewValue = JSON.stringify(cleanNewValue);
370
- quoteOldValue = strOldValue.replace(/'/g, "\\'");
371
- quoteNewValue = strNewValue.replace(/'/g, "\\'");
372
- oldValue = "'" + quoteOldValue + "'";
373
- newValue = "'" + quoteNewValue + "'";
374
- TableName = "`" + TableName + "s`";
375
- if (!(Object.keys(cleanNewValue).length > 0 || Object.keys(cleanOldValue).length > 0)) return [3 /*break*/, 4];
376
- query = "INSERT INTO " + TableName + " (CompanyID,UserName,UserEmail,IPAddress,TypeOfChange,ChangeField,Module,OldValue,NewValue) VALUES (\"" + companyID + "\",\"" + userName + "\",\"" + userEmail + "\",\"" + ip + "\",\"" + eventType + "\",\"" + changeField + "\",\"" + module + "\"," + oldValue + "," + newValue + ")";
377
- return [4 /*yield*/, sequelize.query(query)];
378
- case 3:
379
- SaveToDB = _a.sent();
380
- resolve(SaveToDB);
381
- _a.label = 4;
382
- case 4:
383
- resolve();
384
- return [2 /*return*/];
385
- }
386
- });
387
- }); });
388
- };
389
- var createSessionLogs = function (req, logDetails, sequelize) { return __awaiter(void 0, void 0, void 0, function () {
390
- return __generator(this, function (_a) {
391
- return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
392
- var CompanyId, TableName, _a, _b, LogType, UserName, UserEmail, IPAddress, Browser, Status, Platform, Application, query, SaveToDB;
393
- return __generator(this, function (_c) {
394
- switch (_c.label) {
395
- case 0:
396
- CompanyId = logDetails.CompanyId;
397
- TableName = "log-" + CompanyId.toString();
398
- return [4 /*yield*/, checklogtable_1.default(TableName, sequelize)];
399
- case 1:
400
- _c.sent();
401
- TableName = "`" + TableName + "s`";
402
- console.log('log detail', logDetails);
403
- _a = logDetails;
404
- _b = 'IPAddress';
405
- return [4 /*yield*/, getIPLocationDetails(req)];
406
- case 2:
407
- _a[_b] = (_c.sent());
408
- LogType = logDetails.LogType, UserName = logDetails.UserName, UserEmail = logDetails.UserEmail, IPAddress = logDetails.IPAddress, Browser = logDetails.Browser, Status = logDetails.Status, Platform = logDetails.Platform, Application = logDetails.Application;
409
- LogType = LogType ? LogType : 'session';
410
- query = "INSERT INTO " + TableName + " (CompanyID,UserName,UserEmail,IPAddress,Browser,Status,Platform,Application,LogType) VALUES (\"" + CompanyId + "\",\"" + UserName + "\",\"" + UserEmail + "\",\"" + IPAddress + "\",\"" + Browser + "\",\"" + Status + "\",\"" + Platform + "\",\"" + Application + "\",\"" + LogType + "\")";
411
- return [4 /*yield*/, sequelize.query(query)];
412
- case 3:
413
- SaveToDB = _c.sent();
414
- resolve(SaveToDB);
415
- return [2 /*return*/];
416
- }
417
- });
418
- }); })];
419
- });
420
- }); };
421
- exports.createSessionLogs = createSessionLogs;
422
- // Converts Object To String To View Data In Audit Log Grid
423
- // const convertObjectToDisplayAbleString = ( object )=>{
424
- // let Accumalator = [];
425
- // Object.keys(object).forEach((key, index) => {
426
- // Accumalator.push(`${key} has been changed to ${object[key]}`)
427
- // });
428
- // return Accumalator.join(',')
429
- // }
430
- /**
431
- *
432
- * @param { Log NewObject/OldObject } object
433
- * @param { filterObject to be returned } objectToSet
434
- * To Add a mendatory field Name to the object
435
- *
436
- */
437
- var addNameFieldToObject = function (object, objectToSet) {
438
- var allKeys = Object.keys(object);
439
- if (!allKeys.find(function (key) { return key == 'Name'; })) {
440
- if (allKeys.find(function (key) { return key == 'FirstName'; }) && allKeys.find(function (key) { return key == 'LastName'; })) {
441
- objectToSet['Name'] = object['FirstName'] + ' ' + object['LastName'];
442
- }
443
- else if (allKeys.find(function (key) { return key == 'Title'; })) {
444
- objectToSet['Name'] = object['Title'];
445
- }
446
- else if (allKeys.find(function (key) { return key == 'Subject'; })) {
447
- objectToSet['Name'] = object['Subject'];
448
- }
449
- else if (allKeys.find(function (key) { return key == 'FolderName'; })) {
450
- objectToSet['Name'] = object['FolderName'];
451
- }
452
- else if (allKeys.find(function (key) { return key == 'BranchCode'; })) {
453
- objectToSet['Name'] = object['BranchCode'];
454
- }
455
- else if (Object.keys(objectToSet).find(function (key) { return key == 'Contact'; })) {
456
- objectToSet['Name'] = objectToSet['Contact'];
457
- }
458
- else if (allKeys.find(function (key) { return key == 'ContactID_LookupData'; })) {
459
- objectToSet['Name'] = object['ContactID_LookupData']['FirstName'] + ' ' + object['ContactID_LookupData']['LastName'];
460
- }
461
- }
462
- else {
463
- objectToSet['Name'] = object['Name'];
464
- }
465
- };
466
- /**
467
- *
468
- * @param {old state object ( previous object )} previousObject
469
- * @param {new state object ( new object )} newObject
470
- * Returns the Updated Object and Previous Object
471
- *
472
- */
473
- var comparePreviousAndNewObject = function (previousObject, newObject) {
474
- var comparedObject = { 'updatedObj': {}, 'previousObj': {} };
475
- (previousObject && previousObject.Name) ? comparedObject['previousObj']['Name'] = previousObject['Name'] : addNameFieldToObject(previousObject, comparedObject['previousObj']);
476
- (newObject && newObject.Name) ? comparedObject['updatedObj']['Name'] = newObject['Name'] : addNameFieldToObject(newObject, comparedObject['updatedObj']);
477
- if (!_utility.IsEqualValue(previousObject, newObject)) {
478
- Object.keys(previousObject).forEach(function (key) {
479
- if (key != 'IsActive' && !key.includes(constants_1.default.LookupAlias)) {
480
- (newObject[key] == null && Array.isArray(previousObject[key])) ? newObject[key] = [] : '';
481
- if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length !== newObject[key].length && previousObject[key].length != 0) {
482
- comparedObject['previousObj'][key] = previousObject[key];
483
- }
484
- else if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length === newObject[key].length) {
485
- for (var i = 0; i < previousObject[key].length; i++) {
486
- if (objectsEqual(previousObject[key][i], newObject[key][i]) == false) {
487
- comparedObject['previousObj'][key] = previousObject[key];
488
- break;
489
- }
490
- }
491
- }
492
- if (!Array.isArray(previousObject[key]) && JSON.stringify(previousObject[key]) !== JSON.stringify(newObject[key])) {
493
- comparedObject['previousObj'][key] = JSON.parse(JSON.stringify(previousObject[key]));
494
- }
495
- }
496
- else if (key.includes(constants_1.default.LookupAlias)) {
497
- comparedObject['previousObj'][key] = JSON.parse(JSON.stringify(previousObject[key]));
498
- }
499
- });
500
- Object.keys(newObject).forEach(function (key) {
501
- if (key != 'IsActive' && !key.includes(constants_1.default.LookupAlias)) {
502
- (previousObject[key] == null && Array.isArray(newObject[key])) ? previousObject[key] = [] : '';
503
- if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length !== newObject[key].length && newObject[key].length != 0) {
504
- comparedObject['updatedObj'][key] = newObject[key];
505
- }
506
- else if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length === newObject[key].length) {
507
- for (var i = 0; i < previousObject[key].length; i++) {
508
- if (objectsEqual(previousObject[key][i], newObject[key][i]) == false) {
509
- comparedObject['updatedObj'][key] = newObject[key];
510
- break;
511
- }
512
- }
513
- }
514
- if (!Array.isArray(newObject[key]) && JSON.stringify(previousObject[key]) !== JSON.stringify(newObject[key])) {
515
- comparedObject['updatedObj'][key] = JSON.parse(JSON.stringify(newObject[key]));
516
- }
517
- }
518
- else if (key.includes(constants_1.default.LookupAlias)) {
519
- comparedObject['updatedObj'][key] = JSON.parse(JSON.stringify(newObject[key]));
520
- }
521
- });
522
- }
523
- return comparedObject;
524
- };
525
- var objectsEqual = function (o1, o2) { return Object.keys(o1).length === Object.keys(o2).length && Object.keys(o1).every(function (p) { return o1[p] === o2[p]; }); };
526
- /**
527
- *
528
- * @param { old state object ( previous object ) } previousObjects
529
- * @param { new state object ( new object ) } newObject
530
- * @param { object schema fields } schema
531
- * @param { request } req
532
- */
533
- var restoreFieldsAsPerObjectSchema = function (previousObjects, newObject, schema, req) {
534
- return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
535
- var restoredObject, _a, _b, _c, _d;
536
- return __generator(this, function (_e) {
537
- switch (_e.label) {
538
- case 0:
539
- restoredObject = { previousObj: {}, updatedObj: {} };
540
- _a = restoredObject;
541
- _b = 'previousObj';
542
- return [4 /*yield*/, convertAndReturnValuesAsPerObjectSchema(previousObjects, schema, req)];
543
- case 1:
544
- _a[_b] = (_e.sent());
545
- _c = restoredObject;
546
- _d = 'updatedObj';
547
- return [4 /*yield*/, convertAndReturnValuesAsPerObjectSchema(newObject, schema, req)];
548
- case 2:
549
- _c[_d] = (_e.sent());
550
- resolve(restoredObject);
551
- return [2 /*return*/];
552
- }
553
- });
554
- }); });
555
- };
556
- /**
557
- *
558
- * @param { old/new object } object
559
- * @param { current key to be checked } key
560
- * @param { object schema } schema
561
- * @param { restoredObject (clean object to be returned after mapping the lookup fields) } restoredObject
562
- * @param { request } req
563
- *
564
- *
565
- */
566
- var checkForLookupAndListSchema = function (object, key, schema, restoredObject, req) {
567
- return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
568
- var objectid, objSchema, schemalookupfieldsDisplayValue_1, DisplayableName, value_1, db, objSchema, DisplayableName, ListSchema_1, DisplayAbleValue_1, previousListSchemaData, valueToDisplay_1, db, UserInfo, valueToDisplay_2, objSchema, schemalookupfieldsDisplayValue_2, DisplayableName, value_2;
569
- return __generator(this, function (_a) {
570
- switch (_a.label) {
571
- case 0:
572
- objectid = mongodb_1.default.ObjectId;
573
- if (!(schema.find(function (o) { return o.Name == key && o.LookupFields && o.LookupFields.length > 0; }) && key !== 'Tag')) return [3 /*break*/, 1];
574
- objSchema = schema.find(function (o) { return o.Name == key; });
575
- schemalookupfieldsDisplayValue_1 = objSchema.LookupFields;
576
- DisplayableName = objSchema.DisplayName;
577
- value_1 = '';
578
- if (key == 'Product') {
579
- restoredObject['Name'] = object[key + constants_1.default.LookupAlias]['Name'];
580
- }
581
- if (Array.isArray(object["" + (key.toString() + constants_1.default.LookupAlias)]) && object["" + (key.toString() + constants_1.default.LookupAlias)].length > 0) {
582
- object["" + (key.toString() + constants_1.default.LookupAlias)].forEach(function (obj) {
583
- Object.keys(obj).forEach(function (lookupfield) {
584
- if (schemalookupfieldsDisplayValue_1.find(function (o) { return o.toString() == lookupfield.toString(); })) {
585
- value_1 += obj[lookupfield] + " ";
586
- }
587
- });
588
- });
589
- restoredObject[DisplayableName] = value_1;
590
- }
591
- else {
592
- if (object["" + (key.toString() + constants_1.default.LookupAlias)] != null && Object.keys(object["" + (key.toString() + constants_1.default.LookupAlias)]).length > 1) {
593
- Object.keys(object["" + (key.toString() + constants_1.default.LookupAlias)]).forEach(function (lookupfield) {
594
- if (schemalookupfieldsDisplayValue_1.find(function (o) { return o.toString() == lookupfield.toString(); })) {
595
- value_1 += object["" + (key.toString() + constants_1.default.LookupAlias)][lookupfield] + " ";
596
- }
597
- });
598
- }
599
- restoredObject[DisplayableName] = value_1;
600
- }
601
- return [3 /*break*/, 12];
602
- case 1:
603
- if (!schema.find(function (o) { return o.Name == key && o.ListSchemaName; })) return [3 /*break*/, 6];
604
- db = global['dbConnections'][req.DBName];
605
- objSchema = schema.find(function (o) { return o.Name == key; });
606
- DisplayableName = objSchema.DisplayName;
607
- return [4 /*yield*/, db.collection('ListSchema').findOne({
608
- Name: objSchema.ListSchemaName
609
- })];
610
- case 2:
611
- ListSchema_1 = _a.sent();
612
- if (!ListSchema_1) return [3 /*break*/, 5];
613
- if (!Array.isArray(object[key])) return [3 /*break*/, 4];
614
- DisplayAbleValue_1 = '';
615
- return [4 /*yield*/, object[key].forEach(function (k) {
616
- var previousListSchemaData = ListSchema_1.Data.find(function (o) { return o.Key == k; });
617
- if (previousListSchemaData) {
618
- DisplayAbleValue_1 += previousListSchemaData.Value + ' ';
619
- }
620
- })];
621
- case 3:
622
- _a.sent();
623
- restoredObject[DisplayableName] = DisplayAbleValue_1;
624
- return [3 /*break*/, 5];
625
- case 4:
626
- previousListSchemaData = ListSchema_1.Data.find(function (o) { return o.Key == object[key]; });
627
- if (previousListSchemaData) {
628
- restoredObject[DisplayableName] = previousListSchemaData.Value;
629
- }
630
- _a.label = 5;
631
- case 5: return [3 /*break*/, 12];
632
- case 6:
633
- if (!(object[key.toString() + constants_1.default.LookupAlias] && !Object.keys(object).find(function (o) { return o == 'Name'; }) || (object[key.toString() + constants_1.default.LookupAlias] && key == 'Tag_LookupData'))) return [3 /*break*/, 7];
634
- valueToDisplay_1 = "";
635
- if (key == 'Tag_LookupData') {
636
- restoredObject['TagName'] = object[key]['Name'];
637
- }
638
- if (object['ObjectSchemaName']) {
639
- restoredObject['Module'] = object['ObjectSchemaName'];
640
- delete object['ObjectSchemaName'];
641
- }
642
- delete object['ObjectSchemaID'];
643
- Object.keys(object[key.toString() + constants_1.default.LookupAlias]).forEach(function (k) {
644
- if (k != 'IsActive' && k != '_id') {
645
- valueToDisplay_1 += " " + object[key.toString() + constants_1.default.LookupAlias][k];
646
- }
647
- });
648
- restoredObject['Name'] = valueToDisplay_1;
649
- return [3 /*break*/, 12];
650
- case 7:
651
- if (!(key == "ObjectSchemaName")) return [3 /*break*/, 8];
652
- restoredObject['Module'] = object["ObjectSchemaName"];
653
- delete object['ObjectSchemaName'];
654
- return [3 /*break*/, 12];
655
- case 8:
656
- if (!(key == "ObjectSchemaID")) return [3 /*break*/, 9];
657
- delete object["ObjectSchemaID"];
658
- return [3 /*break*/, 12];
659
- case 9:
660
- if (!(key == 'CreatedBy' && objectid.isValid(object[key]) || key == 'ModifiedBy' && objectid.isValid(object[key]))) return [3 /*break*/, 11];
661
- db = global['dbConnections'][req.DBName];
662
- return [4 /*yield*/, db.collection('User').findOne({
663
- _id: new mongodb_1.default.ObjectId(object[key])
664
- })];
665
- case 10:
666
- UserInfo = _a.sent();
667
- if (UserInfo && UserInfo.FirstName && UserInfo.LastName) {
668
- restoredObject[key] = UserInfo.FirstName + ' ' + UserInfo.LastName;
669
- }
670
- return [3 /*break*/, 12];
671
- case 11:
672
- if (!Array.isArray(object[key]) && typeof object[key] == "object" && bson_1.EJSON.parse(JSON.stringify(object[key])) && !key.toLowerCase().includes('date') && !object[key.toString() + constants_1.default.LookupAlias] && key !== 'ColumnList' && key != 'SearchAddress' && key != "AddedReceiptent") {
673
- (object[key]['$numberDecimal']) ? restoredObject[key] = object[key]['$numberDecimal'] : restoredObject[key] = object[key].toString();
674
- }
675
- else if (key == "IsHeadOffice") {
676
- restoredObject['HeadOffice'] = object[key] == true ? 'yes' : 'no';
677
- }
678
- else if (key == 'Document') {
679
- valueToDisplay_2 = '';
680
- Object.keys(object[key.toString() + constants_1.default.LookupAlias]).forEach(function (k) {
681
- if (k != 'IsActive' && k != '_id') {
682
- valueToDisplay_2 += " " + object[key.toString() + constants_1.default.LookupAlias][k];
683
- }
684
- });
685
- restoredObject[key] = valueToDisplay_2;
686
- }
687
- else if (key == 'Product') {
688
- restoredObject['Name'] = object[key]["Name"];
689
- }
690
- else if (key == 'Tag' && Array.isArray(object['Tag' + constants_1.default.LookupAlias])) {
691
- objSchema = schema.find(function (o) { return o.Name == key; });
692
- schemalookupfieldsDisplayValue_2 = objSchema.LookupFields;
693
- DisplayableName = objSchema.DisplayName;
694
- value_2 = '';
695
- object["" + (key.toString() + constants_1.default.LookupAlias)].forEach(function (obj) {
696
- Object.keys(obj).forEach(function (lookupfield) {
697
- if (schemalookupfieldsDisplayValue_2.find(function (o) { return o.toString() == lookupfield.toString(); })) {
698
- value_2 += obj[lookupfield] + " ";
699
- }
700
- });
701
- });
702
- restoredObject[DisplayableName] = value_2;
703
- }
704
- else if (key != "SearchAddress" && key !== 'IsActive' && key !== "RelationID" && key !== "OperaProfileId" && key !== 'ColumnList' && key !== 'CompanyID' && key !== 'TemplateID' && key != 'TemplateBlockContent' && key != 'TemplateEmailContent') {
705
- restoredObject[key] = object[key];
706
- }
707
- _a.label = 12;
708
- case 12:
709
- addNameFieldToObject(object, restoredObject);
710
- resolve(restoredObject);
711
- return [2 /*return*/];
712
- }
713
- });
714
- }); });
715
- };
716
- /**
717
- *
718
- * @param { new/Old Value } object
719
- * @param { object schema field } schema
720
- * @param { request } req
721
- *
722
- */
723
- var convertAndReturnValuesAsPerObjectSchema = function (object, schema, req) {
724
- return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
725
- var restoredObject, allPromises, AllKeys, _i, AllKeys_1, key;
726
- return __generator(this, function (_a) {
727
- restoredObject = {};
728
- allPromises = [];
729
- (object.TemplateBlockContent) ? delete object.TemplateBlockContent : '';
730
- (object.TemplateEmailContent) ? delete object.TemplateEmailContent : '';
731
- (object.ColumnList) ? delete object.ColumnList : '';
732
- (object.CompanyID) ? delete object.CompanyID : '';
733
- (object.TemplateID) ? delete object.TemplateID : '';
734
- AllKeys = Object.keys(object);
735
- for (_i = 0, AllKeys_1 = AllKeys; _i < AllKeys_1.length; _i++) {
736
- key = AllKeys_1[_i];
737
- allPromises.push(checkForLookupAndListSchema(object, key, schema, restoredObject, req));
738
- }
739
- ;
740
- Promise.all(allPromises).then(function () { return resolve(restoredObject); });
741
- return [2 /*return*/];
742
- });
743
- }); });
744
- };
745
- /**
746
- *
747
- * @param { oldValue/newValue Object } obj
748
- *
749
- */
750
- //to Remove Lookup Fields , _id and Modified Date from Logs
751
- var removeLookupFields = function (obj) {
752
- var cleanObj = {};
753
- Object.keys(obj).forEach(function (key) {
754
- if (key.includes(constants_1.default.LookupAlias) || key == '_id' || key == 'ModifiedDate') {
755
- delete obj[key];
756
- }
757
- else {
758
- cleanObj[key] = obj[key];
759
- }
760
- });
761
- return cleanObj;
762
- };
763
- /**
764
- *
765
- * @param { old/newObject } obj
766
- * @param { fieldsToShow in log table } toDisplay
767
- *
768
- */
769
- //To Remove Non DisplayAble Field in Logs
770
- var removeExtraKeys = function (obj, toDisplay) {
771
- var filteredObj = {};
772
- if (toDisplay.length > 0) {
773
- Object.keys(obj).forEach(function (key) {
774
- if (Array.isArray(obj[key]) && obj[key].length > 0) {
775
- var filteredArray_1 = [];
776
- obj[key].forEach(function (o) {
777
- var obj = {};
778
- Object.keys(o).forEach(function (k) {
779
- if (toDisplay.find(function (o) { return o == k; }) || k.includes(constants_1.default.LookupAlias)) {
780
- obj[k] = o[k];
781
- }
782
- });
783
- filteredArray_1.push(obj);
784
- });
785
- filteredObj[key] = filteredArray_1;
786
- }
787
- else {
788
- filteredObj[key] = obj[key];
789
- }
790
- });
791
- return __assign({}, filteredObj);
792
- }
793
- return __assign({}, obj);
794
- };
795
- /**
796
- *
797
- * @param { attendee object } attendee
798
- * @param { current key of attendee object} key
799
- * @param { object to be returned } filterdObj
800
- * @param {database reference} db
801
- *
802
- */
803
- //fetch user/contact info from viewAttendee
804
- var mapAttendeToContactAndUser = function (attendee, key, filterdObj, db) {
805
- return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
806
- var Users, alluserInfo, userInfo, inviteInfo, tranformedObj;
807
- return __generator(this, function (_a) {
808
- switch (_a.label) {
809
- case 0:
810
- Users = [];
811
- (attendee.Id) ? Users.push(new mongodb_1.default.ObjectId(attendee.Id)) : '';
812
- (attendee.InvitedBy) ? Users.push(new mongodb_1.default.ObjectId(attendee.InvitedBy)) : '';
813
- return [4 /*yield*/, db.collection('ViewAttendee').find({ _id: { $in: Users } }, { projection: { Name: 1 } }).toArray()];
814
- case 1:
815
- alluserInfo = _a.sent();
816
- userInfo = alluserInfo.find(function (o) { return o._id.toString() == attendee.Id.toString(); });
817
- inviteInfo = alluserInfo.find(function (o) { return o._id.toString() == attendee.InvitedBy.toString(); });
818
- tranformedObj = {};
819
- (userInfo && userInfo.Name) ? tranformedObj['Name'] = userInfo.Name : '';
820
- tranformedObj['InvitationStatus'] = attendee.Status;
821
- attendee.StatusType ? tranformedObj['UserAvaliability'] = attendee.StatusType : '';
822
- (userInfo && userInfo.Name) ? tranformedObj['InvitedBy'] = inviteInfo.Name : '';
823
- tranformedObj['Locked'] = (attendee.Lock && attendee.Lock == true) ? 'Yes' : 'No';
824
- filterdObj.Attendess.push(tranformedObj);
825
- resolve();
826
- return [2 /*return*/];
827
- }
828
- });
829
- }); });
830
- };
831
- /**
832
- *
833
- * @param { old/newObject } obj
834
- * @param { request } req
835
- *
836
- */
837
- // used to tranform calander attendedata into a displayable log format
838
- var mapAttendeesData = function (obj, req) { return __awaiter(void 0, void 0, void 0, function () {
839
- return __generator(this, function (_a) {
840
- return [2 /*return*/, new Promise(function (resolve, reject) {
841
- var db = global['dbConnections'][req.DBName];
842
- var filterdObj = {};
843
- var allPromises = [];
844
- Object.keys(obj).forEach(function (key) { return __awaiter(void 0, void 0, void 0, function () {
845
- var _i, _a, attendee;
846
- return __generator(this, function (_b) {
847
- if (key === 'AttendeesData' && Array.isArray(obj[key])) {
848
- filterdObj.Attendess = [];
849
- for (_i = 0, _a = obj[key]; _i < _a.length; _i++) {
850
- attendee = _a[_i];
851
- if (attendee.Type == 'user' || attendee.Type == 'contact') {
852
- allPromises.push(mapAttendeToContactAndUser(attendee, key, filterdObj, db));
853
- }
854
- }
855
- }
856
- else if (key === 'IsAllDay') {
857
- filterdObj['AllDay'] = obj[key] == true ? 'Yes' : 'No';
858
- }
859
- else if (key === 'Subject') {
860
- filterdObj['Name'] = obj[key];
861
- }
862
- else {
863
- filterdObj[key] = obj[key];
864
- }
865
- return [2 /*return*/];
866
- });
867
- }); });
868
- promise_allsettled_1.default(allPromises).then(function () {
869
- resolve(filterdObj);
870
- });
871
- })];
872
- });
873
- }); };
874
- /**
875
- *
876
- * @param { driveObject new Value / old Value } driveObj
877
- * @param { database reference } db
878
- * map folder id to orignal folder name
879
- */
880
- var mapDriveFolderIdToFolderName = function (driveObj, db) {
881
- return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
882
- var sharedUsers_1, parentFolderName, allExternalShares_1;
883
- return __generator(this, function (_a) {
884
- switch (_a.label) {
885
- case 0:
886
- (driveObj.ContentType && driveObj.ContentType.length == 0 || driveObj.ContentType == 'folder') ? delete driveObj.ContentType : '';
887
- (driveObj.Size) ? driveObj['Size'] = utility_1.ConvertFileByteSize(driveObj.Size) : '';
888
- if (driveObj['FileName']) {
889
- driveObj['Name'] = driveObj['FileName'];
890
- delete driveObj['FileName'];
891
- }
892
- if (driveObj.SharedUserIDs) {
893
- sharedUsers_1 = [];
894
- driveObj['SharedUserIDs' + constants_1.default.LookupAlias].forEach(function (sharedUser) {
895
- if (sharedUser.FirstName && sharedUser.LastName && sharedUser.Email) {
896
- sharedUsers_1.push({ 'Name': sharedUser.FirstName + ' ' + sharedUser.LastName, 'Email': sharedUser.Email });
897
- }
898
- });
899
- driveObj['SharedWith'] = sharedUsers_1;
900
- driveObj['ShareType'] = 'Internal Share';
901
- delete driveObj.SharedUserIDs;
902
- }
903
- if (!(driveObj.FolderId == 'root')) return [3 /*break*/, 1];
904
- driveObj['FolderName'] = driveObj.FolderId;
905
- delete driveObj.FolderId;
906
- return [3 /*break*/, 3];
907
- case 1: return [4 /*yield*/, db.collection('Drive').findOne({ _id: new mongodb_1.default.ObjectId(driveObj.FolderId) }, { projection: { FileName: 1, _id: 0 } })];
908
- case 2:
909
- parentFolderName = _a.sent();
910
- delete driveObj.FolderId;
911
- (parentFolderName) ? driveObj['FolderName'] = parentFolderName.FileName : '';
912
- _a.label = 3;
913
- case 3:
914
- if (driveObj.ExternalShare) {
915
- driveObj['ShareType'] = 'external share';
916
- if (driveObj.ExternalShare.ExternalUsers && driveObj.ExternalShare.ExternalUsers.length > 0) {
917
- allExternalShares_1 = [];
918
- driveObj.ExternalShare.ExternalUsers.forEach(function (user) {
919
- if (user.Email) {
920
- allExternalShares_1.push({ Email: user.Email, AddedDate: user.AddedDate });
921
- }
922
- });
923
- driveObj['SharedWith'] = allExternalShares_1;
924
- }
925
- (driveObj.ExternalShare.ShareType && driveObj.ExternalShare.ShareType.length > 0) ? driveObj['Mode'] = driveObj.ExternalShare.ShareType : '';
926
- driveObj['ShareType'] = 'external share';
927
- (driveObj.ExternalShare.ExpireTime) ? driveObj['ExpireTime'] = driveObj.ExternalShare.ExpireTime : '';
928
- delete driveObj.ExternalShare;
929
- }
930
- resolve();
931
- return [2 /*return*/];
932
- }
933
- });
934
- }); });
935
- };
936
- /**
937
- * CreatedBy Rohit
938
- * @param {Request for database name } req
939
- *
940
- * Get Location from IP using request object
941
- *
942
- */
943
- var getIPLocationDetails = function (req) { return __awaiter(void 0, void 0, void 0, function () {
944
- var _a, _b, countryName, _c, region, _d, city, ip, location;
945
- return __generator(this, function (_e) {
946
- switch (_e.label) {
947
- case 0: return [4 /*yield*/, _utility.GetIPDetailsFromReq(req)];
948
- case 1:
949
- _a = (_e.sent()) || {}, _b = _a.countryName, countryName = _b === void 0 ? '' : _b, _c = _a.region, region = _c === void 0 ? '' : _c, _d = _a.city, city = _d === void 0 ? '' : _d;
950
- ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || (req.connection.socket ? req.connection.socket.remoteAddress : null);
951
- location = '';
952
- if (countryName != '' || region != '' || city != '') {
953
- // return `${ip} /(${country}, ${region}, ${city})`;
954
- location += countryName;
955
- }
956
- if (region != '') {
957
- location += ", " + region;
958
- }
959
- if (city != '') {
960
- location += ", " + city;
961
- }
962
- if (location && location != '')
963
- return [2 /*return*/, ip + " /(" + location + ")"];
964
- else
965
- return [2 /*return*/, ip];
966
- return [2 /*return*/];
967
- }
968
- });
969
- }); };
970
- var mapContentStudioObject = function (object) {
971
- var filteredObj = {};
972
- var allKeys = Object.keys(object);
973
- if (allKeys.length > 0) {
974
- filteredObj['Module'] = 'Marketing';
975
- allKeys.forEach(function (key) {
976
- if (key != "CreatedBy" && key != "IsActive" && key != "IsDefault" && key != "ModifiedDate" && key != "_id" && key != 'CreatedDate') {
977
- if (Array.isArray(object[key])) {
978
- var allImages_1 = [];
979
- object[key].forEach(function (obj) {
980
- var imageObj = { 'Name': obj.FileName, 'Size': utility_1.ConvertFileByteSize(parseInt(obj.FileSize)), 'CreatedDate': obj.CreatedDate };
981
- obj.dimensions ? imageObj['Dimensions'] = obj.dimensions : '';
982
- allImages_1.push(imageObj);
983
- });
984
- filteredObj['Images'] = allImages_1;
985
- }
986
- else if (key == 'FolderName') {
987
- filteredObj['Name'] = object[key];
988
- filteredObj['FolderName'] = object[key];
989
- }
990
- else {
991
- filteredObj[key] = object[key];
992
- }
993
- }
994
- });
995
- }
996
- return filteredObj;
997
- };
998
- var mapTemplateObject = function (object, status) {
999
- var filteredObj = {};
1000
- (object.TemplateBlockName) ? filteredObj['Name'] = object.TemplateBlockName : '';
1001
- (object.CreatedDate) ? filteredObj['CreatedDate'] = object.CreatedDate : '';
1002
- if (status && status.length > 0) {
1003
- filteredObj['Module'] = 'Marketing Template Editor';
1004
- filteredObj['Status'] = status;
1005
- }
1006
- return filteredObj;
1007
- };
1008
- var mapRecipientList = function (object, status) {
1009
- var filteredObj = {};
1010
- (object.Name) ? filteredObj['Name'] = object.Name : '';
1011
- (object.CreatedDate) ? filteredObj['CreatedDate'] = object.CreatedDate : '';
1012
- (object.Count) ? filteredObj['RecipientCount'] = object.Count : '';
1013
- if (object.AddedReceiptent) {
1014
- var newRecipient_1 = JSON.parse(JSON.stringify(object.AddedReceiptent));
1015
- var metaDataKeys_1 = ["IsValidEmail", "RowNo", "PrimaryKey", "RecipientsListId", "IsActive", "_id"];
1016
- filteredObj['AddedReceiptent'] = {};
1017
- Object.keys(newRecipient_1).forEach(function (key) {
1018
- if (!metaDataKeys_1.includes(key)) {
1019
- console.log(filteredObj['AddedReceiptent'], "casdcsdcasdcasdcasdca------sdcsacdasdcasdc");
1020
- filteredObj['AddedReceiptent'][key] = newRecipient_1[key];
1021
- }
1022
- });
1023
- }
1024
- if (status && status.length > 0) {
1025
- filteredObj['Module'] = 'Marketing';
1026
- filteredObj['Status'] = status;
1027
- }
1028
- return filteredObj;
1029
- };
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ var __importDefault = (this && this.__importDefault) || function (mod) {
73
+ return (mod && mod.__esModule) ? mod : { "default": mod };
74
+ };
75
+ Object.defineProperty(exports, "__esModule", { value: true });
76
+ exports.createSessionLogs = exports.generateLog = void 0;
77
+ var checklogtable_1 = __importDefault(require("./checklogtable"));
78
+ var constants_1 = __importDefault(require("../constants"));
79
+ var _utility = __importStar(require("../lib/utility"));
80
+ var mongodb_1 = __importDefault(require("mongodb"));
81
+ var promise_allsettled_1 = __importDefault(require("promise.allsettled"));
82
+ var bson_1 = require("bson");
83
+ var utility_1 = require("../lib/utility");
84
+ var log_enum_1 = require("../enums/log.enum");
85
+ /**
86
+ *
87
+ *
88
+ *
89
+ * Created By : Ansh
90
+ * Parameter Required :
91
+ * logobj(log object)
92
+ {
93
+ "EventType":"<TypeOfChange>", Default value: Required value can't be empty type string "Create/Delete/Update"
94
+ "Module":"<ModuleChanged>", Default value: Required value can't be empty type string "Account/Contact/Pipeline"
95
+ "OldValue":"<OldValueObject>", Default value: Required value can't be empty type Object
96
+ "NewValue":"<NewValue>", Default value: Required value can't be empty type object
97
+ }
98
+ * keysToDisplay if you want to display only certain keys in logs object rather than the entire object in a collection
99
+ * req Request (For db refrerence)
100
+ * @param {Request (For Database Reference)} req
101
+ * @param { Log object } logObject
102
+ * @param {if you want to display only certain keys in logs object rather than the entire object in a collection } keysToDisplay
103
+ * @param { Connection to logs database }
104
+ */
105
+ var generateLog = function (req, logObject, keysToDisplay, logsDbConnetion) {
106
+ if (keysToDisplay === void 0) { keysToDisplay = []; }
107
+ return __awaiter(void 0, void 0, void 0, function () {
108
+ var db, ip, _a, userName, userEmail, companyID, allLogsPromisses, templateStatus, _b, i, oldValue, newValue, comparedObj, i, i, comparedObj, oldObject_1, newObject_1, newObject, oldObject, i, oldObject_2, newObject_2, i, oldObject_3, newObject_3, comparedObj, i, oldObject_4, newObject_4, i, mapedNewObj, mapedOldObj, comparedObj, i, comparedObj, e_1;
109
+ return __generator(this, function (_c) {
110
+ switch (_c.label) {
111
+ case 0:
112
+ _c.trys.push([0, 21, , 22]);
113
+ db = global['dbConnections'][req.DBName];
114
+ return [4 /*yield*/, getIPLocationDetails(req)];
115
+ case 1:
116
+ ip = _c.sent();
117
+ _a = req.cookies.msp_d, userName = _a.username, userEmail = _a.useremail, companyID = _a.ci;
118
+ allLogsPromisses = [];
119
+ templateStatus = void 0;
120
+ return [4 /*yield*/, removeExtraKeys(logObject, keysToDisplay)];
121
+ case 2:
122
+ logObject = (_c.sent());
123
+ _b = logObject.EventType;
124
+ switch (_b) {
125
+ case log_enum_1.EventType.CalendarAdd: return [3 /*break*/, 3];
126
+ case log_enum_1.EventType.CalendarUpdate: return [3 /*break*/, 3];
127
+ case log_enum_1.EventType.CalendarDelete: return [3 /*break*/, 3];
128
+ case log_enum_1.EventType.DriveAdd: return [3 /*break*/, 9];
129
+ case log_enum_1.EventType.DriveUpdate: return [3 /*break*/, 9];
130
+ case log_enum_1.EventType.DriveDelete: return [3 /*break*/, 9];
131
+ case log_enum_1.EventType.ContentStudioAdd: return [3 /*break*/, 15];
132
+ case log_enum_1.EventType.ContentStudioUpdate: return [3 /*break*/, 15];
133
+ case log_enum_1.EventType.ContentStudioDelete: return [3 /*break*/, 15];
134
+ case log_enum_1.EventType.TemplateAdd: return [3 /*break*/, 16];
135
+ case log_enum_1.EventType.TemplateUpdate: return [3 /*break*/, 16];
136
+ case log_enum_1.EventType.TemplateDelete: return [3 /*break*/, 16];
137
+ case log_enum_1.EventType.RecipientListAdd: return [3 /*break*/, 17];
138
+ case log_enum_1.EventType.RecipientListDelete: return [3 /*break*/, 17];
139
+ case log_enum_1.EventType.RecipientListUpdate: return [3 /*break*/, 17];
140
+ case log_enum_1.EventType.SingleRecipientAdded: return [3 /*break*/, 17];
141
+ case log_enum_1.EventType.AddTag: return [3 /*break*/, 18];
142
+ }
143
+ return [3 /*break*/, 19];
144
+ case 3:
145
+ switch (logObject.EventType) {
146
+ case log_enum_1.EventType.CalendarAdd:
147
+ logObject.EventType = log_enum_1.EventType.Add;
148
+ break;
149
+ case log_enum_1.EventType.CalendarUpdate:
150
+ logObject.EventType = log_enum_1.EventType.Update;
151
+ break;
152
+ case log_enum_1.EventType.CalendarDelete:
153
+ logObject.EventType = log_enum_1.EventType.Delete;
154
+ break;
155
+ }
156
+ i = 0;
157
+ _c.label = 4;
158
+ case 4:
159
+ if (!(i < logObject.NewValue.length)) return [3 /*break*/, 8];
160
+ return [4 /*yield*/, mapAttendeesData(logObject.OldValue[i], req)];
161
+ case 5:
162
+ oldValue = _c.sent();
163
+ return [4 /*yield*/, mapAttendeesData(logObject.NewValue[i], req)];
164
+ case 6:
165
+ newValue = _c.sent();
166
+ comparedObj = comparePreviousAndNewObject(oldValue, newValue);
167
+ allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
168
+ _c.label = 7;
169
+ case 7:
170
+ ++i;
171
+ return [3 /*break*/, 4];
172
+ case 8:
173
+ ;
174
+ (0, promise_allsettled_1.default)(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
175
+ return [3 /*break*/, 20];
176
+ case 9:
177
+ switch (logObject.EventType) {
178
+ case log_enum_1.EventType.DriveAdd:
179
+ logObject.EventType = log_enum_1.EventType.Add;
180
+ break;
181
+ case log_enum_1.EventType.DriveUpdate:
182
+ logObject.EventType = log_enum_1.EventType.Update;
183
+ break;
184
+ case log_enum_1.EventType.DriveDelete:
185
+ logObject.EventType = log_enum_1.EventType.Delete;
186
+ break;
187
+ }
188
+ i = 0;
189
+ _c.label = 10;
190
+ case 10:
191
+ if (!(i < logObject.NewValue.length)) return [3 /*break*/, 14];
192
+ return [4 /*yield*/, mapDriveFolderIdToFolderName(logObject.NewValue[i], db)];
193
+ case 11:
194
+ _c.sent();
195
+ return [4 /*yield*/, mapDriveFolderIdToFolderName(logObject.OldValue[i], db)];
196
+ case 12:
197
+ _c.sent();
198
+ allLogsPromisses.push(createLogs(companyID, logObject.OldValue[i], logObject.NewValue[i], logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
199
+ _c.label = 13;
200
+ case 13:
201
+ ++i;
202
+ return [3 /*break*/, 10];
203
+ case 14:
204
+ ;
205
+ (0, promise_allsettled_1.default)(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
206
+ return [3 /*break*/, 20];
207
+ case 15:
208
+ switch (logObject.EventType) {
209
+ case log_enum_1.EventType.ContentStudioAdd:
210
+ logObject.EventType = log_enum_1.EventType.Add;
211
+ break;
212
+ case log_enum_1.EventType.ContentStudioUpdate:
213
+ logObject.EventType = log_enum_1.EventType.Update;
214
+ break;
215
+ case log_enum_1.EventType.ContentStudioDelete:
216
+ logObject.EventType = log_enum_1.EventType.Delete;
217
+ break;
218
+ }
219
+ for (i = 0; i < logObject.NewValue.length; ++i) {
220
+ comparedObj = comparePreviousAndNewObject(logObject.OldValue[i], logObject.NewValue[i]);
221
+ oldObject_1 = mapContentStudioObject(comparedObj.previousObj);
222
+ newObject_1 = mapContentStudioObject(comparedObj.updatedObj);
223
+ allLogsPromisses.push(createLogs(companyID, oldObject_1, newObject_1, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
224
+ }
225
+ (0, promise_allsettled_1.default)(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
226
+ return [3 /*break*/, 20];
227
+ case 16:
228
+ newObject = void 0;
229
+ oldObject = void 0;
230
+ switch (logObject.EventType) {
231
+ case log_enum_1.EventType.TemplateAdd:
232
+ logObject.EventType = log_enum_1.EventType.Add;
233
+ templateStatus = 'Template Added';
234
+ oldObject = mapTemplateObject(logObject.OldValue[0], '');
235
+ newObject = mapTemplateObject(logObject.NewValue[0], templateStatus);
236
+ break;
237
+ case log_enum_1.EventType.TemplateUpdate:
238
+ logObject.EventType = log_enum_1.EventType.Update;
239
+ templateStatus = 'Template Updated';
240
+ oldObject = mapTemplateObject(logObject.OldValue[0], '');
241
+ newObject = mapTemplateObject(logObject.NewValue[0], templateStatus);
242
+ break;
243
+ case log_enum_1.EventType.TemplateDelete:
244
+ logObject.EventType = log_enum_1.EventType.Update;
245
+ templateStatus = 'Template Deleted';
246
+ oldObject = mapTemplateObject(logObject.OldValue[0], templateStatus);
247
+ newObject = mapTemplateObject(logObject.NewValue[0], '');
248
+ break;
249
+ }
250
+ allLogsPromisses.push(createLogs(companyID, oldObject, newObject, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
251
+ return [3 /*break*/, 20];
252
+ case 17:
253
+ switch (logObject.EventType) {
254
+ case log_enum_1.EventType.RecipientListAdd:
255
+ logObject.EventType = log_enum_1.EventType.Add;
256
+ status = 'Recipient List Added';
257
+ for (i = 0; i < logObject.NewValue.length; i++) {
258
+ oldObject_2 = {};
259
+ newObject_2 = mapRecipientList(logObject.NewValue[i], status);
260
+ allLogsPromisses.push(createLogs(companyID, oldObject_2, newObject_2, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
261
+ }
262
+ (0, promise_allsettled_1.default)(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
263
+ break;
264
+ case log_enum_1.EventType.SingleRecipientAdded:
265
+ logObject.EventType = log_enum_1.EventType.Add;
266
+ status = 'Recipient Added';
267
+ for (i = 0; i < logObject.NewValue.length; i++) {
268
+ oldObject_3 = logObject.OldValue[i];
269
+ oldObject_3 = mapRecipientList(logObject.OldValue[i], '');
270
+ newObject_3 = mapRecipientList(logObject.NewValue[i], status);
271
+ comparedObj = comparePreviousAndNewObject(oldObject_3, newObject_3);
272
+ allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
273
+ }
274
+ (0, promise_allsettled_1.default)(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
275
+ break;
276
+ case log_enum_1.EventType.RecipientListDelete:
277
+ logObject.EventType = log_enum_1.EventType.Delete;
278
+ status = 'Template Deleted';
279
+ for (i = 0; i < logObject.OldValue.length; i++) {
280
+ oldObject_4 = mapRecipientList(logObject.OldValue[i], status);
281
+ newObject_4 = {};
282
+ allLogsPromisses.push(createLogs(companyID, oldObject_4, newObject_4, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
283
+ }
284
+ break;
285
+ }
286
+ return [3 /*break*/, 20];
287
+ case 18:
288
+ logObject.EventType = log_enum_1.EventType.Add;
289
+ for (i = 0; i < logObject.NewValue.length; i++) {
290
+ mapedNewObj = mapTagObject(logObject.NewValue[i]);
291
+ mapedOldObj = mapTagObject(logObject.OldValue[i]);
292
+ addNameFieldToObject(logObject.NewValue[i], mapedNewObj);
293
+ addNameFieldToObject(logObject.OldValue[i], mapedOldObj);
294
+ comparedObj = comparePreviousAndNewObject(mapedOldObj, mapedNewObj);
295
+ allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
296
+ }
297
+ (0, promise_allsettled_1.default)(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
298
+ return [3 /*break*/, 20];
299
+ case 19:
300
+ for (i = 0; i < logObject.OldValue.length; ++i) {
301
+ comparedObj = { previousObj: {}, updatedObj: logObject.NewValue[i] };
302
+ if (logObject.EventType != log_enum_1.EventType.Delete)
303
+ comparedObj = comparePreviousAndNewObject(logObject.OldValue[i], logObject.NewValue[i]);
304
+ allLogsPromisses.push(createLogs(companyID, comparedObj.previousObj, comparedObj.updatedObj, logObject.Module, logObject.EventType, logObject.Schema.Fields, userName, userEmail, ip, req, logsDbConnetion));
305
+ }
306
+ ;
307
+ (0, promise_allsettled_1.default)(allLogsPromisses).then(function (status) { return console.log("Logs Inserted To DataBase", status); });
308
+ _c.label = 20;
309
+ case 20: return [3 /*break*/, 22];
310
+ case 21:
311
+ e_1 = _c.sent();
312
+ console.log('Error Occured While Createing Log:', e_1);
313
+ return [3 /*break*/, 22];
314
+ case 22: return [2 /*return*/];
315
+ }
316
+ });
317
+ });
318
+ };
319
+ exports.generateLog = generateLog;
320
+ var mapTagObject = function (object) {
321
+ var obj = { Tags: [] };
322
+ if (object && object.Tag_LookupData) {
323
+ for (var i = 0; i < object.Tag_LookupData.length; ++i) {
324
+ var TagObj = {};
325
+ if (object.Tag_LookupData[i].Name) {
326
+ TagObj['TagName'] = object.Tag_LookupData[i].Name;
327
+ }
328
+ if (object.Tag_LookupData[i].UserDetail) {
329
+ TagObj['TagOwner'] = object.Tag_LookupData[i].UserDetail.FirstName + ' ' + object.Tag_LookupData[i].UserDetail.LastName;
330
+ }
331
+ obj.Tags.push(TagObj);
332
+ }
333
+ }
334
+ return obj;
335
+ };
336
+ /**
337
+ * CreatedBy Ansh
338
+ * @param {CompanyId in String Format } companyID
339
+ * @param {logObject (OldValue) } oldObjValue
340
+ * @param {logObject (NewValue) } newObjValue
341
+ * @param {logObject Module (ModuleName)} module
342
+ * @param {logObject EventType (add/update/delete/calanderAdd/..)} eventType
343
+ * @param {logObject ObjectSchema (Fields in Schema of Object to be loged)} schemaFields
344
+ * @param { User's Name } userName
345
+ * @param {User's Email} userEmail
346
+ * @param {User's Ip} ip
347
+ * @param {Request for database name } req
348
+ *
349
+ * Main Log Function that Map's Field as per object schema and insert log into the mysql database
350
+ *
351
+ */
352
+ var createLogs = function (companyID, oldObjValue, newObjValue, module, eventType, schemaFields, userName, userEmail, ip, req, sequelize) {
353
+ return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
354
+ var TableName, convertedObj, cleanNewValue, cleanOldValue, changeField, strOldValue, strNewValue, quoteOldValue, quoteNewValue, oldValue, newValue, query, SaveToDB;
355
+ return __generator(this, function (_a) {
356
+ switch (_a.label) {
357
+ case 0:
358
+ TableName = "log-".concat(companyID.toString());
359
+ return [4 /*yield*/, restoreFieldsAsPerObjectSchema(oldObjValue, newObjValue, schemaFields, req)];
360
+ case 1:
361
+ convertedObj = _a.sent();
362
+ cleanNewValue = removeLookupFields(convertedObj.updatedObj);
363
+ cleanOldValue = removeLookupFields(convertedObj.previousObj);
364
+ return [4 /*yield*/, (0, checklogtable_1.default)(TableName, sequelize)];
365
+ case 2:
366
+ _a.sent();
367
+ if (cleanNewValue.Message)
368
+ cleanNewValue.Message = JSON.stringify(cleanNewValue.Message).replace(/\"/g, "");
369
+ if (cleanOldValue.Message)
370
+ cleanOldValue.Message = JSON.stringify(cleanOldValue.Message).replace(/\"/g, "");
371
+ changeField = Object.keys(cleanNewValue).length > 0 ? Object.keys(cleanNewValue).join(',') : Object.keys(cleanOldValue).join(',');
372
+ strOldValue = JSON.stringify(cleanOldValue);
373
+ strNewValue = JSON.stringify(cleanNewValue);
374
+ quoteOldValue = strOldValue.replace(/'/g, "\\'");
375
+ quoteNewValue = strNewValue.replace(/'/g, "\\'");
376
+ oldValue = "'".concat(quoteOldValue, "'");
377
+ newValue = "'".concat(quoteNewValue, "'");
378
+ TableName = "`" + TableName + "s`";
379
+ if (!(Object.keys(cleanNewValue).length > 0 || Object.keys(cleanOldValue).length > 0)) return [3 /*break*/, 4];
380
+ query = "INSERT INTO ".concat(TableName, " (CompanyID,UserName,UserEmail,IPAddress,TypeOfChange,ChangeField,Module,OldValue,NewValue) VALUES (\"").concat(companyID, "\",\"").concat(userName, "\",\"").concat(userEmail, "\",\"").concat(ip, "\",\"").concat(eventType, "\",\"").concat(changeField, "\",\"").concat(module, "\",").concat(oldValue, ",").concat(newValue, ")");
381
+ return [4 /*yield*/, sequelize.query(query)];
382
+ case 3:
383
+ SaveToDB = _a.sent();
384
+ resolve(SaveToDB);
385
+ _a.label = 4;
386
+ case 4:
387
+ resolve();
388
+ return [2 /*return*/];
389
+ }
390
+ });
391
+ }); });
392
+ };
393
+ var createSessionLogs = function (req, logDetails, sequelize) { return __awaiter(void 0, void 0, void 0, function () {
394
+ return __generator(this, function (_a) {
395
+ return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
396
+ var CompanyId, TableName, _a, _b, LogType, UserName, UserEmail, IPAddress, Browser, Status, Platform, Application, query, SaveToDB;
397
+ return __generator(this, function (_c) {
398
+ switch (_c.label) {
399
+ case 0:
400
+ CompanyId = logDetails.CompanyId;
401
+ TableName = "log-".concat(CompanyId.toString());
402
+ return [4 /*yield*/, (0, checklogtable_1.default)(TableName, sequelize)];
403
+ case 1:
404
+ _c.sent();
405
+ TableName = "`" + TableName + "s`";
406
+ console.log('log detail', logDetails);
407
+ _a = logDetails;
408
+ _b = 'IPAddress';
409
+ return [4 /*yield*/, getIPLocationDetails(req)];
410
+ case 2:
411
+ _a[_b] = (_c.sent());
412
+ LogType = logDetails.LogType, UserName = logDetails.UserName, UserEmail = logDetails.UserEmail, IPAddress = logDetails.IPAddress, Browser = logDetails.Browser, Status = logDetails.Status, Platform = logDetails.Platform, Application = logDetails.Application;
413
+ LogType = LogType ? LogType : 'session';
414
+ query = "INSERT INTO ".concat(TableName, " (CompanyID,UserName,UserEmail,IPAddress,Browser,Status,Platform,Application,LogType) VALUES (\"").concat(CompanyId, "\",\"").concat(UserName, "\",\"").concat(UserEmail, "\",\"").concat(IPAddress, "\",\"").concat(Browser, "\",\"").concat(Status, "\",\"").concat(Platform, "\",\"").concat(Application, "\",\"").concat(LogType, "\")");
415
+ return [4 /*yield*/, sequelize.query(query)];
416
+ case 3:
417
+ SaveToDB = _c.sent();
418
+ resolve(SaveToDB);
419
+ return [2 /*return*/];
420
+ }
421
+ });
422
+ }); })];
423
+ });
424
+ }); };
425
+ exports.createSessionLogs = createSessionLogs;
426
+ // Converts Object To String To View Data In Audit Log Grid
427
+ // const convertObjectToDisplayAbleString = ( object )=>{
428
+ // let Accumalator = [];
429
+ // Object.keys(object).forEach((key, index) => {
430
+ // Accumalator.push(`${key} has been changed to ${object[key]}`)
431
+ // });
432
+ // return Accumalator.join(',')
433
+ // }
434
+ /**
435
+ *
436
+ * @param { Log NewObject/OldObject } object
437
+ * @param { filterObject to be returned } objectToSet
438
+ * To Add a mendatory field Name to the object
439
+ *
440
+ */
441
+ var addNameFieldToObject = function (object, objectToSet) {
442
+ var allKeys = Object.keys(object);
443
+ if (!allKeys.find(function (key) { return key == 'Name'; })) {
444
+ if (allKeys.find(function (key) { return key == 'FirstName'; }) && allKeys.find(function (key) { return key == 'LastName'; })) {
445
+ objectToSet['Name'] = object['FirstName'] + ' ' + object['LastName'];
446
+ }
447
+ else if (allKeys.find(function (key) { return key == 'Title'; })) {
448
+ objectToSet['Name'] = object['Title'];
449
+ }
450
+ else if (allKeys.find(function (key) { return key == 'Subject'; })) {
451
+ objectToSet['Name'] = object['Subject'];
452
+ }
453
+ else if (allKeys.find(function (key) { return key == 'FolderName'; })) {
454
+ objectToSet['Name'] = object['FolderName'];
455
+ }
456
+ else if (allKeys.find(function (key) { return key == 'BranchCode'; })) {
457
+ objectToSet['Name'] = object['BranchCode'];
458
+ }
459
+ else if (Object.keys(objectToSet).find(function (key) { return key == 'Contact'; })) {
460
+ objectToSet['Name'] = objectToSet['Contact'];
461
+ }
462
+ else if (allKeys.find(function (key) { return key == 'ContactID_LookupData'; })) {
463
+ objectToSet['Name'] = object['ContactID_LookupData']['FirstName'] + ' ' + object['ContactID_LookupData']['LastName'];
464
+ }
465
+ }
466
+ else {
467
+ objectToSet['Name'] = object['Name'];
468
+ }
469
+ };
470
+ /**
471
+ *
472
+ * @param {old state object ( previous object )} previousObject
473
+ * @param {new state object ( new object )} newObject
474
+ * Returns the Updated Object and Previous Object
475
+ *
476
+ */
477
+ var comparePreviousAndNewObject = function (previousObject, newObject) {
478
+ var comparedObject = { 'updatedObj': {}, 'previousObj': {} };
479
+ (previousObject && previousObject.Name) ? comparedObject['previousObj']['Name'] = previousObject['Name'] : addNameFieldToObject(previousObject, comparedObject['previousObj']);
480
+ (newObject && newObject.Name) ? comparedObject['updatedObj']['Name'] = newObject['Name'] : addNameFieldToObject(newObject, comparedObject['updatedObj']);
481
+ if (!_utility.IsEqualValue(previousObject, newObject)) {
482
+ Object.keys(previousObject).forEach(function (key) {
483
+ if (key != 'IsActive' && !key.includes(constants_1.default.LookupAlias)) {
484
+ (newObject[key] == null && Array.isArray(previousObject[key])) ? newObject[key] = [] : '';
485
+ if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length !== newObject[key].length && previousObject[key].length != 0) {
486
+ comparedObject['previousObj'][key] = previousObject[key];
487
+ }
488
+ else if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length === newObject[key].length) {
489
+ for (var i = 0; i < previousObject[key].length; i++) {
490
+ if (objectsEqual(previousObject[key][i], newObject[key][i]) == false) {
491
+ comparedObject['previousObj'][key] = previousObject[key];
492
+ break;
493
+ }
494
+ }
495
+ }
496
+ if (!Array.isArray(previousObject[key]) && JSON.stringify(previousObject[key]) !== JSON.stringify(newObject[key])) {
497
+ comparedObject['previousObj'][key] = JSON.parse(JSON.stringify(previousObject[key]));
498
+ }
499
+ }
500
+ else if (key.includes(constants_1.default.LookupAlias)) {
501
+ comparedObject['previousObj'][key] = JSON.parse(JSON.stringify(previousObject[key]));
502
+ }
503
+ });
504
+ Object.keys(newObject).forEach(function (key) {
505
+ if (key != 'IsActive' && !key.includes(constants_1.default.LookupAlias)) {
506
+ (previousObject[key] == null && Array.isArray(newObject[key])) ? previousObject[key] = [] : '';
507
+ if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length !== newObject[key].length && newObject[key].length != 0) {
508
+ comparedObject['updatedObj'][key] = newObject[key];
509
+ }
510
+ else if (Array.isArray(previousObject[key]) && Array.isArray(newObject[key]) && previousObject[key].length === newObject[key].length) {
511
+ for (var i = 0; i < previousObject[key].length; i++) {
512
+ if (objectsEqual(previousObject[key][i], newObject[key][i]) == false) {
513
+ comparedObject['updatedObj'][key] = newObject[key];
514
+ break;
515
+ }
516
+ }
517
+ }
518
+ if (!Array.isArray(newObject[key]) && JSON.stringify(previousObject[key]) !== JSON.stringify(newObject[key])) {
519
+ comparedObject['updatedObj'][key] = JSON.parse(JSON.stringify(newObject[key]));
520
+ }
521
+ }
522
+ else if (key.includes(constants_1.default.LookupAlias)) {
523
+ comparedObject['updatedObj'][key] = JSON.parse(JSON.stringify(newObject[key]));
524
+ }
525
+ });
526
+ }
527
+ return comparedObject;
528
+ };
529
+ var objectsEqual = function (o1, o2) { return Object.keys(o1).length === Object.keys(o2).length && Object.keys(o1).every(function (p) { return o1[p] === o2[p]; }); };
530
+ /**
531
+ *
532
+ * @param { old state object ( previous object ) } previousObjects
533
+ * @param { new state object ( new object ) } newObject
534
+ * @param { object schema fields } schema
535
+ * @param { request } req
536
+ */
537
+ var restoreFieldsAsPerObjectSchema = function (previousObjects, newObject, schema, req) {
538
+ return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
539
+ var restoredObject, _a, _b, _c, _d;
540
+ return __generator(this, function (_e) {
541
+ switch (_e.label) {
542
+ case 0:
543
+ restoredObject = { previousObj: {}, updatedObj: {} };
544
+ _a = restoredObject;
545
+ _b = 'previousObj';
546
+ return [4 /*yield*/, convertAndReturnValuesAsPerObjectSchema(previousObjects, schema, req)];
547
+ case 1:
548
+ _a[_b] = (_e.sent());
549
+ _c = restoredObject;
550
+ _d = 'updatedObj';
551
+ return [4 /*yield*/, convertAndReturnValuesAsPerObjectSchema(newObject, schema, req)];
552
+ case 2:
553
+ _c[_d] = (_e.sent());
554
+ resolve(restoredObject);
555
+ return [2 /*return*/];
556
+ }
557
+ });
558
+ }); });
559
+ };
560
+ /**
561
+ *
562
+ * @param { old/new object } object
563
+ * @param { current key to be checked } key
564
+ * @param { object schema } schema
565
+ * @param { restoredObject (clean object to be returned after mapping the lookup fields) } restoredObject
566
+ * @param { request } req
567
+ *
568
+ *
569
+ */
570
+ var checkForLookupAndListSchema = function (object, key, schema, restoredObject, req) {
571
+ return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
572
+ var objectid, objSchema, schemalookupfieldsDisplayValue_1, DisplayableName, value_1, db, objSchema, DisplayableName, ListSchema_1, DisplayAbleValue_1, previousListSchemaData, valueToDisplay_1, db, UserInfo, valueToDisplay_2, objSchema, schemalookupfieldsDisplayValue_2, DisplayableName, value_2;
573
+ return __generator(this, function (_a) {
574
+ switch (_a.label) {
575
+ case 0:
576
+ objectid = mongodb_1.default.ObjectId;
577
+ if (!(schema.find(function (o) { return o.Name == key && o.LookupFields && o.LookupFields.length > 0; }) && key !== 'Tag')) return [3 /*break*/, 1];
578
+ objSchema = schema.find(function (o) { return o.Name == key; });
579
+ schemalookupfieldsDisplayValue_1 = objSchema.LookupFields;
580
+ DisplayableName = objSchema.DisplayName;
581
+ value_1 = '';
582
+ if (key == 'Product') {
583
+ restoredObject['Name'] = object[key + constants_1.default.LookupAlias]['Name'];
584
+ }
585
+ if (Array.isArray(object["".concat(key.toString() + constants_1.default.LookupAlias)]) && object["".concat(key.toString() + constants_1.default.LookupAlias)].length > 0) {
586
+ object["".concat(key.toString() + constants_1.default.LookupAlias)].forEach(function (obj) {
587
+ Object.keys(obj).forEach(function (lookupfield) {
588
+ if (schemalookupfieldsDisplayValue_1.find(function (o) { return o.toString() == lookupfield.toString(); })) {
589
+ value_1 += obj[lookupfield] + " ";
590
+ }
591
+ });
592
+ });
593
+ restoredObject[DisplayableName] = value_1;
594
+ }
595
+ else {
596
+ if (object["".concat(key.toString() + constants_1.default.LookupAlias)] != null && Object.keys(object["".concat(key.toString() + constants_1.default.LookupAlias)]).length > 1) {
597
+ Object.keys(object["".concat(key.toString() + constants_1.default.LookupAlias)]).forEach(function (lookupfield) {
598
+ if (schemalookupfieldsDisplayValue_1.find(function (o) { return o.toString() == lookupfield.toString(); })) {
599
+ value_1 += object["".concat(key.toString() + constants_1.default.LookupAlias)][lookupfield] + " ";
600
+ }
601
+ });
602
+ }
603
+ restoredObject[DisplayableName] = value_1;
604
+ }
605
+ return [3 /*break*/, 12];
606
+ case 1:
607
+ if (!schema.find(function (o) { return o.Name == key && o.ListSchemaName; })) return [3 /*break*/, 6];
608
+ db = global['dbConnections'][req.DBName];
609
+ objSchema = schema.find(function (o) { return o.Name == key; });
610
+ DisplayableName = objSchema.DisplayName;
611
+ return [4 /*yield*/, db.collection('ListSchema').findOne({
612
+ Name: objSchema.ListSchemaName
613
+ })];
614
+ case 2:
615
+ ListSchema_1 = _a.sent();
616
+ if (!ListSchema_1) return [3 /*break*/, 5];
617
+ if (!Array.isArray(object[key])) return [3 /*break*/, 4];
618
+ DisplayAbleValue_1 = '';
619
+ return [4 /*yield*/, object[key].forEach(function (k) {
620
+ var previousListSchemaData = ListSchema_1.Data.find(function (o) { return o.Key == k; });
621
+ if (previousListSchemaData) {
622
+ DisplayAbleValue_1 += previousListSchemaData.Value + ' ';
623
+ }
624
+ })];
625
+ case 3:
626
+ _a.sent();
627
+ restoredObject[DisplayableName] = DisplayAbleValue_1;
628
+ return [3 /*break*/, 5];
629
+ case 4:
630
+ previousListSchemaData = ListSchema_1.Data.find(function (o) { return o.Key == object[key]; });
631
+ if (previousListSchemaData) {
632
+ restoredObject[DisplayableName] = previousListSchemaData.Value;
633
+ }
634
+ _a.label = 5;
635
+ case 5: return [3 /*break*/, 12];
636
+ case 6:
637
+ if (!(object[key.toString() + constants_1.default.LookupAlias] && !Object.keys(object).find(function (o) { return o == 'Name'; }) || (object[key.toString() + constants_1.default.LookupAlias] && key == 'Tag_LookupData'))) return [3 /*break*/, 7];
638
+ valueToDisplay_1 = "";
639
+ if (key == 'Tag_LookupData') {
640
+ restoredObject['TagName'] = object[key]['Name'];
641
+ }
642
+ if (object['ObjectSchemaName']) {
643
+ restoredObject['Module'] = object['ObjectSchemaName'];
644
+ delete object['ObjectSchemaName'];
645
+ }
646
+ delete object['ObjectSchemaID'];
647
+ Object.keys(object[key.toString() + constants_1.default.LookupAlias]).forEach(function (k) {
648
+ if (k != 'IsActive' && k != '_id') {
649
+ valueToDisplay_1 += " " + object[key.toString() + constants_1.default.LookupAlias][k];
650
+ }
651
+ });
652
+ restoredObject['Name'] = valueToDisplay_1;
653
+ return [3 /*break*/, 12];
654
+ case 7:
655
+ if (!(key == "ObjectSchemaName")) return [3 /*break*/, 8];
656
+ restoredObject['Module'] = object["ObjectSchemaName"];
657
+ delete object['ObjectSchemaName'];
658
+ return [3 /*break*/, 12];
659
+ case 8:
660
+ if (!(key == "ObjectSchemaID")) return [3 /*break*/, 9];
661
+ delete object["ObjectSchemaID"];
662
+ return [3 /*break*/, 12];
663
+ case 9:
664
+ if (!(key == 'CreatedBy' && objectid.isValid(object[key]) || key == 'ModifiedBy' && objectid.isValid(object[key]))) return [3 /*break*/, 11];
665
+ db = global['dbConnections'][req.DBName];
666
+ return [4 /*yield*/, db.collection('User').findOne({
667
+ _id: new mongodb_1.default.ObjectId(object[key])
668
+ })];
669
+ case 10:
670
+ UserInfo = _a.sent();
671
+ if (UserInfo && UserInfo.FirstName && UserInfo.LastName) {
672
+ restoredObject[key] = UserInfo.FirstName + ' ' + UserInfo.LastName;
673
+ }
674
+ return [3 /*break*/, 12];
675
+ case 11:
676
+ if (!Array.isArray(object[key]) && typeof object[key] == "object" && bson_1.EJSON.parse(JSON.stringify(object[key])) && !key.toLowerCase().includes('date') && !object[key.toString() + constants_1.default.LookupAlias] && key !== 'ColumnList' && key != 'SearchAddress' && key != "AddedReceiptent") {
677
+ (object[key]['$numberDecimal']) ? restoredObject[key] = object[key]['$numberDecimal'] : restoredObject[key] = object[key].toString();
678
+ }
679
+ else if (key == "IsHeadOffice") {
680
+ restoredObject['HeadOffice'] = object[key] == true ? 'yes' : 'no';
681
+ }
682
+ else if (key == 'Document') {
683
+ valueToDisplay_2 = '';
684
+ Object.keys(object[key.toString() + constants_1.default.LookupAlias]).forEach(function (k) {
685
+ if (k != 'IsActive' && k != '_id') {
686
+ valueToDisplay_2 += " " + object[key.toString() + constants_1.default.LookupAlias][k];
687
+ }
688
+ });
689
+ restoredObject[key] = valueToDisplay_2;
690
+ }
691
+ else if (key == 'Product') {
692
+ restoredObject['Name'] = object[key]["Name"];
693
+ }
694
+ else if (key == 'Tag' && Array.isArray(object['Tag' + constants_1.default.LookupAlias])) {
695
+ objSchema = schema.find(function (o) { return o.Name == key; });
696
+ schemalookupfieldsDisplayValue_2 = objSchema.LookupFields;
697
+ DisplayableName = objSchema.DisplayName;
698
+ value_2 = '';
699
+ object["".concat(key.toString() + constants_1.default.LookupAlias)].forEach(function (obj) {
700
+ Object.keys(obj).forEach(function (lookupfield) {
701
+ if (schemalookupfieldsDisplayValue_2.find(function (o) { return o.toString() == lookupfield.toString(); })) {
702
+ value_2 += obj[lookupfield] + " ";
703
+ }
704
+ });
705
+ });
706
+ restoredObject[DisplayableName] = value_2;
707
+ }
708
+ else if (key != "SearchAddress" && key !== 'IsActive' && key !== "RelationID" && key !== "OperaProfileId" && key !== 'ColumnList' && key !== 'CompanyID' && key !== 'TemplateID' && key != 'TemplateBlockContent' && key != 'TemplateEmailContent') {
709
+ restoredObject[key] = object[key];
710
+ }
711
+ _a.label = 12;
712
+ case 12:
713
+ addNameFieldToObject(object, restoredObject);
714
+ resolve(restoredObject);
715
+ return [2 /*return*/];
716
+ }
717
+ });
718
+ }); });
719
+ };
720
+ /**
721
+ *
722
+ * @param { new/Old Value } object
723
+ * @param { object schema field } schema
724
+ * @param { request } req
725
+ *
726
+ */
727
+ var convertAndReturnValuesAsPerObjectSchema = function (object, schema, req) {
728
+ return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
729
+ var restoredObject, allPromises, AllKeys, _i, AllKeys_1, key;
730
+ return __generator(this, function (_a) {
731
+ restoredObject = {};
732
+ allPromises = [];
733
+ (object.TemplateBlockContent) ? delete object.TemplateBlockContent : '';
734
+ (object.TemplateEmailContent) ? delete object.TemplateEmailContent : '';
735
+ (object.ColumnList) ? delete object.ColumnList : '';
736
+ (object.CompanyID) ? delete object.CompanyID : '';
737
+ (object.TemplateID) ? delete object.TemplateID : '';
738
+ AllKeys = Object.keys(object);
739
+ for (_i = 0, AllKeys_1 = AllKeys; _i < AllKeys_1.length; _i++) {
740
+ key = AllKeys_1[_i];
741
+ allPromises.push(checkForLookupAndListSchema(object, key, schema, restoredObject, req));
742
+ }
743
+ ;
744
+ Promise.all(allPromises).then(function () { return resolve(restoredObject); });
745
+ return [2 /*return*/];
746
+ });
747
+ }); });
748
+ };
749
+ /**
750
+ *
751
+ * @param { oldValue/newValue Object } obj
752
+ *
753
+ */
754
+ //to Remove Lookup Fields , _id and Modified Date from Logs
755
+ var removeLookupFields = function (obj) {
756
+ var cleanObj = {};
757
+ Object.keys(obj).forEach(function (key) {
758
+ if (key.includes(constants_1.default.LookupAlias) || key == '_id' || key == 'ModifiedDate') {
759
+ delete obj[key];
760
+ }
761
+ else {
762
+ cleanObj[key] = obj[key];
763
+ }
764
+ });
765
+ return cleanObj;
766
+ };
767
+ /**
768
+ *
769
+ * @param { old/newObject } obj
770
+ * @param { fieldsToShow in log table } toDisplay
771
+ *
772
+ */
773
+ //To Remove Non DisplayAble Field in Logs
774
+ var removeExtraKeys = function (obj, toDisplay) {
775
+ var filteredObj = {};
776
+ if (toDisplay.length > 0) {
777
+ Object.keys(obj).forEach(function (key) {
778
+ if (Array.isArray(obj[key]) && obj[key].length > 0) {
779
+ var filteredArray_1 = [];
780
+ obj[key].forEach(function (o) {
781
+ var obj = {};
782
+ Object.keys(o).forEach(function (k) {
783
+ if (toDisplay.find(function (o) { return o == k; }) || k.includes(constants_1.default.LookupAlias)) {
784
+ obj[k] = o[k];
785
+ }
786
+ });
787
+ filteredArray_1.push(obj);
788
+ });
789
+ filteredObj[key] = filteredArray_1;
790
+ }
791
+ else {
792
+ filteredObj[key] = obj[key];
793
+ }
794
+ });
795
+ return __assign({}, filteredObj);
796
+ }
797
+ return __assign({}, obj);
798
+ };
799
+ /**
800
+ *
801
+ * @param { attendee object } attendee
802
+ * @param { current key of attendee object} key
803
+ * @param { object to be returned } filterdObj
804
+ * @param {database reference} db
805
+ *
806
+ */
807
+ //fetch user/contact info from viewAttendee
808
+ var mapAttendeToContactAndUser = function (attendee, key, filterdObj, db) {
809
+ return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
810
+ var Users, alluserInfo, userInfo, inviteInfo, tranformedObj;
811
+ return __generator(this, function (_a) {
812
+ switch (_a.label) {
813
+ case 0:
814
+ Users = [];
815
+ (attendee.Id) ? Users.push(new mongodb_1.default.ObjectId(attendee.Id)) : '';
816
+ (attendee.InvitedBy) ? Users.push(new mongodb_1.default.ObjectId(attendee.InvitedBy)) : '';
817
+ return [4 /*yield*/, db.collection('ViewAttendee').find({ _id: { $in: Users } }, { projection: { Name: 1 } }).toArray()];
818
+ case 1:
819
+ alluserInfo = _a.sent();
820
+ userInfo = alluserInfo.find(function (o) { return o._id.toString() == attendee.Id.toString(); });
821
+ inviteInfo = alluserInfo.find(function (o) { return o._id.toString() == attendee.InvitedBy.toString(); });
822
+ tranformedObj = {};
823
+ (userInfo && userInfo.Name) ? tranformedObj['Name'] = userInfo.Name : '';
824
+ tranformedObj['InvitationStatus'] = attendee.Status;
825
+ attendee.StatusType ? tranformedObj['UserAvaliability'] = attendee.StatusType : '';
826
+ (userInfo && userInfo.Name) ? tranformedObj['InvitedBy'] = inviteInfo.Name : '';
827
+ tranformedObj['Locked'] = (attendee.Lock && attendee.Lock == true) ? 'Yes' : 'No';
828
+ filterdObj.Attendess.push(tranformedObj);
829
+ resolve();
830
+ return [2 /*return*/];
831
+ }
832
+ });
833
+ }); });
834
+ };
835
+ /**
836
+ *
837
+ * @param { old/newObject } obj
838
+ * @param { request } req
839
+ *
840
+ */
841
+ // used to tranform calander attendedata into a displayable log format
842
+ var mapAttendeesData = function (obj, req) { return __awaiter(void 0, void 0, void 0, function () {
843
+ return __generator(this, function (_a) {
844
+ return [2 /*return*/, new Promise(function (resolve, reject) {
845
+ var db = global['dbConnections'][req.DBName];
846
+ var filterdObj = {};
847
+ var allPromises = [];
848
+ Object.keys(obj).forEach(function (key) { return __awaiter(void 0, void 0, void 0, function () {
849
+ var _i, _a, attendee;
850
+ return __generator(this, function (_b) {
851
+ if (key === 'AttendeesData' && Array.isArray(obj[key])) {
852
+ filterdObj.Attendess = [];
853
+ for (_i = 0, _a = obj[key]; _i < _a.length; _i++) {
854
+ attendee = _a[_i];
855
+ if (attendee.Type == 'user' || attendee.Type == 'contact') {
856
+ allPromises.push(mapAttendeToContactAndUser(attendee, key, filterdObj, db));
857
+ }
858
+ }
859
+ }
860
+ else if (key === 'IsAllDay') {
861
+ filterdObj['AllDay'] = obj[key] == true ? 'Yes' : 'No';
862
+ }
863
+ else if (key === 'Subject') {
864
+ filterdObj['Name'] = obj[key];
865
+ }
866
+ else {
867
+ filterdObj[key] = obj[key];
868
+ }
869
+ return [2 /*return*/];
870
+ });
871
+ }); });
872
+ (0, promise_allsettled_1.default)(allPromises).then(function () {
873
+ resolve(filterdObj);
874
+ });
875
+ })];
876
+ });
877
+ }); };
878
+ /**
879
+ *
880
+ * @param { driveObject new Value / old Value } driveObj
881
+ * @param { database reference } db
882
+ * map folder id to orignal folder name
883
+ */
884
+ var mapDriveFolderIdToFolderName = function (driveObj, db) {
885
+ return new Promise(function (resolve, reject) { return __awaiter(void 0, void 0, void 0, function () {
886
+ var sharedUsers_1, parentFolderName, allExternalShares_1;
887
+ return __generator(this, function (_a) {
888
+ switch (_a.label) {
889
+ case 0:
890
+ (driveObj.ContentType && driveObj.ContentType.length == 0 || driveObj.ContentType == 'folder') ? delete driveObj.ContentType : '';
891
+ (driveObj.Size) ? driveObj['Size'] = (0, utility_1.ConvertFileByteSize)(driveObj.Size) : '';
892
+ if (driveObj['FileName']) {
893
+ driveObj['Name'] = driveObj['FileName'];
894
+ delete driveObj['FileName'];
895
+ }
896
+ if (driveObj.SharedUserIDs) {
897
+ sharedUsers_1 = [];
898
+ driveObj['SharedUserIDs' + constants_1.default.LookupAlias].forEach(function (sharedUser) {
899
+ if (sharedUser.FirstName && sharedUser.LastName && sharedUser.Email) {
900
+ sharedUsers_1.push({ 'Name': sharedUser.FirstName + ' ' + sharedUser.LastName, 'Email': sharedUser.Email });
901
+ }
902
+ });
903
+ driveObj['SharedWith'] = sharedUsers_1;
904
+ driveObj['ShareType'] = 'Internal Share';
905
+ delete driveObj.SharedUserIDs;
906
+ }
907
+ if (!(driveObj.FolderId == 'root')) return [3 /*break*/, 1];
908
+ driveObj['FolderName'] = driveObj.FolderId;
909
+ delete driveObj.FolderId;
910
+ return [3 /*break*/, 3];
911
+ case 1: return [4 /*yield*/, db.collection('Drive').findOne({ _id: new mongodb_1.default.ObjectId(driveObj.FolderId) }, { projection: { FileName: 1, _id: 0 } })];
912
+ case 2:
913
+ parentFolderName = _a.sent();
914
+ delete driveObj.FolderId;
915
+ (parentFolderName) ? driveObj['FolderName'] = parentFolderName.FileName : '';
916
+ _a.label = 3;
917
+ case 3:
918
+ if (driveObj.ExternalShare) {
919
+ driveObj['ShareType'] = 'external share';
920
+ if (driveObj.ExternalShare.ExternalUsers && driveObj.ExternalShare.ExternalUsers.length > 0) {
921
+ allExternalShares_1 = [];
922
+ driveObj.ExternalShare.ExternalUsers.forEach(function (user) {
923
+ if (user.Email) {
924
+ allExternalShares_1.push({ Email: user.Email, AddedDate: user.AddedDate });
925
+ }
926
+ });
927
+ driveObj['SharedWith'] = allExternalShares_1;
928
+ }
929
+ (driveObj.ExternalShare.ShareType && driveObj.ExternalShare.ShareType.length > 0) ? driveObj['Mode'] = driveObj.ExternalShare.ShareType : '';
930
+ driveObj['ShareType'] = 'external share';
931
+ (driveObj.ExternalShare.ExpireTime) ? driveObj['ExpireTime'] = driveObj.ExternalShare.ExpireTime : '';
932
+ delete driveObj.ExternalShare;
933
+ }
934
+ resolve();
935
+ return [2 /*return*/];
936
+ }
937
+ });
938
+ }); });
939
+ };
940
+ /**
941
+ * CreatedBy Rohit
942
+ * @param {Request for database name } req
943
+ *
944
+ * Get Location from IP using request object
945
+ *
946
+ */
947
+ var getIPLocationDetails = function (req) { return __awaiter(void 0, void 0, void 0, function () {
948
+ var _a, _b, countryName, _c, region, _d, city, ip, location;
949
+ return __generator(this, function (_e) {
950
+ switch (_e.label) {
951
+ case 0: return [4 /*yield*/, _utility.GetIPDetailsFromReq(req)];
952
+ case 1:
953
+ _a = (_e.sent()) || {}, _b = _a.countryName, countryName = _b === void 0 ? '' : _b, _c = _a.region, region = _c === void 0 ? '' : _c, _d = _a.city, city = _d === void 0 ? '' : _d;
954
+ ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || (req.connection.socket ? req.connection.socket.remoteAddress : null);
955
+ location = '';
956
+ if (countryName != '' || region != '' || city != '') {
957
+ // return `${ip} /(${country}, ${region}, ${city})`;
958
+ location += countryName;
959
+ }
960
+ if (region != '') {
961
+ location += ", ".concat(region);
962
+ }
963
+ if (city != '') {
964
+ location += ", ".concat(city);
965
+ }
966
+ if (location && location != '')
967
+ return [2 /*return*/, "".concat(ip, " /(").concat(location, ")")];
968
+ else
969
+ return [2 /*return*/, ip];
970
+ return [2 /*return*/];
971
+ }
972
+ });
973
+ }); };
974
+ var mapContentStudioObject = function (object) {
975
+ var filteredObj = {};
976
+ var allKeys = Object.keys(object);
977
+ if (allKeys.length > 0) {
978
+ filteredObj['Module'] = 'Marketing';
979
+ allKeys.forEach(function (key) {
980
+ if (key != "CreatedBy" && key != "IsActive" && key != "IsDefault" && key != "ModifiedDate" && key != "_id" && key != 'CreatedDate') {
981
+ if (Array.isArray(object[key])) {
982
+ var allImages_1 = [];
983
+ object[key].forEach(function (obj) {
984
+ var imageObj = { 'Name': obj.FileName, 'Size': (0, utility_1.ConvertFileByteSize)(parseInt(obj.FileSize)), 'CreatedDate': obj.CreatedDate };
985
+ obj.dimensions ? imageObj['Dimensions'] = obj.dimensions : '';
986
+ allImages_1.push(imageObj);
987
+ });
988
+ filteredObj['Images'] = allImages_1;
989
+ }
990
+ else if (key == 'FolderName') {
991
+ filteredObj['Name'] = object[key];
992
+ filteredObj['FolderName'] = object[key];
993
+ }
994
+ else {
995
+ filteredObj[key] = object[key];
996
+ }
997
+ }
998
+ });
999
+ }
1000
+ return filteredObj;
1001
+ };
1002
+ var mapTemplateObject = function (object, status) {
1003
+ var filteredObj = {};
1004
+ (object.TemplateBlockName) ? filteredObj['Name'] = object.TemplateBlockName : '';
1005
+ (object.CreatedDate) ? filteredObj['CreatedDate'] = object.CreatedDate : '';
1006
+ if (status && status.length > 0) {
1007
+ filteredObj['Module'] = 'Marketing Template Editor';
1008
+ filteredObj['Status'] = status;
1009
+ }
1010
+ return filteredObj;
1011
+ };
1012
+ var mapRecipientList = function (object, status) {
1013
+ var filteredObj = {};
1014
+ (object.Name) ? filteredObj['Name'] = object.Name : '';
1015
+ (object.CreatedDate) ? filteredObj['CreatedDate'] = object.CreatedDate : '';
1016
+ (object.Count) ? filteredObj['RecipientCount'] = object.Count : '';
1017
+ if (object.AddedReceiptent) {
1018
+ var newRecipient_1 = JSON.parse(JSON.stringify(object.AddedReceiptent));
1019
+ var metaDataKeys_1 = ["IsValidEmail", "RowNo", "PrimaryKey", "RecipientsListId", "IsActive", "_id"];
1020
+ filteredObj['AddedReceiptent'] = {};
1021
+ Object.keys(newRecipient_1).forEach(function (key) {
1022
+ if (!metaDataKeys_1.includes(key)) {
1023
+ console.log(filteredObj['AddedReceiptent'], "casdcsdcasdcasdcasdca------sdcsacdasdcasdc");
1024
+ filteredObj['AddedReceiptent'][key] = newRecipient_1[key];
1025
+ }
1026
+ });
1027
+ }
1028
+ if (status && status.length > 0) {
1029
+ filteredObj['Module'] = 'Marketing';
1030
+ filteredObj['Status'] = status;
1031
+ }
1032
+ return filteredObj;
1033
+ };