fix(employee): minor fix for preps setup oauth

This commit is contained in:
Matthieu Haineault 2025-07-16 14:01:26 -04:00
parent 701d1be4ab
commit 3d6bde36ae
4 changed files with 37 additions and 29 deletions

View File

@ -17,7 +17,8 @@ model Users {
id String @id @default(uuid())
first_name String
last_name String
email String? @unique
email String @unique
password String
phone_number Int @unique
residence String?
role Roles @default(GUEST)

View File

@ -27,25 +27,21 @@ export class EmployeesController {
return this.employeesService.findAll();
}
@Get(':employee_id')
findOne(
@Param('employee_id', ParseIntPipe) employee_id: number,
): Promise<Employees> {
return this.employeesService.findOne(employee_id);
@Get(':id')
findOne(@Param('id', ParseIntPipe) id: number): Promise<Employees> {
return this.employeesService.findOne(id);
}
@Patch(':employee_id')
@Patch(':id')
update(
@Param('employee_id', ParseIntPipe) employee_id: number,
@Param('id', ParseIntPipe) id: number,
@Body() dto: UpdateEmployeeDto,
): Promise<Employees> {
return this.employeesService.update(employee_id, dto);
return this.employeesService.update(id, dto);
}
@Delete(':employee_id')
remove(
@Param('employee_id', ParseIntPipe) employee_id: number,
): Promise<Employees> {
return this.employeesService.remove(employee_id);
@Delete(':id')
remove(@Param('id', ParseIntPipe) id: number): Promise<Employees> {
return this.employeesService.remove(id);
}
}

View File

@ -9,6 +9,7 @@ import {
IsString,
} from 'class-validator';
import { Type } from 'class-transformer';
import { Roles } from '@prisma/client';
export class CreateEmployeeDto {
@IsString()
@ -20,13 +21,15 @@ export class CreateEmployeeDto {
last_name: string;
@IsEmail()
@IsOptional()
email?: string;
@IsNotEmpty()
email: string;
@IsString()
@IsNotEmpty()
password: string;
@Type(() => Number)
@IsInt({
message: 'Le numéro de téléphone doit être sans tirets ni espaces.',
})
@IsInt()
@IsPositive()
phone_number: number;
@ -34,6 +37,10 @@ export class CreateEmployeeDto {
@IsOptional()
residence?: string;
@IsString()
@IsNotEmpty()
role: Roles;
@IsInt()
@IsPositive()
@Type(() => Number)

View File

@ -17,8 +17,10 @@ export class EmployeesService {
first_name,
last_name,
email,
password,
phone_number,
residence,
role,
external_payroll_id,
company_code,
first_work_day,
@ -31,13 +33,15 @@ export class EmployeesService {
first_name,
last_name,
email,
password,
phone_number,
residence,
role,
},
});
return tx.employees.create({
data: {
user_id: user.user_id,
user_id: user.id,
external_payroll_id,
company_code,
first_work_day,
@ -53,24 +57,24 @@ export class EmployeesService {
});
}
async findOne(employee_id: number): Promise<Employees> {
async findOne(id: number): Promise<Employees> {
const emp = await this.prisma.employees.findUnique({
where: { employee_id },
where: { id },
include: { user: true },
});
if (!emp) {
throw new NotFoundException(`Employee #${employee_id} not found`);
throw new NotFoundException(`Employee #${id} not found`);
}
return emp;
}
async update(
employee_id: number,
id: number,
dto: UpdateEmployeeDto,
): Promise<Employees> {
await this.findOne(employee_id);
await this.findOne(id);
return this.prisma.employees.update({
where: { employee_id },
where: { id },
data: {
external_payroll_id: dto.external_payroll_id,
company_code: dto.company_code,
@ -80,8 +84,8 @@ export class EmployeesService {
});
}
async remove(employee_id: number): Promise<Employees> {
await this.findOne(employee_id);
return this.prisma.employees.delete({ where: { employee_id } });
async remove(id: number): Promise<Employees> {
await this.findOne(id);
return this.prisma.employees.delete({ where: { id } });
}
}