FIX: changing hierarchy strategy

This commit is contained in:
Gabriel Rosa
2022-07-20 15:17:58 -03:00
parent c61c37b268
commit 3e7581e20c
12 changed files with 205 additions and 71 deletions
+45 -41
View File
@@ -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;
}
}