feat(help): set-up function to build personnalized help in the help section
This commit is contained in:
parent
b9c838d3e5
commit
08679b7db3
|
|
@ -823,6 +823,20 @@
|
||||||
"ModuleAccess"
|
"ModuleAccess"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"/help": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "HomePageController_getIntroductionHelper",
|
||||||
|
"parameters": [],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"HomePage"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"info": {
|
"info": {
|
||||||
|
|
|
||||||
16
src/identity-and-account/home-page/home-page.controller.ts
Normal file
16
src/identity-and-account/home-page/home-page.controller.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { Controller, Get } from "@nestjs/common";
|
||||||
|
import { ModuleAccessAllowed } from "src/common/decorators/modules-guard.decorators";
|
||||||
|
import { HomePageService } from "src/identity-and-account/home-page/home-page.service";
|
||||||
|
import { Modules as ModulesEnum } from ".prisma/client";
|
||||||
|
import { Access } from "src/common/decorators/module-access.decorators";
|
||||||
|
|
||||||
|
@Controller()
|
||||||
|
export class HomePageController {
|
||||||
|
constructor(private readonly homePageService: HomePageService) { }
|
||||||
|
|
||||||
|
@Get('help')
|
||||||
|
@ModuleAccessAllowed(ModulesEnum.dashboard)
|
||||||
|
async getIntroductionHelper(@Access('email') email: string) {
|
||||||
|
return await this.homePageService.buildHomePageHelpMessage(email);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
src/identity-and-account/home-page/home-page.module.ts
Normal file
11
src/identity-and-account/home-page/home-page.module.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { Module } from "@nestjs/common";
|
||||||
|
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";
|
||||||
|
import { HomePageController } from "src/identity-and-account/home-page/home-page.controller";
|
||||||
|
import { HomePageService } from "src/identity-and-account/home-page/home-page.service";
|
||||||
|
|
||||||
|
@Module({
|
||||||
|
controllers: [HomePageController],
|
||||||
|
providers: [HomePageService, EmailToIdResolver],
|
||||||
|
exports: [HomePageService],
|
||||||
|
})
|
||||||
|
export class HomePageModule { };
|
||||||
41
src/identity-and-account/home-page/home-page.service.ts
Normal file
41
src/identity-and-account/home-page/home-page.service.ts
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
import { Injectable } from "@nestjs/common";
|
||||||
|
import { Result } from "src/common/errors/result-error.factory";
|
||||||
|
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";
|
||||||
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class HomePageService {
|
||||||
|
constructor(
|
||||||
|
private readonly prisma: PrismaService,
|
||||||
|
private readonly emailresolver: EmailToIdResolver,
|
||||||
|
) { }
|
||||||
|
|
||||||
|
buildHomePageHelpMessage = async (email: string): Promise<Result<string[], string>> => {
|
||||||
|
const user_id = await this.emailresolver.resolveUserIdWithEmail(email);
|
||||||
|
if (!user_id.success) return { success: false, error: 'INVALID_EMAIL' };
|
||||||
|
|
||||||
|
const module_access = await this.prisma.userModuleAccess.findUnique({
|
||||||
|
where: { user_id: user_id.data },
|
||||||
|
select: {
|
||||||
|
dashboard: true,
|
||||||
|
employee_list: true,
|
||||||
|
employee_management: true,
|
||||||
|
personal_profile: true,
|
||||||
|
timesheets: true,
|
||||||
|
timesheets_approval: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
if (!module_access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' };
|
||||||
|
|
||||||
|
const help_message: string[] = [];
|
||||||
|
|
||||||
|
if (module_access.dashboard) help_message.push('dashboard');
|
||||||
|
if (module_access.personal_profile) help_message.push('personnal_profile');
|
||||||
|
if (module_access.timesheets) help_message.push('timesheets');
|
||||||
|
if (module_access.employee_list) help_message.push('employee_list');
|
||||||
|
if (module_access.employee_management) help_message.push('employee_management');
|
||||||
|
if (module_access.timesheets_approval) help_message.push('timesheets_approval');
|
||||||
|
|
||||||
|
return { success: true, data: help_message };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -12,8 +12,11 @@ import { AccessGetService } from "src/identity-and-account/user-module-access/se
|
||||||
import { AccessUpdateService } from "src/identity-and-account/user-module-access/services/module-access-update.service";
|
import { AccessUpdateService } from "src/identity-and-account/user-module-access/services/module-access-update.service";
|
||||||
import { UsersService } from "src/identity-and-account/users-management/services/users.service";
|
import { UsersService } from "src/identity-and-account/users-management/services/users.service";
|
||||||
import { UsersModule } from "src/identity-and-account/users-management/users.module";
|
import { UsersModule } from "src/identity-and-account/users-management/users.module";
|
||||||
|
import { HomePageModule } from "src/identity-and-account/home-page/home-page.module";
|
||||||
import { EmployeesCreateService } from "src/identity-and-account/employees/services/employees-create.service";
|
import { EmployeesCreateService } from "src/identity-and-account/employees/services/employees-create.service";
|
||||||
import { EmployeesUpdateService } from "src/identity-and-account/employees/services/employees-update.service";
|
import { EmployeesUpdateService } from "src/identity-and-account/employees/services/employees-update.service";
|
||||||
|
import { HomePageController } from "src/identity-and-account/home-page/home-page.controller";
|
||||||
|
import { HomePageService } from "src/identity-and-account/home-page/home-page.service";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|
@ -21,11 +24,13 @@ import { EmployeesUpdateService } from "src/identity-and-account/employees/servi
|
||||||
EmployeesModule,
|
EmployeesModule,
|
||||||
PreferencesModule,
|
PreferencesModule,
|
||||||
ModuleAccessModule,
|
ModuleAccessModule,
|
||||||
|
HomePageModule,
|
||||||
],
|
],
|
||||||
controllers: [
|
controllers: [
|
||||||
EmployeesController,
|
EmployeesController,
|
||||||
PreferencesController,
|
PreferencesController,
|
||||||
ModuleAccessController,
|
ModuleAccessController,
|
||||||
|
HomePageController,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
EmployeesGetService,
|
EmployeesGetService,
|
||||||
|
|
@ -36,6 +41,7 @@ import { EmployeesUpdateService } from "src/identity-and-account/employees/servi
|
||||||
EmailToIdResolver,
|
EmailToIdResolver,
|
||||||
AccessUpdateService,
|
AccessUpdateService,
|
||||||
AccessGetService,
|
AccessGetService,
|
||||||
|
HomePageService,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class IdentityAndAccountModule { };
|
export class IdentityAndAccountModule { };
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user