rez_core 1.0.56 → 1.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/250218_nodejs_core.iml +12 -0
- package/.idea/codeStyles/Project.xml +59 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/dataSources.xml +12 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +6 -0
- package/dist/module/auth/guards/role.guard.js +3 -3
- package/dist/module/listmaster/controller/list-master.controller.d.ts +4 -1
- package/dist/module/listmaster/service/list-master.service.d.ts +4 -1
- package/dist/module/listmaster/service/list-master.service.js +11 -5
- package/dist/module/listmaster/service/list-master.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/module/auth/guards/jwt.guard.ts +22 -22
- package/src/module/auth/guards/role.guard.ts +68 -68
- package/src/module/auth/services/jwt.service.ts +11 -11
- package/src/module/auth/strategies/local.strategy.ts +13 -13
- package/src/module/dev/dev.module.ts +12 -12
- package/src/module/dev/service/dev.service.ts +7 -7
- package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
- package/src/module/enterprise/entity/organization.entity.ts +80 -80
- package/src/module/listmaster/service/list-master.service.ts +15 -5
- package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
- package/src/module/meta/entity/preference.entity.ts +65 -65
- package/src/module/meta/repository/preference.repository.ts +20 -20
- package/src/module/module/controller/menu.controller.ts +15 -15
- package/src/module/module/entity/module-access.entity.ts +22 -22
- package/src/module/module/entity/module-action.entity.ts +19 -19
- package/src/module/user/controller/user.controller.ts +28 -28
- package/src/module/user/dto/update-user.dto.ts +4 -4
- package/src/module/user/entity/user-session.entity.ts +61 -61
- package/src/module/user/repository/userSession.repository.ts +33 -33
- package/src/utils/service/encryptUtil.service.ts +97 -97
- package/src/utils/service/excelUtil.service.ts +15 -15
- package/src/utils/service/reflection-helper.service.ts +53 -53
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { ExecutionContext, Injectable } from '@nestjs/common';
|
|
2
|
-
import { AuthGuard } from '@nestjs/passport';
|
|
3
|
-
import { Reflector } from '@nestjs/core';
|
|
4
|
-
import { Observable } from 'rxjs';
|
|
5
|
-
|
|
6
|
-
@Injectable()
|
|
7
|
-
export class JwtAuthGuard extends AuthGuard('jwt') {
|
|
8
|
-
constructor(private reflector: Reflector) {
|
|
9
|
-
super();
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
canActivate(
|
|
13
|
-
context: ExecutionContext,
|
|
14
|
-
): Promise<boolean> | boolean | Observable<boolean> {
|
|
15
|
-
const isPublic = this.reflector.getAllAndOverride('isPublic', [
|
|
16
|
-
context.getHandler(),
|
|
17
|
-
context.getClass(),
|
|
18
|
-
]);
|
|
19
|
-
if (isPublic) return true;
|
|
20
|
-
return super.canActivate(context);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
import { ExecutionContext, Injectable } from '@nestjs/common';
|
|
2
|
+
import { AuthGuard } from '@nestjs/passport';
|
|
3
|
+
import { Reflector } from '@nestjs/core';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
@Injectable()
|
|
7
|
+
export class JwtAuthGuard extends AuthGuard('jwt') {
|
|
8
|
+
constructor(private reflector: Reflector) {
|
|
9
|
+
super();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
canActivate(
|
|
13
|
+
context: ExecutionContext,
|
|
14
|
+
): Promise<boolean> | boolean | Observable<boolean> {
|
|
15
|
+
const isPublic = this.reflector.getAllAndOverride('isPublic', [
|
|
16
|
+
context.getHandler(),
|
|
17
|
+
context.getClass(),
|
|
18
|
+
]);
|
|
19
|
+
if (isPublic) return true;
|
|
20
|
+
return super.canActivate(context);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CanActivate,
|
|
3
|
-
ExecutionContext,
|
|
4
|
-
ForbiddenException,
|
|
5
|
-
Injectable,
|
|
6
|
-
UnauthorizedException,
|
|
7
|
-
} from '@nestjs/common';
|
|
8
|
-
import { Reflector } from '@nestjs/core';
|
|
9
|
-
import { UserData } from '../../user/entity/user.entity';
|
|
10
|
-
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
11
|
-
import { EntityManager } from 'typeorm';
|
|
12
|
-
|
|
13
|
-
@Injectable()
|
|
14
|
-
export class RolesGuard implements CanActivate {
|
|
15
|
-
constructor(
|
|
16
|
-
private reflector: Reflector,
|
|
17
|
-
@InjectEntityManager() private entityManager: EntityManager,
|
|
18
|
-
) {}
|
|
19
|
-
|
|
20
|
-
async canActivate(context: ExecutionContext) {
|
|
21
|
-
const request = context
|
|
22
|
-
.switchToHttp()
|
|
23
|
-
.getRequest<Request & { user: any }>();
|
|
24
|
-
const object = request.user;
|
|
25
|
-
|
|
26
|
-
const users: UserData = await this.entityManager.query(
|
|
27
|
-
`SELECT * FROM cr_user WHERE id = ${object.userId} LIMIT 1`,
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
const user = users[0];
|
|
31
|
-
if (!user || !user['role_id']) {
|
|
32
|
-
throw new UnauthorizedException('User not authorized');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const requiredModule = this.reflector.get<string>(
|
|
36
|
-
'moduleCode',
|
|
37
|
-
context.getHandler(),
|
|
38
|
-
);
|
|
39
|
-
const requiredActions = this.reflector.get<string>(
|
|
40
|
-
'actions',
|
|
41
|
-
context.getHandler(),
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
const roleAccess = await this.entityManager.query(
|
|
45
|
-
`SELECT *
|
|
46
|
-
FROM cr_module_access
|
|
47
|
-
WHERE role_id = ${user['role_id']}
|
|
48
|
-
AND module_code = '${requiredModule}'`,
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
if (!roleAccess || roleAccess.length === 0) {
|
|
52
|
-
throw new ForbiddenException(
|
|
53
|
-
'Access denied: No permissions found for this module',
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const hasAccess = roleAccess.some(
|
|
58
|
-
(access) =>
|
|
59
|
-
requiredActions.includes(access.action_type) &&
|
|
60
|
-
access.access_flag === 1,
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
if (!hasAccess) {
|
|
64
|
-
throw new ForbiddenException('Access denied: Insufficient permissions.');
|
|
65
|
-
}
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
CanActivate,
|
|
3
|
+
ExecutionContext,
|
|
4
|
+
ForbiddenException,
|
|
5
|
+
Injectable,
|
|
6
|
+
UnauthorizedException,
|
|
7
|
+
} from '@nestjs/common';
|
|
8
|
+
import { Reflector } from '@nestjs/core';
|
|
9
|
+
import { UserData } from '../../user/entity/user.entity';
|
|
10
|
+
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
11
|
+
import { EntityManager } from 'typeorm';
|
|
12
|
+
|
|
13
|
+
@Injectable()
|
|
14
|
+
export class RolesGuard implements CanActivate {
|
|
15
|
+
constructor(
|
|
16
|
+
private reflector: Reflector,
|
|
17
|
+
@InjectEntityManager() private entityManager: EntityManager,
|
|
18
|
+
) {}
|
|
19
|
+
|
|
20
|
+
async canActivate(context: ExecutionContext) {
|
|
21
|
+
const request = context
|
|
22
|
+
.switchToHttp()
|
|
23
|
+
.getRequest<Request & { user: any }>();
|
|
24
|
+
const object = request.user;
|
|
25
|
+
|
|
26
|
+
const users: UserData = await this.entityManager.query(
|
|
27
|
+
`SELECT * FROM cr_user WHERE id = ${object.userId} LIMIT 1`,
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
const user = users[0];
|
|
31
|
+
if (!user || !user['role_id']) {
|
|
32
|
+
throw new UnauthorizedException('User not authorized');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const requiredModule = this.reflector.get<string>(
|
|
36
|
+
'moduleCode',
|
|
37
|
+
context.getHandler(),
|
|
38
|
+
);
|
|
39
|
+
const requiredActions = this.reflector.get<string>(
|
|
40
|
+
'actions',
|
|
41
|
+
context.getHandler(),
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const roleAccess = await this.entityManager.query(
|
|
45
|
+
`SELECT *
|
|
46
|
+
FROM cr_module_access
|
|
47
|
+
WHERE role_id = ${user['role_id']}
|
|
48
|
+
AND module_code = '${requiredModule}'`,
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
if (!roleAccess || roleAccess.length === 0) {
|
|
52
|
+
throw new ForbiddenException(
|
|
53
|
+
'Access denied: No permissions found for this module',
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const hasAccess = roleAccess.some(
|
|
58
|
+
(access) =>
|
|
59
|
+
requiredActions.includes(access.action_type) &&
|
|
60
|
+
access.access_flag === 1,
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
if (!hasAccess) {
|
|
64
|
+
throw new ForbiddenException('Access denied: Insufficient permissions.');
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
2
|
-
import { JwtService } from '@nestjs/jwt';
|
|
3
|
-
|
|
4
|
-
@Injectable()
|
|
5
|
-
export class JwtAuthService {
|
|
6
|
-
constructor(private readonly jwtService: JwtService) {}
|
|
7
|
-
|
|
8
|
-
generateJwt(payload: any): string {
|
|
9
|
-
return this.jwtService.sign(payload);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { JwtService } from '@nestjs/jwt';
|
|
3
|
+
|
|
4
|
+
@Injectable()
|
|
5
|
+
export class JwtAuthService {
|
|
6
|
+
constructor(private readonly jwtService: JwtService) {}
|
|
7
|
+
|
|
8
|
+
generateJwt(payload: any): string {
|
|
9
|
+
return this.jwtService.sign(payload);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { PassportStrategy } from '@nestjs/passport';
|
|
2
|
-
import { AuthService } from '../services/auth.service';
|
|
3
|
-
import { Injectable } from '@nestjs/common';
|
|
4
|
-
import { Strategy } from 'passport-jwt';
|
|
5
|
-
|
|
6
|
-
@Injectable()
|
|
7
|
-
export class LocalStrategy extends PassportStrategy(Strategy) {
|
|
8
|
-
constructor(private authService: AuthService) {
|
|
9
|
-
super({
|
|
10
|
-
usernameField: 'email',
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
}
|
|
1
|
+
import { PassportStrategy } from '@nestjs/passport';
|
|
2
|
+
import { AuthService } from '../services/auth.service';
|
|
3
|
+
import { Injectable } from '@nestjs/common';
|
|
4
|
+
import { Strategy } from 'passport-jwt';
|
|
5
|
+
|
|
6
|
+
@Injectable()
|
|
7
|
+
export class LocalStrategy extends PassportStrategy(Strategy) {
|
|
8
|
+
constructor(private authService: AuthService) {
|
|
9
|
+
super({
|
|
10
|
+
usernameField: 'email',
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Module } from '@nestjs/common';
|
|
2
|
-
import { EntityModule } from '../meta/entity.module';
|
|
3
|
-
import { UserModule } from '../user/user.module';
|
|
4
|
-
import { ModuleModule } from '../module/module.module';
|
|
5
|
-
import { DevService } from './service/dev.service';
|
|
6
|
-
|
|
7
|
-
@Module({
|
|
8
|
-
imports: [EntityModule, UserModule, ModuleModule],
|
|
9
|
-
controllers: [],
|
|
10
|
-
providers: [DevService],
|
|
11
|
-
})
|
|
12
|
-
export class DevModule {}
|
|
1
|
+
import { Module } from '@nestjs/common';
|
|
2
|
+
import { EntityModule } from '../meta/entity.module';
|
|
3
|
+
import { UserModule } from '../user/user.module';
|
|
4
|
+
import { ModuleModule } from '../module/module.module';
|
|
5
|
+
import { DevService } from './service/dev.service';
|
|
6
|
+
|
|
7
|
+
@Module({
|
|
8
|
+
imports: [EntityModule, UserModule, ModuleModule],
|
|
9
|
+
controllers: [],
|
|
10
|
+
providers: [DevService],
|
|
11
|
+
})
|
|
12
|
+
export class DevModule {}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
2
|
-
import { UserService } from '../../user/service/user.service';
|
|
3
|
-
|
|
4
|
-
@Injectable()
|
|
5
|
-
export class DevService {
|
|
6
|
-
constructor(private readonly userService: UserService) {}
|
|
7
|
-
}
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { UserService } from '../../user/service/user.service';
|
|
3
|
+
|
|
4
|
+
@Injectable()
|
|
5
|
+
export class DevService {
|
|
6
|
+
constructor(private readonly userService: UserService) {}
|
|
7
|
+
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
-
|
|
3
|
-
@Entity({ name: 'cr_enterprise' })
|
|
4
|
-
export class EnterpriseData {
|
|
5
|
-
@PrimaryGeneratedColumn({ name: 'id', type: 'bigint' })
|
|
6
|
-
id: number;
|
|
7
|
-
|
|
8
|
-
@Column({ name: 'entity_type', type: 'varchar', nullable: true, length: 50 })
|
|
9
|
-
entityType: string;
|
|
10
|
-
|
|
11
|
-
@Column({ name: 'code', type: 'varchar', nullable: true, length: 50 })
|
|
12
|
-
code: string;
|
|
13
|
-
|
|
14
|
-
@Column({ name: 'name', type: 'varchar', nullable: true, length: 50 })
|
|
15
|
-
name: string;
|
|
16
|
-
|
|
17
|
-
@Column({ name: 'status', type: 'varchar', nullable: true, length: 50 })
|
|
18
|
-
status: string;
|
|
19
|
-
|
|
20
|
-
@Column({ name: 'created_by', type: 'int', nullable: true })
|
|
21
|
-
createdBy: number;
|
|
22
|
-
|
|
23
|
-
@Column({ name: 'modified_by', type: 'int', nullable: true })
|
|
24
|
-
modifiedBy: number;
|
|
25
|
-
|
|
26
|
-
@Column({ name: 'created_date', type: 'datetime', nullable: true })
|
|
27
|
-
createdDate: Date;
|
|
28
|
-
|
|
29
|
-
@Column({ name: 'modified_date', type: 'datetime', nullable: true })
|
|
30
|
-
modifiedDate: Date;
|
|
31
|
-
|
|
32
|
-
@Column({ name: 'app_code', type: 'varchar', nullable: true, length: 50 })
|
|
33
|
-
appCode: string;
|
|
34
|
-
|
|
35
|
-
@Column({ name: 'app_url_name', type: 'varchar', nullable: true, length: 50 })
|
|
36
|
-
appUrlName: string;
|
|
37
|
-
}
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
@Entity({ name: 'cr_enterprise' })
|
|
4
|
+
export class EnterpriseData {
|
|
5
|
+
@PrimaryGeneratedColumn({ name: 'id', type: 'bigint' })
|
|
6
|
+
id: number;
|
|
7
|
+
|
|
8
|
+
@Column({ name: 'entity_type', type: 'varchar', nullable: true, length: 50 })
|
|
9
|
+
entityType: string;
|
|
10
|
+
|
|
11
|
+
@Column({ name: 'code', type: 'varchar', nullable: true, length: 50 })
|
|
12
|
+
code: string;
|
|
13
|
+
|
|
14
|
+
@Column({ name: 'name', type: 'varchar', nullable: true, length: 50 })
|
|
15
|
+
name: string;
|
|
16
|
+
|
|
17
|
+
@Column({ name: 'status', type: 'varchar', nullable: true, length: 50 })
|
|
18
|
+
status: string;
|
|
19
|
+
|
|
20
|
+
@Column({ name: 'created_by', type: 'int', nullable: true })
|
|
21
|
+
createdBy: number;
|
|
22
|
+
|
|
23
|
+
@Column({ name: 'modified_by', type: 'int', nullable: true })
|
|
24
|
+
modifiedBy: number;
|
|
25
|
+
|
|
26
|
+
@Column({ name: 'created_date', type: 'datetime', nullable: true })
|
|
27
|
+
createdDate: Date;
|
|
28
|
+
|
|
29
|
+
@Column({ name: 'modified_date', type: 'datetime', nullable: true })
|
|
30
|
+
modifiedDate: Date;
|
|
31
|
+
|
|
32
|
+
@Column({ name: 'app_code', type: 'varchar', nullable: true, length: 50 })
|
|
33
|
+
appCode: string;
|
|
34
|
+
|
|
35
|
+
@Column({ name: 'app_url_name', type: 'varchar', nullable: true, length: 50 })
|
|
36
|
+
appUrlName: string;
|
|
37
|
+
}
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
-
|
|
3
|
-
@Entity({ name: 'cr_organization' })
|
|
4
|
-
export class OrganizationData {
|
|
5
|
-
@PrimaryGeneratedColumn({ name: 'id', type: 'int' })
|
|
6
|
-
id: number;
|
|
7
|
-
|
|
8
|
-
@Column({ name: 'enterprise_id', type: 'int' })
|
|
9
|
-
enterprise_id: number;
|
|
10
|
-
|
|
11
|
-
@Column({ name: 'code', nullable: true })
|
|
12
|
-
code: string;
|
|
13
|
-
|
|
14
|
-
@Column({ name: 'app_code', nullable: true })
|
|
15
|
-
appCode: string;
|
|
16
|
-
|
|
17
|
-
@Column({ name: 'name', nullable: true })
|
|
18
|
-
name: string;
|
|
19
|
-
|
|
20
|
-
@Column({ name: 'status', type: 'varchar', nullable: true })
|
|
21
|
-
status: string;
|
|
22
|
-
|
|
23
|
-
@Column({ name: 'seq_no', nullable: true })
|
|
24
|
-
seq_no: number;
|
|
25
|
-
|
|
26
|
-
@Column({ name: 'created_by', nullable: true })
|
|
27
|
-
created_by: number;
|
|
28
|
-
|
|
29
|
-
@Column({ name: 'modified_by', nullable: true })
|
|
30
|
-
modified_by: number;
|
|
31
|
-
|
|
32
|
-
@Column({ name: 'created_date', nullable: true })
|
|
33
|
-
created_date: Date;
|
|
34
|
-
|
|
35
|
-
@Column({ name: 'parent_id', nullable: true })
|
|
36
|
-
parent_id: number;
|
|
37
|
-
|
|
38
|
-
@Column({ name: 'modified_date', nullable: true })
|
|
39
|
-
modified_date: Date;
|
|
40
|
-
|
|
41
|
-
@Column({ name: 'contact_number', nullable: true })
|
|
42
|
-
contact_number: string;
|
|
43
|
-
|
|
44
|
-
@Column({ name: 'email', nullable: true })
|
|
45
|
-
emailId: string;
|
|
46
|
-
|
|
47
|
-
@Column({ name: 'entity_type', nullable: true })
|
|
48
|
-
entity_type: string;
|
|
49
|
-
|
|
50
|
-
@Column({ name: 'primary_contact_name', nullable: true })
|
|
51
|
-
primary_contact_name: string;
|
|
52
|
-
|
|
53
|
-
@Column({ name: 'address', nullable: true })
|
|
54
|
-
address: string;
|
|
55
|
-
|
|
56
|
-
@Column({ name: 'gstin', nullable: true })
|
|
57
|
-
gstin: string;
|
|
58
|
-
|
|
59
|
-
@Column({ name: 'company_pan_number', nullable: true })
|
|
60
|
-
company_pan_number: string;
|
|
61
|
-
|
|
62
|
-
@Column({ name: 'bankacc_benef_name', nullable: true })
|
|
63
|
-
bankacc_benef_name: string;
|
|
64
|
-
|
|
65
|
-
@Column({ name: 'bankacc_bank_name', nullable: true })
|
|
66
|
-
bankacc_bank_name: string;
|
|
67
|
-
|
|
68
|
-
@Column({ name: 'bankacc_account_number', nullable: true })
|
|
69
|
-
bankaccAccountNumber: string;
|
|
70
|
-
|
|
71
|
-
@Column({ name: 'bankacc_branch_IFSC', nullable: true })
|
|
72
|
-
bankacc_account_number: string;
|
|
73
|
-
|
|
74
|
-
@Column({
|
|
75
|
-
name: 'organization_type',
|
|
76
|
-
type: 'varchar',
|
|
77
|
-
nullable: true,
|
|
78
|
-
})
|
|
79
|
-
organization_type: string;
|
|
80
|
-
}
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
@Entity({ name: 'cr_organization' })
|
|
4
|
+
export class OrganizationData {
|
|
5
|
+
@PrimaryGeneratedColumn({ name: 'id', type: 'int' })
|
|
6
|
+
id: number;
|
|
7
|
+
|
|
8
|
+
@Column({ name: 'enterprise_id', type: 'int' })
|
|
9
|
+
enterprise_id: number;
|
|
10
|
+
|
|
11
|
+
@Column({ name: 'code', nullable: true })
|
|
12
|
+
code: string;
|
|
13
|
+
|
|
14
|
+
@Column({ name: 'app_code', nullable: true })
|
|
15
|
+
appCode: string;
|
|
16
|
+
|
|
17
|
+
@Column({ name: 'name', nullable: true })
|
|
18
|
+
name: string;
|
|
19
|
+
|
|
20
|
+
@Column({ name: 'status', type: 'varchar', nullable: true })
|
|
21
|
+
status: string;
|
|
22
|
+
|
|
23
|
+
@Column({ name: 'seq_no', nullable: true })
|
|
24
|
+
seq_no: number;
|
|
25
|
+
|
|
26
|
+
@Column({ name: 'created_by', nullable: true })
|
|
27
|
+
created_by: number;
|
|
28
|
+
|
|
29
|
+
@Column({ name: 'modified_by', nullable: true })
|
|
30
|
+
modified_by: number;
|
|
31
|
+
|
|
32
|
+
@Column({ name: 'created_date', nullable: true })
|
|
33
|
+
created_date: Date;
|
|
34
|
+
|
|
35
|
+
@Column({ name: 'parent_id', nullable: true })
|
|
36
|
+
parent_id: number;
|
|
37
|
+
|
|
38
|
+
@Column({ name: 'modified_date', nullable: true })
|
|
39
|
+
modified_date: Date;
|
|
40
|
+
|
|
41
|
+
@Column({ name: 'contact_number', nullable: true })
|
|
42
|
+
contact_number: string;
|
|
43
|
+
|
|
44
|
+
@Column({ name: 'email', nullable: true })
|
|
45
|
+
emailId: string;
|
|
46
|
+
|
|
47
|
+
@Column({ name: 'entity_type', nullable: true })
|
|
48
|
+
entity_type: string;
|
|
49
|
+
|
|
50
|
+
@Column({ name: 'primary_contact_name', nullable: true })
|
|
51
|
+
primary_contact_name: string;
|
|
52
|
+
|
|
53
|
+
@Column({ name: 'address', nullable: true })
|
|
54
|
+
address: string;
|
|
55
|
+
|
|
56
|
+
@Column({ name: 'gstin', nullable: true })
|
|
57
|
+
gstin: string;
|
|
58
|
+
|
|
59
|
+
@Column({ name: 'company_pan_number', nullable: true })
|
|
60
|
+
company_pan_number: string;
|
|
61
|
+
|
|
62
|
+
@Column({ name: 'bankacc_benef_name', nullable: true })
|
|
63
|
+
bankacc_benef_name: string;
|
|
64
|
+
|
|
65
|
+
@Column({ name: 'bankacc_bank_name', nullable: true })
|
|
66
|
+
bankacc_bank_name: string;
|
|
67
|
+
|
|
68
|
+
@Column({ name: 'bankacc_account_number', nullable: true })
|
|
69
|
+
bankaccAccountNumber: string;
|
|
70
|
+
|
|
71
|
+
@Column({ name: 'bankacc_branch_IFSC', nullable: true })
|
|
72
|
+
bankacc_account_number: string;
|
|
73
|
+
|
|
74
|
+
@Column({
|
|
75
|
+
name: 'organization_type',
|
|
76
|
+
type: 'varchar',
|
|
77
|
+
nullable: true,
|
|
78
|
+
})
|
|
79
|
+
organization_type: string;
|
|
80
|
+
}
|
|
@@ -67,7 +67,7 @@ export class ListMasterService extends EntityServiceImpl {
|
|
|
67
67
|
let apiRegistry = await this.apiRegistryService.findById(customSourceId);
|
|
68
68
|
if (!apiRegistry) return [];
|
|
69
69
|
|
|
70
|
-
const url = `${apiRegistry.base_url}${apiRegistry.endpoint}`;
|
|
70
|
+
const url = `${apiRegistry.base_url}${apiRegistry.endpoint.replace(/{{(.*?)}}/g, (_, key) => params?.[key.trim()] || '')}`;
|
|
71
71
|
const payload = this.injectDynamicParams(apiRegistry.request_payload_schema, params);
|
|
72
72
|
|
|
73
73
|
const response = await firstValueFrom(
|
|
@@ -81,7 +81,11 @@ export class ListMasterService extends EntityServiceImpl {
|
|
|
81
81
|
|
|
82
82
|
const data = this.extractByPath(response.data, apiRegistry.response_data_path);
|
|
83
83
|
|
|
84
|
-
if (Array.isArray(data)
|
|
84
|
+
if (!Array.isArray(data)) {
|
|
85
|
+
return [{ label: data, value: data }];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (typeof data[0] === 'string') {
|
|
85
89
|
return data.map((item: string) => ({ label: item, value: item }));
|
|
86
90
|
}
|
|
87
91
|
|
|
@@ -104,11 +108,17 @@ export class ListMasterService extends EntityServiceImpl {
|
|
|
104
108
|
if (!path || !obj) return obj;
|
|
105
109
|
|
|
106
110
|
return path.split('.').reduce((acc, key) => {
|
|
107
|
-
if (acc
|
|
108
|
-
|
|
111
|
+
if (acc == null) return undefined;
|
|
112
|
+
|
|
113
|
+
// Try to convert to number if it's a numeric string (for array indexes)
|
|
114
|
+
const index = Number(key);
|
|
115
|
+
if (!isNaN(index) && Array.isArray(acc)) {
|
|
116
|
+
return acc[index];
|
|
109
117
|
}
|
|
110
|
-
|
|
118
|
+
|
|
119
|
+
return acc[key];
|
|
111
120
|
}, obj);
|
|
112
121
|
}
|
|
113
122
|
|
|
123
|
+
|
|
114
124
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EntityTab } from './entity-tab.dto';
|
|
2
|
-
|
|
3
|
-
export class EntityListData {
|
|
4
|
-
entity_list: any;
|
|
5
|
-
entity_tabs: EntityTab[];
|
|
6
|
-
}
|
|
1
|
+
import { EntityTab } from './entity-tab.dto';
|
|
2
|
+
|
|
3
|
+
export class EntityListData {
|
|
4
|
+
entity_list: any;
|
|
5
|
+
entity_tabs: EntityTab[];
|
|
6
|
+
}
|