@aldb2b/common 1.0.1017 → 1.0.1018

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.
@@ -31,7 +31,7 @@ exports.commonProviders = [
31
31
  repository_provider_enum_1.RepositoryProvider.AUDIT_TRAIL_REPOSITORY,
32
32
  database_model_enum_1.DatabaseModel.USER_MODEL,
33
33
  ],
34
- useFactory: (auditLogRepository, userModel) => new audit_trail_service_1.AuditTrailService(auditLogRepository),
34
+ useFactory: (auditLogRepository, userModel) => new audit_trail_service_1.AuditTrailService(auditLogRepository, userModel),
35
35
  },
36
36
  {
37
37
  provide: database_model_enum_1.DatabaseModel.PREFERENCE_CUSTOMIZATION_MODEL,
@@ -1 +1 @@
1
- {"version":3,"file":"common.provider.js","sourceRoot":"","sources":["../../../../src/entities/models/common/common.provider.ts"],"names":[],"mappings":";;;AAAA,4EAAkE;AAClE,sFAA4E;AAC5E,sFAA4E;AAC5E,gFAAsE;AAEtE,sEAA6E;AAC7E,kFAA4E;AAC5E,wEAAkE;AAElE,gGAGmD;AACnD,4GAAsG;AAEzF,QAAA,eAAe,GAAG;IAC7B;QACE,OAAO,EAAE,mCAAa,CAAC,iBAAiB;QACxC,UAAU,EAAE,sCAAiB;QAC7B,MAAM,EAAE;YACN,6CAAkB,CAAC,kBAAkB;YACrC,6CAAkB,CAAC,gBAAgB;YACnC,6CAAkB,CAAC,eAAe;SACnC;KACF;IACD;QACE,OAAO,EAAE,6CAAkB,CAAC,sBAAsB;QAClD,MAAM,EAAE,CAAC,mCAAa,CAAC,iBAAiB,CAAC;QACzC,UAAU,EAAE,CAAC,UAAmC,EAAE,EAAE,CAClD,IAAI,6CAAoB,CAAC,UAAU,CAAC;KACvC;IACD;QACE,OAAO,EAAE,uCAAe,CAAC,mBAAmB;QAC5C,MAAM,EAAE;YACN,6CAAkB,CAAC,sBAAsB;YACzC,mCAAa,CAAC,UAAU;SACzB;QACD,UAAU,EAAE,CACV,kBAAwC,EACxC,SAA4B,EAC5B,EAAE,CAAC,IAAI,uCAAiB,CAAC,kBAAkB,CAAC;KAC/C;IAED;QACE,OAAO,EAAE,mCAAa,CAAC,8BAA8B;QACrD,UAAU,EAAE,gEAA8B;QAC1C,MAAM,EAAE;YACN,6CAAkB,CAAC,kBAAkB;YACrC,6CAAkB,CAAC,gBAAgB;YACnC,6CAAkB,CAAC,kBAAkB;SACtC;KACF;IACD;QACE,OAAO,EAAE,6CAAkB,CAAC,mCAAmC;QAC/D,MAAM,EAAE,CAAC,mCAAa,CAAC,8BAA8B,CAAC;QACtD,UAAU,EAAE,CACV,4BAAkE,EAClE,EAAE,CAAC,IAAI,uEAAiC,CAAC,4BAA4B,CAAC;KACzE;CACF,CAAA"}
1
+ {"version":3,"file":"common.provider.js","sourceRoot":"","sources":["../../../../src/entities/models/common/common.provider.ts"],"names":[],"mappings":";;;AAAA,4EAAkE;AAClE,sFAA4E;AAC5E,sFAA4E;AAC5E,gFAAsE;AAEtE,sEAA6E;AAC7E,kFAA4E;AAC5E,wEAAkE;AAElE,gGAGmD;AACnD,4GAAsG;AAEzF,QAAA,eAAe,GAAG;IAC7B;QACE,OAAO,EAAE,mCAAa,CAAC,iBAAiB;QACxC,UAAU,EAAE,sCAAiB;QAC7B,MAAM,EAAE;YACN,6CAAkB,CAAC,kBAAkB;YACrC,6CAAkB,CAAC,gBAAgB;YACnC,6CAAkB,CAAC,eAAe;SACnC;KACF;IACD;QACE,OAAO,EAAE,6CAAkB,CAAC,sBAAsB;QAClD,MAAM,EAAE,CAAC,mCAAa,CAAC,iBAAiB,CAAC;QACzC,UAAU,EAAE,CAAC,UAAmC,EAAE,EAAE,CAClD,IAAI,6CAAoB,CAAC,UAAU,CAAC;KACvC;IACD;QACE,OAAO,EAAE,uCAAe,CAAC,mBAAmB;QAC5C,MAAM,EAAE;YACN,6CAAkB,CAAC,sBAAsB;YACzC,mCAAa,CAAC,UAAU;SACzB;QACD,UAAU,EAAE,CACV,kBAAwC,EACxC,SAA4B,EAC5B,EAAE,CAAC,IAAI,uCAAiB,CAAC,kBAAkB,EAAE,SAAS,CAAC;KAC1D;IAED;QACE,OAAO,EAAE,mCAAa,CAAC,8BAA8B;QACrD,UAAU,EAAE,gEAA8B;QAC1C,MAAM,EAAE;YACN,6CAAkB,CAAC,kBAAkB;YACrC,6CAAkB,CAAC,gBAAgB;YACnC,6CAAkB,CAAC,kBAAkB;SACtC;KACF;IACD;QACE,OAAO,EAAE,6CAAkB,CAAC,mCAAmC;QAC/D,MAAM,EAAE,CAAC,mCAAa,CAAC,8BAA8B,CAAC;QACtD,UAAU,EAAE,CACV,4BAAkE,EAClE,EAAE,CAAC,IAAI,uEAAiC,CAAC,4BAA4B,CAAC;KACzE;CACF,CAAA"}
@@ -3,10 +3,23 @@ import { AuditTrail } from '../entities/audit-trail.entity';
3
3
  import { FindAuditTrailDto } from '../dto/find-audit-trail.dto';
4
4
  import { ReadResult } from '../../../../types/read-result.interface';
5
5
  import { AuditTrailRepository } from '../repositories/audit-trail.repository';
6
+ import { ActionEnum } from "../../../../db/auditTrail/interfaces/Action.enum";
7
+ import { CustomModel } from "../../../../db/CustomModel";
6
8
  export declare class AuditTrailService {
7
9
  private readonly auditTrailRepository;
10
+ private readonly userModel;
8
11
  userData?: User;
9
- constructor(auditTrailRepository: AuditTrailRepository);
12
+ constructor(auditTrailRepository: AuditTrailRepository, userModel: CustomModel<User>);
10
13
  getAuditTrails(findAuditTrailDto: FindAuditTrailDto): Promise<ReadResult<AuditTrail>>;
11
14
  getAuditTrailById(id: string): Promise<AuditTrail>;
15
+ create(identifier: string, module: string, auditInfo: any, auditType: ActionEnum, notes?: string, userId?: string, enrichByTool?: boolean): Promise<void>;
16
+ private getRequestDetails;
17
+ private getRequesterData;
18
+ get eventId(): string;
19
+ get auditMethod(): string;
20
+ get auditRoute(): string;
21
+ get auditPayload(): any;
22
+ get performedBy(): string;
23
+ get performedByName(): string;
24
+ private difference;
12
25
  }
@@ -2,14 +2,39 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuditTrailService = void 0;
4
4
  const get_parsed_query_1 = require("../../../../utils/get-parsed-query");
5
+ const getHeaderParam_1 = require("../../../../utils/getHeaderParam");
6
+ const lodash_1 = require("lodash");
5
7
  class AuditTrailService {
6
- constructor(auditTrailRepository) {
8
+ constructor(auditTrailRepository, userModel) {
7
9
  this.auditTrailRepository = auditTrailRepository;
10
+ this.userModel = userModel;
11
+ this.difference = (origObj, newObj) => {
12
+ try {
13
+ function changes(origObj, newObj) {
14
+ return (0, lodash_1.transform)(newObj, function (result, value, key) {
15
+ if (!(0, lodash_1.isEqual)(value, origObj[key]) &&
16
+ !(0, lodash_1.isFunction)(value) &&
17
+ !(0, lodash_1.isBuffer)(value)) {
18
+ let resultKey = key;
19
+ result[resultKey] =
20
+ (0, lodash_1.isObject)(value) &&
21
+ !(0, lodash_1.isDate)(value) &&
22
+ !(0, lodash_1.isArray)(value) &&
23
+ (0, lodash_1.isObject)(origObj[key])
24
+ ? changes(value, origObj[key])
25
+ : value;
26
+ }
27
+ });
28
+ }
29
+ return changes(newObj, origObj);
30
+ }
31
+ catch (error) {
32
+ return newObj;
33
+ }
34
+ };
8
35
  }
9
36
  async getAuditTrails(findAuditTrailDto) {
10
- console.log('findAuditTrailDto: ', findAuditTrailDto);
11
37
  findAuditTrailDto.query = (0, get_parsed_query_1.getParsedQuery)(findAuditTrailDto);
12
- console.log('findAuditTrailDto.query: ', findAuditTrailDto.query);
13
38
  return await this.auditTrailRepository.read(findAuditTrailDto);
14
39
  }
15
40
  async getAuditTrailById(id) {
@@ -20,6 +45,101 @@ class AuditTrailService {
20
45
  },
21
46
  ], { lean: true });
22
47
  }
48
+ async create(identifier, module, auditInfo, auditType, notes, userId, enrichByTool = false) {
49
+ try {
50
+ const { performedBy, performedByName } = await this.getRequestDetails(userId);
51
+ const trailToCreate = {
52
+ performedBy: performedBy,
53
+ performedByName: performedByName,
54
+ identifier: identifier,
55
+ enrichByTool: enrichByTool,
56
+ module: module,
57
+ eventId: this.eventId,
58
+ auditType: auditType,
59
+ auditMethod: this.auditMethod,
60
+ auditRoute: this.auditRoute,
61
+ auditPayload: this.auditPayload,
62
+ notes: notes,
63
+ };
64
+ if (auditInfo && auditInfo.old && auditInfo.new) {
65
+ const newRec = this.difference(auditInfo.old, auditInfo.new);
66
+ auditInfo.new = newRec;
67
+ auditInfo.old = auditInfo.old;
68
+ trailToCreate.auditInfo = auditInfo;
69
+ if (Object.keys(newRec).length) {
70
+ await this.auditTrailRepository.create(trailToCreate);
71
+ }
72
+ }
73
+ else {
74
+ trailToCreate.auditInfo = auditInfo;
75
+ await this.auditTrailRepository.create(trailToCreate);
76
+ }
77
+ }
78
+ catch (error) {
79
+ console.log('error: common/src/entities/models/common/services/audit-trail.service.ts', error);
80
+ }
81
+ }
82
+ async getRequestDetails(userId) {
83
+ await this.getRequesterData(userId);
84
+ return {
85
+ performedBy: this.performedBy,
86
+ performedByName: this.performedByName,
87
+ };
88
+ }
89
+ async getRequesterData(userId) {
90
+ if (this.userModel && userId) {
91
+ this.userData = await this.userModel.findById(userId, {
92
+ _id: 1,
93
+ firstname: 1,
94
+ lastname: 1,
95
+ lastTrailgedInEventId: 1,
96
+ }, { lean: true });
97
+ }
98
+ }
99
+ get eventId() {
100
+ if (global.req && global.req.headers) {
101
+ return (0, getHeaderParam_1.getHeaderParam)(global.req.headers, 'event-id');
102
+ }
103
+ }
104
+ get auditMethod() {
105
+ if (global.req) {
106
+ return global.req.method;
107
+ }
108
+ }
109
+ get auditRoute() {
110
+ if (global.req) {
111
+ return global.req.originalUrl;
112
+ }
113
+ }
114
+ get auditPayload() {
115
+ if (global.req) {
116
+ return {
117
+ body: global.req.body,
118
+ query: global.req.query,
119
+ params: global.req.params,
120
+ };
121
+ }
122
+ }
123
+ get performedBy() {
124
+ let id = '';
125
+ if (this.userData) {
126
+ id = String(this.userData._id);
127
+ }
128
+ else if (global.req && global.req.headers) {
129
+ id = (0, getHeaderParam_1.getHeaderParam)(global.req.headers, 'id');
130
+ }
131
+ return id;
132
+ }
133
+ get performedByName() {
134
+ let fullname = '';
135
+ if (this.userData) {
136
+ fullname = `${this.userData.firstname} ${this.userData.lastname}`;
137
+ }
138
+ else if (global.req && global.req.headers) {
139
+ fullname = `${(0, getHeaderParam_1.getHeaderParam)(global.req.headers, 'firstname')} ${(0, getHeaderParam_1.getHeaderParam)(global.req.headers, 'lastname')}`;
140
+ }
141
+ return fullname;
142
+ }
23
143
  }
24
144
  exports.AuditTrailService = AuditTrailService;
25
145
  //# sourceMappingURL=audit-trail.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-trail.service.js","sourceRoot":"","sources":["../../../../../src/entities/models/common/services/audit-trail.service.ts"],"names":[],"mappings":";;;AAIA,yEAAmE;AAGnE,MAAa,iBAAiB;IAE5B,YACmB,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;IAC1D,CAAC;IAEJ,KAAK,CAAC,cAAc,CAClB,iBAAoC;QAEpC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;QAEtD,iBAAiB,CAAC,KAAK,GAAG,IAAA,iCAAc,EAAC,iBAAiB,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClE,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EAAU;QAChC,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAC5C,EAAE,GAAG,EAAE,EAAE,EAAE,EACX,EAAE,EACF;YACE;gBACE,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,2CAA2C;aACpD;SACF,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;IACH,CAAC;CACF;AA7BD,8CA6BC"}
1
+ {"version":3,"file":"audit-trail.service.js","sourceRoot":"","sources":["../../../../../src/entities/models/common/services/audit-trail.service.ts"],"names":[],"mappings":"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"}