@uniorganization/uni-lib 4.1.3 → 4.2.0

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.
@@ -0,0 +1,10 @@
1
+ export declare class UserClientContext {
2
+ userId: number;
3
+ clientId: number;
4
+ profile: string;
5
+ division: string;
6
+ lob: string;
7
+ reportsToId: number | null;
8
+ createdAt: Date;
9
+ updatedAt: Date;
10
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserClientContext = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ let UserClientContext = class UserClientContext {
15
+ };
16
+ exports.UserClientContext = UserClientContext;
17
+ __decorate([
18
+ (0, typeorm_1.PrimaryColumn)({ name: 'USER_ID', type: 'numeric' }),
19
+ __metadata("design:type", Number)
20
+ ], UserClientContext.prototype, "userId", void 0);
21
+ __decorate([
22
+ (0, typeorm_1.PrimaryColumn)({ name: 'client_id', type: 'integer' }),
23
+ __metadata("design:type", Number)
24
+ ], UserClientContext.prototype, "clientId", void 0);
25
+ __decorate([
26
+ (0, typeorm_1.Column)({ type: 'varchar', length: 250, default: '' }),
27
+ __metadata("design:type", String)
28
+ ], UserClientContext.prototype, "profile", void 0);
29
+ __decorate([
30
+ (0, typeorm_1.Column)({ type: 'varchar', length: 250, default: '' }),
31
+ __metadata("design:type", String)
32
+ ], UserClientContext.prototype, "division", void 0);
33
+ __decorate([
34
+ (0, typeorm_1.Column)({ type: 'varchar', length: 250, default: '' }),
35
+ __metadata("design:type", String)
36
+ ], UserClientContext.prototype, "lob", void 0);
37
+ __decorate([
38
+ (0, typeorm_1.Column)({ name: 'REPORTS_TO', type: 'numeric', nullable: true }),
39
+ __metadata("design:type", Number)
40
+ ], UserClientContext.prototype, "reportsToId", void 0);
41
+ __decorate([
42
+ (0, typeorm_1.CreateDateColumn)({
43
+ name: 'created_at',
44
+ type: 'timestamptz',
45
+ default: () => 'CURRENT_TIMESTAMP',
46
+ }),
47
+ __metadata("design:type", Date)
48
+ ], UserClientContext.prototype, "createdAt", void 0);
49
+ __decorate([
50
+ (0, typeorm_1.UpdateDateColumn)({
51
+ name: 'updated_at',
52
+ type: 'timestamptz',
53
+ default: () => 'CURRENT_TIMESTAMP',
54
+ }),
55
+ __metadata("design:type", Date)
56
+ ], UserClientContext.prototype, "updatedAt", void 0);
57
+ exports.UserClientContext = UserClientContext = __decorate([
58
+ (0, typeorm_1.Entity)('USER_CLIENT_CONTEXT', { schema: 'stm' })
59
+ ], UserClientContext);
@@ -76,8 +76,9 @@ let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(pas
76
76
  const { identity, snapshot } = resolved;
77
77
  const isMasterTenantAdmin = !impersonating &&
78
78
  snapshot.clientId === tenant_1.NEWTECH_CLIENT_ID &&
79
- snapshot.roles.some((role) => role.moduleName.toLowerCase() === 'root' &&
80
- role.roleName.toLowerCase() === 'sysadmin');
79
+ (snapshot.permissions.includes('master.users.read') ||
80
+ snapshot.roles.some((role) => role.moduleName.toLowerCase() === 'root' &&
81
+ role.roleName.toLowerCase() === 'sysadmin'));
81
82
  return {
82
83
  id: identity.id,
83
84
  first_name: identity.firstName,
@@ -104,6 +105,9 @@ let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(pas
104
105
  : null,
105
106
  roles: Array.from(new Set(snapshot.roles.map((role) => role.roleName))),
106
107
  privileges: snapshot.privileges,
108
+ role: snapshot.accessRole,
109
+ permissions: snapshot.permissions,
110
+ authzVersion: snapshot.authzVersion,
107
111
  isMasterTenantAdmin,
108
112
  };
109
113
  });
@@ -0,0 +1,4 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ export declare class MasterUsersGuard implements CanActivate {
3
+ canActivate(context: ExecutionContext): boolean;
4
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MasterUsersGuard = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const tenant_constants_1 = require("./tenant.constants");
12
+ let MasterUsersGuard = class MasterUsersGuard {
13
+ canActivate(context) {
14
+ var _a, _b, _c, _d, _e;
15
+ const request = context.switchToHttp().getRequest();
16
+ const user = request.user;
17
+ if (!user || user === true) {
18
+ throw new common_1.UnauthorizedException();
19
+ }
20
+ const effectiveClientId = (_b = (_a = request.tenantContext) === null || _a === void 0 ? void 0 : _a.clientId) !== null && _b !== void 0 ? _b : user.clientId;
21
+ const originalClientId = (_e = (_d = (_c = request.tenantContext) === null || _c === void 0 ? void 0 : _c.originalClientId) !== null && _d !== void 0 ? _d : user.originalClientId) !== null && _e !== void 0 ? _e : null;
22
+ const hasCapability = (user.privileges || []).some((privilege) => privilege.trim().toUpperCase() === tenant_constants_1.MASTER_USERS_ADMIN_PRIVILEGE);
23
+ if (effectiveClientId !== tenant_constants_1.NEWTECH_CLIENT_ID ||
24
+ originalClientId !== null ||
25
+ !user.isMasterTenantAdmin ||
26
+ !hasCapability) {
27
+ throw new common_1.ForbiddenException();
28
+ }
29
+ return true;
30
+ }
31
+ };
32
+ exports.MasterUsersGuard = MasterUsersGuard;
33
+ exports.MasterUsersGuard = MasterUsersGuard = __decorate([
34
+ (0, common_1.Injectable)()
35
+ ], MasterUsersGuard);
@@ -154,6 +154,16 @@ let RedisTenantStateStore = RedisTenantStateStore_1 = class RedisTenantStateStor
154
154
  typeof role.moduleName === 'string') &&
155
155
  Array.isArray(value.privileges) &&
156
156
  value.privileges.every((privilege) => typeof privilege === 'string') &&
157
+ value.accessRole &&
158
+ Number.isInteger(value.accessRole.id) &&
159
+ value.accessRole.id >= 0 &&
160
+ typeof value.accessRole.code === 'string' &&
161
+ typeof value.accessRole.name === 'string' &&
162
+ ['GLOBAL', 'CLIENT'].includes(value.accessRole.scope) &&
163
+ Array.isArray(value.permissions) &&
164
+ value.permissions.every((permission) => typeof permission === 'string') &&
165
+ Number.isInteger(value.authzVersion) &&
166
+ value.authzVersion > 0 &&
157
167
  ((_a = value.identity) === null || _a === void 0 ? void 0 : _a.id) === value.userId &&
158
168
  value.identity.homeClientId === value.homeClientId &&
159
169
  typeof value.cachedAt === 'string');
@@ -71,8 +71,9 @@ let TenantAuthorizationService = TenantAuthorizationService_1 = class TenantAuth
71
71
  throw new common_1.UnauthorizedException();
72
72
  }
73
73
  const origin = yield this.resolve(userId, homeClientId, homeClientId);
74
- const isNewtechMaster = origin.snapshot.roles.some((role) => role.moduleName.toLowerCase() === 'root' &&
75
- role.roleName.toLowerCase() === 'sysadmin');
74
+ const isNewtechMaster = origin.snapshot.permissions.includes('master.users.read') ||
75
+ origin.snapshot.roles.some((role) => role.moduleName.toLowerCase() === 'root' &&
76
+ role.roleName.toLowerCase() === 'sysadmin');
76
77
  const targetClient = yield this.clientRepository.findOne({
77
78
  where: { id: targetClientId, deletedAt: (0, typeorm_2.IsNull)() },
78
79
  });
@@ -94,6 +95,15 @@ let TenantAuthorizationService = TenantAuthorizationService_1 = class TenantAuth
94
95
  },
95
96
  ],
96
97
  privileges: [],
98
+ accessRole: {
99
+ id: 0,
100
+ code: tenant_constants_1.TENANT_IMPERSONATOR_ROLE,
101
+ name: 'Tenant impersonator',
102
+ scope: 'GLOBAL',
103
+ clientId: null,
104
+ },
105
+ permissions: [],
106
+ authzVersion: 1,
97
107
  identity: origin.identity,
98
108
  cachedAt: new Date().toISOString(),
99
109
  };
@@ -115,7 +125,7 @@ let TenantAuthorizationService = TenantAuthorizationService_1 = class TenantAuth
115
125
  }
116
126
  loadFromDatabase(userId, clientId, expectedHomeClientId) {
117
127
  return __awaiter(this, void 0, void 0, function* () {
118
- const [user, client, assignments] = yield Promise.all([
128
+ const [user, client, assignments, accessRows] = yield Promise.all([
119
129
  this.userRepository.findOne({ where: { id: userId } }),
120
130
  this.clientRepository.findOne({
121
131
  where: { id: clientId, deletedAt: (0, typeorm_2.IsNull)() },
@@ -129,23 +139,64 @@ let TenantAuthorizationService = TenantAuthorizationService_1 = class TenantAuth
129
139
  .where('assignment."USER_ID" = :userId', { userId })
130
140
  .andWhere('assignment.client_id = :clientId', { clientId })
131
141
  .getMany(),
142
+ this.userRoleRepository.manager.query(`SELECT
143
+ role.id,
144
+ role.code,
145
+ role.name,
146
+ role.scope,
147
+ role.client_id AS "roleClientId",
148
+ role.authz_version AS "authzVersion",
149
+ COALESCE(
150
+ jsonb_agg(permission.code ORDER BY permission.code)
151
+ FILTER (WHERE permission.id IS NOT NULL AND permission.is_active),
152
+ '[]'::jsonb
153
+ ) AS permissions
154
+ FROM stm."USER_ACCESS_ROLES" membership
155
+ JOIN stm."ACCESS_ROLES" role
156
+ ON role.id = membership.role_id
157
+ AND role.is_active
158
+ LEFT JOIN stm."ACCESS_ROLE_PERMISSIONS" definition
159
+ ON definition.role_id = role.id
160
+ LEFT JOIN stm."ACCESS_PERMISSIONS" permission
161
+ ON permission.id = definition.permission_id
162
+ WHERE membership.user_id = $1
163
+ AND membership.client_id = $2
164
+ GROUP BY role.id`, [userId, clientId]),
132
165
  ]);
133
166
  if (!user ||
134
167
  !Number(user.is_active) ||
135
168
  user.clientId !== expectedHomeClientId ||
136
169
  !client ||
137
- assignments.length === 0) {
170
+ accessRows.length !== 1) {
138
171
  throw new common_1.UnauthorizedException();
139
172
  }
140
- const roles = assignments.map((assignment) => {
141
- var _a, _b, _c, _d, _e, _f;
142
- return ({
143
- roleId: Number(assignment.roleId || ((_a = assignment.role) === null || _a === void 0 ? void 0 : _a.id)),
144
- roleName: (_b = assignment.role) === null || _b === void 0 ? void 0 : _b.roleName,
145
- moduleId: Number((_d = (_c = assignment.role) === null || _c === void 0 ? void 0 : _c.module) === null || _d === void 0 ? void 0 : _d.id),
146
- moduleName: (_f = (_e = assignment.role) === null || _e === void 0 ? void 0 : _e.module) === null || _f === void 0 ? void 0 : _f.moduleName,
147
- });
148
- });
173
+ const accessRow = accessRows[0];
174
+ const accessRole = {
175
+ id: Number(accessRow.id),
176
+ code: accessRow.code,
177
+ name: accessRow.name,
178
+ scope: accessRow.scope,
179
+ clientId: accessRow.roleClientId == null ? null : Number(accessRow.roleClientId),
180
+ };
181
+ const usingLegacyCompatibility = accessRole.code.startsWith('migrated-');
182
+ const roles = usingLegacyCompatibility && assignments.length
183
+ ? assignments.map((assignment) => {
184
+ var _a, _b, _c, _d, _e, _f;
185
+ return ({
186
+ roleId: Number(assignment.roleId || ((_a = assignment.role) === null || _a === void 0 ? void 0 : _a.id)),
187
+ roleName: (_b = assignment.role) === null || _b === void 0 ? void 0 : _b.roleName,
188
+ moduleId: Number((_d = (_c = assignment.role) === null || _c === void 0 ? void 0 : _c.module) === null || _d === void 0 ? void 0 : _d.id),
189
+ moduleName: (_f = (_e = assignment.role) === null || _e === void 0 ? void 0 : _e.module) === null || _f === void 0 ? void 0 : _f.moduleName,
190
+ });
191
+ })
192
+ : [
193
+ {
194
+ roleId: accessRole.id,
195
+ roleName: accessRole.name,
196
+ moduleId: accessRole.id,
197
+ moduleName: 'access-control',
198
+ },
199
+ ];
149
200
  if (roles.some((role) => !Number.isInteger(role.roleId) ||
150
201
  role.roleId <= 0 ||
151
202
  !role.roleName ||
@@ -154,12 +205,14 @@ let TenantAuthorizationService = TenantAuthorizationService_1 = class TenantAuth
154
205
  !role.moduleName)) {
155
206
  throw new common_1.UnauthorizedException();
156
207
  }
157
- const privileges = Array.from(new Set(assignments.flatMap((assignment) => {
158
- var _a;
159
- return (((_a = assignment.role) === null || _a === void 0 ? void 0 : _a.privileges) || [])
160
- .map((definition) => { var _a; return (_a = definition.privilege) === null || _a === void 0 ? void 0 : _a.privilege; })
161
- .filter((privilege) => Boolean(privilege));
162
- }))).sort();
208
+ const privileges = usingLegacyCompatibility
209
+ ? Array.from(new Set(assignments.flatMap((assignment) => {
210
+ var _a;
211
+ return (((_a = assignment.role) === null || _a === void 0 ? void 0 : _a.privileges) || [])
212
+ .map((definition) => { var _a; return (_a = definition.privilege) === null || _a === void 0 ? void 0 : _a.privilege; })
213
+ .filter((privilege) => Boolean(privilege));
214
+ }))).sort()
215
+ : [];
163
216
  const identity = {
164
217
  id: user.id,
165
218
  homeClientId: user.clientId,
@@ -183,6 +236,11 @@ let TenantAuthorizationService = TenantAuthorizationService_1 = class TenantAuth
183
236
  clientAlias: client.alias,
184
237
  roles,
185
238
  privileges,
239
+ accessRole,
240
+ permissions: Array.isArray(accessRow.permissions)
241
+ ? accessRow.permissions
242
+ : [],
243
+ authzVersion: Number(accessRow.authzVersion),
186
244
  identity,
187
245
  cachedAt: new Date().toISOString(),
188
246
  };
@@ -12,9 +12,19 @@ export interface TenantAuthorizationSnapshot {
12
12
  clientAlias: string;
13
13
  roles: TenantRoleAuthorization[];
14
14
  privileges: string[];
15
+ accessRole: TenantAccessRoleAuthorization;
16
+ permissions: string[];
17
+ authzVersion: number;
15
18
  identity: TenantAuthorizationIdentity;
16
19
  cachedAt: string;
17
20
  }
21
+ export interface TenantAccessRoleAuthorization {
22
+ id: number;
23
+ code: string;
24
+ name: string;
25
+ scope: 'GLOBAL' | 'CLIENT';
26
+ clientId: number | null;
27
+ }
18
28
  export interface TenantAuthorizationIdentity {
19
29
  id: number;
20
30
  homeClientId: number;
@@ -23,6 +23,15 @@ export interface AuthenticatedTenantUser {
23
23
  impersonationReason: string | null;
24
24
  roles: string[];
25
25
  privileges: string[];
26
+ role: {
27
+ id: number;
28
+ code: string;
29
+ name: string;
30
+ scope: 'GLOBAL' | 'CLIENT';
31
+ clientId: number | null;
32
+ };
33
+ permissions: string[];
34
+ authzVersion: number;
26
35
  isMasterTenantAdmin: boolean;
27
36
  first_name?: string;
28
37
  username?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniorganization/uni-lib",
3
- "version": "4.1.3",
3
+ "version": "4.2.0",
4
4
  "description": "UNI Library",
5
5
  "author": "Jhomiguel",
6
6
  "main": "dist/index.js",
@@ -9,17 +9,6 @@
9
9
  "dist/**/*",
10
10
  "*.md"
11
11
  ],
12
- "scripts": {
13
- "start:dev": "tsc -w",
14
- "build": "tsc",
15
- "prepublishOnly": "pnpm run build",
16
- "format": "prettier --write \"src/**/*.ts\"",
17
- "lint": "tslint -p tsconfig.json -c tslint.json",
18
- "test": "jest",
19
- "test:watch": "jest --watch",
20
- "test:cov": "jest --coverage",
21
- "test:e2e": "jest --config ./test/jest-e2e.json"
22
- },
23
12
  "dependencies": {
24
13
  "@googlemaps/google-maps-services-js": "^3.4.2",
25
14
  "@aws-sdk/client-s3": "^3.833.0",
@@ -82,5 +71,15 @@
82
71
  },
83
72
  "coverageDirectory": "../coverage",
84
73
  "testEnvironment": "node"
74
+ },
75
+ "scripts": {
76
+ "start:dev": "tsc -w",
77
+ "build": "tsc",
78
+ "format": "prettier --write \"src/**/*.ts\"",
79
+ "lint": "tslint -p tsconfig.json -c tslint.json",
80
+ "test": "jest",
81
+ "test:watch": "jest --watch",
82
+ "test:cov": "jest --coverage",
83
+ "test:e2e": "jest --config ./test/jest-e2e.json"
85
84
  }
86
- }
85
+ }
@@ -1,58 +0,0 @@
1
- import { Transactions } from './transactions.entity';
2
- export declare class DailyPayment {
3
- transactionId: string;
4
- rowDate: Date;
5
- rowSource: string;
6
- rnnNumber: string;
7
- sourceType: string;
8
- customerNo: string;
9
- cnnNumber: string;
10
- symptom: string;
11
- subSymptom: string;
12
- createdBy: string;
13
- receiptUserName: string;
14
- partsUseFlag: string;
15
- svcCenterType: string;
16
- repairReceiptTimestamp: Date;
17
- model: string;
18
- serialNo: string;
19
- state: string;
20
- zipCode: string;
21
- callStatus: string;
22
- product: string;
23
- receiptRemark: string;
24
- dateScheduled: Date;
25
- ascCode: string;
26
- svcEngineerName: string;
27
- callSubstatus: string;
28
- updatedOn: Date;
29
- daysSinceLastStatusUpdate: string;
30
- svcContKey: string;
31
- callEndDate: Date;
32
- tappTicketStatus: string;
33
- tappSubStatus: string;
34
- tappTrackingResult: string;
35
- tappApptScheduleDateOrCompletionDate: Date;
36
- tappStatusEndedDate: Date;
37
- statusEndedDate: Date;
38
- agreedPrice: string;
39
- serviceCenter: string;
40
- orderDate: Date;
41
- orderStatusName: string;
42
- actualShipmentDate: Date;
43
- trackingNo: string;
44
- eta: Date;
45
- backOrderHold: string;
46
- backOrderRelease: string;
47
- postingDate: Date;
48
- tat: string;
49
- repairTat: string;
50
- schWithin: string;
51
- svcType: string;
52
- partsAging: string;
53
- primaryRepairCode: string;
54
- vocNo: string;
55
- workInfoSkill: string;
56
- rmaNo: string;
57
- transaction: Transactions;
58
- }
@@ -1,248 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.DailyPayment = void 0;
13
- const typeorm_1 = require("typeorm");
14
- const transactions_entity_1 = require("./transactions.entity");
15
- let DailyPayment = class DailyPayment {
16
- };
17
- exports.DailyPayment = DailyPayment;
18
- __decorate([
19
- (0, typeorm_1.PrimaryColumn)({ name: 'transaction_id' }),
20
- __metadata("design:type", String)
21
- ], DailyPayment.prototype, "transactionId", void 0);
22
- __decorate([
23
- (0, typeorm_1.PrimaryColumn)({ name: 'row_date', type: 'date' }),
24
- __metadata("design:type", Date)
25
- ], DailyPayment.prototype, "rowDate", void 0);
26
- __decorate([
27
- (0, typeorm_1.PrimaryColumn)({ name: 'row_source' }),
28
- __metadata("design:type", String)
29
- ], DailyPayment.prototype, "rowSource", void 0);
30
- __decorate([
31
- (0, typeorm_1.PrimaryColumn)({ name: 'rnn_number' }),
32
- __metadata("design:type", String)
33
- ], DailyPayment.prototype, "rnnNumber", void 0);
34
- __decorate([
35
- (0, typeorm_1.Column)({ name: 'source_type', nullable: true }),
36
- __metadata("design:type", String)
37
- ], DailyPayment.prototype, "sourceType", void 0);
38
- __decorate([
39
- (0, typeorm_1.Column)({ name: 'customer_no', nullable: true }),
40
- __metadata("design:type", String)
41
- ], DailyPayment.prototype, "customerNo", void 0);
42
- __decorate([
43
- (0, typeorm_1.Column)({ name: 'cnn_number', nullable: true }),
44
- __metadata("design:type", String)
45
- ], DailyPayment.prototype, "cnnNumber", void 0);
46
- __decorate([
47
- (0, typeorm_1.Column)({ nullable: true }),
48
- __metadata("design:type", String)
49
- ], DailyPayment.prototype, "symptom", void 0);
50
- __decorate([
51
- (0, typeorm_1.Column)({ name: 'sub_symptom', nullable: true }),
52
- __metadata("design:type", String)
53
- ], DailyPayment.prototype, "subSymptom", void 0);
54
- __decorate([
55
- (0, typeorm_1.Column)({ name: 'created_by', nullable: true }),
56
- __metadata("design:type", String)
57
- ], DailyPayment.prototype, "createdBy", void 0);
58
- __decorate([
59
- (0, typeorm_1.Column)({ name: 'receipt_user_name', nullable: true }),
60
- __metadata("design:type", String)
61
- ], DailyPayment.prototype, "receiptUserName", void 0);
62
- __decorate([
63
- (0, typeorm_1.Column)({ name: 'parts_use_flag', nullable: true }),
64
- __metadata("design:type", String)
65
- ], DailyPayment.prototype, "partsUseFlag", void 0);
66
- __decorate([
67
- (0, typeorm_1.Column)({ name: 'svc_center_type', nullable: true }),
68
- __metadata("design:type", String)
69
- ], DailyPayment.prototype, "svcCenterType", void 0);
70
- __decorate([
71
- (0, typeorm_1.Column)('timestamp', { name: 'repair_receipt_timestamp', nullable: true }),
72
- __metadata("design:type", Date)
73
- ], DailyPayment.prototype, "repairReceiptTimestamp", void 0);
74
- __decorate([
75
- (0, typeorm_1.Column)({ nullable: true }),
76
- __metadata("design:type", String)
77
- ], DailyPayment.prototype, "model", void 0);
78
- __decorate([
79
- (0, typeorm_1.Column)({ name: 'serial_no', nullable: true }),
80
- __metadata("design:type", String)
81
- ], DailyPayment.prototype, "serialNo", void 0);
82
- __decorate([
83
- (0, typeorm_1.Column)({ nullable: true }),
84
- __metadata("design:type", String)
85
- ], DailyPayment.prototype, "state", void 0);
86
- __decorate([
87
- (0, typeorm_1.Column)({ name: 'zip_code', nullable: true }),
88
- __metadata("design:type", String)
89
- ], DailyPayment.prototype, "zipCode", void 0);
90
- __decorate([
91
- (0, typeorm_1.Column)({ name: 'call_status', nullable: true }),
92
- __metadata("design:type", String)
93
- ], DailyPayment.prototype, "callStatus", void 0);
94
- __decorate([
95
- (0, typeorm_1.Column)({ nullable: true }),
96
- __metadata("design:type", String)
97
- ], DailyPayment.prototype, "product", void 0);
98
- __decorate([
99
- (0, typeorm_1.Column)({ name: 'receipt_remark', nullable: true }),
100
- __metadata("design:type", String)
101
- ], DailyPayment.prototype, "receiptRemark", void 0);
102
- __decorate([
103
- (0, typeorm_1.Column)('date', { name: 'date_scheduled', nullable: true }),
104
- __metadata("design:type", Date)
105
- ], DailyPayment.prototype, "dateScheduled", void 0);
106
- __decorate([
107
- (0, typeorm_1.Column)({ name: 'asc_code', nullable: true }),
108
- __metadata("design:type", String)
109
- ], DailyPayment.prototype, "ascCode", void 0);
110
- __decorate([
111
- (0, typeorm_1.Column)({ name: 'svc_engineer_name', nullable: true }),
112
- __metadata("design:type", String)
113
- ], DailyPayment.prototype, "svcEngineerName", void 0);
114
- __decorate([
115
- (0, typeorm_1.Column)({ name: 'call_substatus', nullable: true }),
116
- __metadata("design:type", String)
117
- ], DailyPayment.prototype, "callSubstatus", void 0);
118
- __decorate([
119
- (0, typeorm_1.Column)('timestamp', { name: 'updated_on', nullable: true }),
120
- __metadata("design:type", Date)
121
- ], DailyPayment.prototype, "updatedOn", void 0);
122
- __decorate([
123
- (0, typeorm_1.Column)({ name: 'days_since_last_status_update', nullable: true }),
124
- __metadata("design:type", String)
125
- ], DailyPayment.prototype, "daysSinceLastStatusUpdate", void 0);
126
- __decorate([
127
- (0, typeorm_1.Column)({ name: 'svc_cont_key', nullable: true }),
128
- __metadata("design:type", String)
129
- ], DailyPayment.prototype, "svcContKey", void 0);
130
- __decorate([
131
- (0, typeorm_1.Column)('date', { name: 'call_end_date', nullable: true }),
132
- __metadata("design:type", Date)
133
- ], DailyPayment.prototype, "callEndDate", void 0);
134
- __decorate([
135
- (0, typeorm_1.Column)({ name: 'tapp_ticket_status', nullable: true }),
136
- __metadata("design:type", String)
137
- ], DailyPayment.prototype, "tappTicketStatus", void 0);
138
- __decorate([
139
- (0, typeorm_1.Column)({ name: 'tapp_sub_status', nullable: true }),
140
- __metadata("design:type", String)
141
- ], DailyPayment.prototype, "tappSubStatus", void 0);
142
- __decorate([
143
- (0, typeorm_1.Column)({ name: 'tapp_tracking_result', nullable: true }),
144
- __metadata("design:type", String)
145
- ], DailyPayment.prototype, "tappTrackingResult", void 0);
146
- __decorate([
147
- (0, typeorm_1.Column)('date', {
148
- name: 'tapp_appt_schedule_date_or_completion_date',
149
- nullable: true,
150
- }),
151
- __metadata("design:type", Date)
152
- ], DailyPayment.prototype, "tappApptScheduleDateOrCompletionDate", void 0);
153
- __decorate([
154
- (0, typeorm_1.Column)('timestamp', { name: 'tapp_status_ended_date', nullable: true }),
155
- __metadata("design:type", Date)
156
- ], DailyPayment.prototype, "tappStatusEndedDate", void 0);
157
- __decorate([
158
- (0, typeorm_1.Column)('timestamp', { name: 'status_ended_date', nullable: true }),
159
- __metadata("design:type", Date)
160
- ], DailyPayment.prototype, "statusEndedDate", void 0);
161
- __decorate([
162
- (0, typeorm_1.Column)({ name: 'agreed_price', nullable: true }),
163
- __metadata("design:type", String)
164
- ], DailyPayment.prototype, "agreedPrice", void 0);
165
- __decorate([
166
- (0, typeorm_1.Column)({ name: 'service_center', nullable: true }),
167
- __metadata("design:type", String)
168
- ], DailyPayment.prototype, "serviceCenter", void 0);
169
- __decorate([
170
- (0, typeorm_1.Column)('date', { name: 'order_date', nullable: true }),
171
- __metadata("design:type", Date)
172
- ], DailyPayment.prototype, "orderDate", void 0);
173
- __decorate([
174
- (0, typeorm_1.Column)({ name: 'order_status_name', nullable: true }),
175
- __metadata("design:type", String)
176
- ], DailyPayment.prototype, "orderStatusName", void 0);
177
- __decorate([
178
- (0, typeorm_1.Column)('date', { name: 'actual_shipment_date', nullable: true }),
179
- __metadata("design:type", Date)
180
- ], DailyPayment.prototype, "actualShipmentDate", void 0);
181
- __decorate([
182
- (0, typeorm_1.Column)({ name: 'tracking_no', nullable: true }),
183
- __metadata("design:type", String)
184
- ], DailyPayment.prototype, "trackingNo", void 0);
185
- __decorate([
186
- (0, typeorm_1.Column)('date', { name: 'eta', nullable: true }),
187
- __metadata("design:type", Date)
188
- ], DailyPayment.prototype, "eta", void 0);
189
- __decorate([
190
- (0, typeorm_1.Column)({ name: 'back_order_hold', nullable: true }),
191
- __metadata("design:type", String)
192
- ], DailyPayment.prototype, "backOrderHold", void 0);
193
- __decorate([
194
- (0, typeorm_1.Column)({ name: 'back_order_release', nullable: true }),
195
- __metadata("design:type", String)
196
- ], DailyPayment.prototype, "backOrderRelease", void 0);
197
- __decorate([
198
- (0, typeorm_1.Column)('date', { name: 'posting_date', nullable: true }),
199
- __metadata("design:type", Date)
200
- ], DailyPayment.prototype, "postingDate", void 0);
201
- __decorate([
202
- (0, typeorm_1.Column)({ nullable: true }),
203
- __metadata("design:type", String)
204
- ], DailyPayment.prototype, "tat", void 0);
205
- __decorate([
206
- (0, typeorm_1.Column)({ name: 'repair_tat', nullable: true }),
207
- __metadata("design:type", String)
208
- ], DailyPayment.prototype, "repairTat", void 0);
209
- __decorate([
210
- (0, typeorm_1.Column)({ name: 'sch_within', nullable: true }),
211
- __metadata("design:type", String)
212
- ], DailyPayment.prototype, "schWithin", void 0);
213
- __decorate([
214
- (0, typeorm_1.Column)({ name: 'svc_type', nullable: true }),
215
- __metadata("design:type", String)
216
- ], DailyPayment.prototype, "svcType", void 0);
217
- __decorate([
218
- (0, typeorm_1.Column)({ name: 'parts_aging', nullable: true }),
219
- __metadata("design:type", String)
220
- ], DailyPayment.prototype, "partsAging", void 0);
221
- __decorate([
222
- (0, typeorm_1.Column)({ name: 'primary_repair_code', nullable: true }),
223
- __metadata("design:type", String)
224
- ], DailyPayment.prototype, "primaryRepairCode", void 0);
225
- __decorate([
226
- (0, typeorm_1.Column)({ name: 'voc_no', nullable: true }),
227
- __metadata("design:type", String)
228
- ], DailyPayment.prototype, "vocNo", void 0);
229
- __decorate([
230
- (0, typeorm_1.Column)({ name: 'work_info_skill', nullable: true }),
231
- __metadata("design:type", String)
232
- ], DailyPayment.prototype, "workInfoSkill", void 0);
233
- __decorate([
234
- (0, typeorm_1.Column)({ name: 'rma_no', nullable: true }),
235
- __metadata("design:type", String)
236
- ], DailyPayment.prototype, "rmaNo", void 0);
237
- __decorate([
238
- (0, typeorm_1.ManyToOne)(() => transactions_entity_1.Transactions, { nullable: true }),
239
- (0, typeorm_1.JoinColumn)({
240
- name: 'transaction_id',
241
- referencedColumnName: 'transactionId',
242
- }),
243
- __metadata("design:type", transactions_entity_1.Transactions)
244
- ], DailyPayment.prototype, "transaction", void 0);
245
- exports.DailyPayment = DailyPayment = __decorate([
246
- (0, typeorm_1.Entity)('daily_payments', { schema: 'lgai' }),
247
- (0, typeorm_1.Index)(['transactionId', 'rowDate'])
248
- ], DailyPayment);
@@ -1 +0,0 @@
1
- export * from './version-checker.middleware';
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./version-checker.middleware"), exports);
@@ -1,2 +0,0 @@
1
- import { NextFunction, Request, Response } from 'express';
2
- export declare function versionChecker(req: Request, res: Response, next: NextFunction): Promise<Response<any, Record<string, any>>>;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.versionChecker = versionChecker;
13
- const fs = require("fs/promises");
14
- const path = require("path");
15
- function versionChecker(req, res, next) {
16
- return __awaiter(this, void 0, void 0, function* () {
17
- const version = (yield fs.readFile(path.join(process.cwd(), 'app-version.txt')))
18
- .toString()
19
- .trim();
20
- if (req.headers['app-version'] !== version)
21
- return res.status(409).json({
22
- message: `You need to update the application version to ${version}`,
23
- status: 409,
24
- });
25
- next();
26
- });
27
- }