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()) id String @id @default(uuid())
first_name String first_name String
last_name String last_name String
email String? @unique email String @unique
password String
phone_number Int @unique phone_number Int @unique
residence String? residence String?
role Roles @default(GUEST) role Roles @default(GUEST)

View File

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

View File

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

View File

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