@optimiser/common 1.0.351 → 1.0.352

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 +61 -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 +25 -25
  22. package/dist/lib/event.js +171 -171
  23. package/dist/lib/helper.d.ts +93 -93
  24. package/dist/lib/helper.js +1009 -1009
  25. package/dist/lib/memoryserverclient.d.ts +40 -40
  26. package/dist/lib/memoryserverclient.js +252 -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 +292 -292
  36. package/dist/lib/utility.js +5570 -5570
  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 +1029 -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 +7 -7
  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 +87 -87
  69. package/package.json +56 -56
@@ -1,1029 +1,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
- 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
+ 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
+ };