mirror of
https://github.com/dadosfera/maestro.git
synced 2026-11-09 00:39:07 +00:00
FIX: changing hierarchy strategy
This commit is contained in:
@@ -14,14 +14,20 @@ import { lastValueFrom } from 'rxjs';
|
||||
import {
|
||||
BatchCreateUserReq,
|
||||
CreateUserReq,
|
||||
Hierarchy,
|
||||
SetUserRolesReq,
|
||||
UpdateUserReq,
|
||||
User,
|
||||
} from './dtos/entities';
|
||||
import { RolesService } from '../roles/roles.service';
|
||||
import { HIERARCHIES } from './hierarchies';
|
||||
import { LanguageEnum } from 'src/utils/languages.enum';
|
||||
import { UserByCustomer } from 'protospack-v2/dist/lib/Duc/interfaces/entities';
|
||||
|
||||
@Injectable()
|
||||
export class UsersService implements OnModuleInit {
|
||||
logger: any;
|
||||
language: LanguageEnum = LanguageEnum.ptbr;
|
||||
|
||||
private usersClientService: UsersProtoService;
|
||||
constructor(
|
||||
@@ -39,14 +45,16 @@ export class UsersService implements OnModuleInit {
|
||||
);
|
||||
}
|
||||
|
||||
setLanguage(l: LanguageEnum = LanguageEnum.ptbr) {
|
||||
if (Object.values(LanguageEnum).includes(l)) this.language = l;
|
||||
this.rolesService.setLanguage(l);
|
||||
}
|
||||
|
||||
async findAllUsersByCustomerId(customerId: string) {
|
||||
const { users } = await lastValueFrom(
|
||||
this.usersClientService.UserFindAllByCustomerId({ customerId }),
|
||||
);
|
||||
users?.forEach((u) => {
|
||||
const roles: any[] = this.rolesService.getRolesPermissionsName(u.roles);
|
||||
u.roles = roles;
|
||||
});
|
||||
this.adjustUsersPayload(users);
|
||||
return { users };
|
||||
}
|
||||
|
||||
@@ -54,12 +62,7 @@ export class UsersService implements OnModuleInit {
|
||||
const { user } = await lastValueFrom(
|
||||
this.usersClientService.UserFindOneById({ id }),
|
||||
);
|
||||
if (user) {
|
||||
const roles: any[] = this.rolesService.getRolesPermissionsName(
|
||||
user.roles,
|
||||
);
|
||||
user.roles = roles;
|
||||
}
|
||||
this.adjustUsersPayload([user]);
|
||||
return { user };
|
||||
}
|
||||
|
||||
@@ -76,12 +79,7 @@ export class UsersService implements OnModuleInit {
|
||||
roleNames,
|
||||
}),
|
||||
);
|
||||
if (user) {
|
||||
const roles: any[] = this.rolesService.getRolesPermissionsName(
|
||||
user.roles,
|
||||
);
|
||||
user.roles = roles;
|
||||
}
|
||||
this.adjustUsersPayload([user]);
|
||||
return { user };
|
||||
}
|
||||
|
||||
@@ -100,12 +98,7 @@ export class UsersService implements OnModuleInit {
|
||||
jobTitle,
|
||||
}),
|
||||
);
|
||||
if (user) {
|
||||
const roles: any[] = this.rolesService.getRolesPermissionsName(
|
||||
user.roles,
|
||||
);
|
||||
user.roles = roles;
|
||||
}
|
||||
this.adjustUsersPayload([user]);
|
||||
return { user };
|
||||
}
|
||||
|
||||
@@ -121,31 +114,27 @@ export class UsersService implements OnModuleInit {
|
||||
customerId,
|
||||
}),
|
||||
);
|
||||
if (user) {
|
||||
const roles: any[] = this.rolesService.getRolesPermissionsName(
|
||||
user.roles,
|
||||
);
|
||||
user.roles = roles;
|
||||
}
|
||||
this.adjustUsersPayload([user]);
|
||||
return { user };
|
||||
}
|
||||
async batchCreateUser({ users }: BatchCreateUserReq) {
|
||||
const usersToCreate: UserCreateRequest[] = users.map((u) => ({
|
||||
...u,
|
||||
roleIds: [],
|
||||
roleNames: u.roleNames,
|
||||
name: u.name || '',
|
||||
hierarchy: u.hierarchy || null,
|
||||
}));
|
||||
const usersToCreate: UserCreateRequest[] = users.map(
|
||||
({ roleNames, email, department, hierarchy, jobTitle, name }) => ({
|
||||
roleNames,
|
||||
email,
|
||||
department,
|
||||
hierarchy,
|
||||
jobTitle,
|
||||
name,
|
||||
roleIds: [],
|
||||
}),
|
||||
);
|
||||
const { errorUsers, usersCreated } = await lastValueFrom(
|
||||
this.usersClientService.UserBatchCreate({
|
||||
users: usersToCreate,
|
||||
}),
|
||||
);
|
||||
usersCreated?.forEach((u) => {
|
||||
const roles: any[] = this.rolesService.getRolesPermissionsName(u.roles);
|
||||
u.roles = roles;
|
||||
});
|
||||
this.adjustUsersPayload(usersCreated);
|
||||
return { errorUsers, usersCreated };
|
||||
}
|
||||
async assignRoleToUser(body: AssignRoleToUserRequest) {
|
||||
@@ -159,7 +148,22 @@ export class UsersService implements OnModuleInit {
|
||||
async deleteUser(id: IdRequest) {
|
||||
return lastValueFrom(this.usersClientService.UserRemove(id));
|
||||
}
|
||||
async getAllHierarchies() {
|
||||
return lastValueFrom(this.usersClientService.UserFindAllHierarchies({}));
|
||||
|
||||
getAllHierarchies(): Hierarchy[] {
|
||||
return Object.keys(HIERARCHIES).map((key) => ({
|
||||
id: key,
|
||||
name: HIERARCHIES[key]?.name[this.language] || key,
|
||||
}));
|
||||
}
|
||||
|
||||
adjustUsersPayload(users: UserByCustomer[]) {
|
||||
users?.forEach((u) => {
|
||||
if (!u) return;
|
||||
const roles: any[] = this.rolesService.getRolesPermissionsName(u.roles);
|
||||
u.roles = roles;
|
||||
u.hierarchy =
|
||||
HIERARCHIES[u.hierarchy]?.name[this.language] || u.hierarchy;
|
||||
});
|
||||
return users;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user