diff --git a/prisma/migrations/20250818154612_added_is_supevisor_boolean_to_employee/migration.sql b/prisma/migrations/20250818154612_added_is_supevisor_boolean_to_employee/migration.sql new file mode 100644 index 0000000..0e52b8e --- /dev/null +++ b/prisma/migrations/20250818154612_added_is_supevisor_boolean_to_employee/migration.sql @@ -0,0 +1,11 @@ +/* + Warnings: + + - Added the required column `is_supervisor` to the `employees_archive` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "public"."employees" ADD COLUMN "is_supervisor" BOOLEAN NOT NULL DEFAULT false; + +-- AlterTable +ALTER TABLE "public"."employees_archive" ADD COLUMN "is_supervisor" BOOLEAN NOT NULL; diff --git a/prisma/mock-seeds-scripts/02-users.ts b/prisma/mock-seeds-scripts/02-users.ts index e05257e..5078b3e 100644 --- a/prisma/mock-seeds-scripts/02-users.ts +++ b/prisma/mock-seeds-scripts/02-users.ts @@ -37,6 +37,7 @@ async function main() { // 40 employees for (let i = 0; i < 40; i++) { + const fn = pick(firstNames); const ln = pick(lastNames); usersData.push({ diff --git a/prisma/mock-seeds-scripts/03-employees.ts b/prisma/mock-seeds-scripts/03-employees.ts index 847d539..3076683 100644 --- a/prisma/mock-seeds-scripts/03-employees.ts +++ b/prisma/mock-seeds-scripts/03-employees.ts @@ -53,6 +53,7 @@ async function main() { first_work_day: randomPastDate(3), last_work_day: null, job_title: randomTitle(), + is_supervisor: true, }, }); supervisorEmployeeIds.push(emp.id); diff --git a/prisma/mock-seeds-scripts/05-employees-archive.ts b/prisma/mock-seeds-scripts/05-employees-archive.ts index edd2c2b..c030196 100644 --- a/prisma/mock-seeds-scripts/05-employees-archive.ts +++ b/prisma/mock-seeds-scripts/05-employees-archive.ts @@ -28,6 +28,7 @@ async function main() { last_work_day: daysAgo(30), supervisor_id: e.supervisor_id ?? null, job_title: e.job_title, + is_supervisor: e.is_supervisor, }, }); } diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 71b1f02..3eed529 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -40,7 +40,8 @@ model Employees { company_code Int first_work_day DateTime @db.Date last_work_day DateTime? @db.Date - job_title String? + job_title String? + is_supervisor Boolean @default(false) supervisor Employees? @relation("EmployeeSupervisor", fields: [supervisor_id], references: [id]) supervisor_id Int? @@ -60,12 +61,12 @@ model EmployeesArchive { employee_id Int archived_at DateTime @default(now()) - user_id String @db.Uuid - user Users @relation("UsersToEmployeesToArchive", fields: [user_id], references: [id]) - first_name String - last_name String - job_title String? - + user_id String @db.Uuid + user Users @relation("UsersToEmployeesToArchive", fields: [user_id], references: [id]) + first_name String + last_name String + job_title String? + is_supervisor Boolean external_payroll_id Int company_code Int first_Work_Day DateTime @db.Date diff --git a/src/modules/employees/dtos/create-employee.dto.ts b/src/modules/employees/dtos/create-employee.dto.ts index 1f94aa3..bfdc973 100644 --- a/src/modules/employees/dtos/create-employee.dto.ts +++ b/src/modules/employees/dtos/create-employee.dto.ts @@ -1,6 +1,6 @@ import { Allow, - IsDate, + IsBoolean, IsDateString, IsEmail, IsInt, @@ -53,6 +53,11 @@ export class CreateEmployeeDto { @IsOptional() email: string; + + @IsOptional() + @IsBoolean() + is_supervisor: boolean; + @ApiProperty({ example: '82538437464', description: 'Employee`s phone number', diff --git a/src/modules/employees/services/employees.service.ts b/src/modules/employees/services/employees.service.ts index 9160580..0315812 100644 --- a/src/modules/employees/services/employees.service.ts +++ b/src/modules/employees/services/employees.service.ts @@ -33,6 +33,7 @@ export class EmployeesService { job_title, first_work_day, last_work_day, + is_supervisor, } = dto; return this.prisma.$transaction(async (tx) => { @@ -53,6 +54,7 @@ export class EmployeesService { job_title, first_work_day, last_work_day, + is_supervisor, }, }); }); @@ -171,6 +173,7 @@ async update( job_title, first_work_day, last_work_day, + is_supervisor } = dto; return this.prisma.$transaction(async (tx) => { @@ -193,6 +196,7 @@ async update( ...(first_work_day !== undefined && { first_work_day }), ...(last_work_day !== undefined && { last_work_day }), ...(job_title !== undefined && { job_title }), + ...(is_supervisor !== undefined && { is_supervisor }), }, }); }); @@ -233,6 +237,7 @@ async patchEmployee(id: number, dto: UpdateEmployeeDto): Promise c.id); // seed names map for employee without data