diff --git a/src/time-and-attendance/schedule-presets/schedule-presets.module.ts b/src/time-and-attendance/schedule-presets/schedule-presets.module.ts index b484bfa..a2c141b 100644 --- a/src/time-and-attendance/schedule-presets/schedule-presets.module.ts +++ b/src/time-and-attendance/schedule-presets/schedule-presets.module.ts @@ -1,11 +1,12 @@ import { Module } from "@nestjs/common"; +import { BankCodesResolver } from "src/common/mappers/bank-type-id.mapper"; + import { SchedulePresetsController } from "src/time-and-attendance/schedule-presets/controller/schedule-presets.controller"; import { SchedulePresetsGetService } from "src/time-and-attendance/schedule-presets/services/schedule-presets-get.service"; import { SchedulePresetsCreateService } from "src/time-and-attendance/schedule-presets/services/schedule-presets-create.service"; import { SchedulePresetUpdateService } from "src/time-and-attendance/schedule-presets/services/schedule-presets-update.service"; import { SchedulePresetDeleteService } from "src/time-and-attendance/schedule-presets/services/schedule-presets-delete.service"; -import { BankCodesResolver } from "src/common/mappers/bank-type-id.mapper"; diff --git a/src/time-and-attendance/shifts/controllers/shift.controller.ts b/src/time-and-attendance/shifts/controllers/shift.controller.ts index ea290bc..3dd0ebd 100644 --- a/src/time-and-attendance/shifts/controllers/shift.controller.ts +++ b/src/time-and-attendance/shifts/controllers/shift.controller.ts @@ -1,17 +1,21 @@ import { Body, Controller, Delete, Param, Patch, Post } from "@nestjs/common"; -import { Result } from "src/common/errors/result-error.factory"; +import { Modules as ModulesEnum } from ".prisma/client"; + import { ShiftDto } from "src/time-and-attendance/shifts/dtos/shift-create.dto"; import { ShiftsCreateService } from "src/time-and-attendance/shifts/services/shifts-create.service"; -import { ShiftsUpdateDeleteService } from "src/time-and-attendance/shifts/services/shifts-update-delete.service"; +import { ShiftsUpdateService } from "src/time-and-attendance/shifts/services/shifts-update-delete.service"; +import { ShiftsDeleteService } from "src/time-and-attendance/shifts/services/shifts-delete.service"; + import { ModuleAccessAllowed } from "src/common/decorators/modules-guard.decorators"; -import { Modules as ModulesEnum } from ".prisma/client"; +import { Result } from "src/common/errors/result-error.factory"; import { Access } from "src/common/decorators/module-access.decorators"; @Controller('shift') export class ShiftController { constructor( private readonly create_service: ShiftsCreateService, - private readonly update_delete_service: ShiftsUpdateDeleteService, + private readonly update_service: ShiftsUpdateService, + private readonly delete_service: ShiftsDeleteService, ) { } @Post('create') @@ -23,13 +27,13 @@ export class ShiftController { @Patch('update') @ModuleAccessAllowed(ModulesEnum.timesheets) updateBatch(@Access('email') email: string, @Body() dtos: ShiftDto[]): Promise> { - return this.update_delete_service.updateOneOrManyShifts(dtos, email); + return this.update_service.updateOneOrManyShifts(dtos, email); } @Delete(':shift_id') @ModuleAccessAllowed(ModulesEnum.timesheets) remove(@Param('shift_id') shift_id: number): Promise> { - return this.update_delete_service.deleteShift(shift_id); + return this.delete_service.deleteShift(shift_id); } } diff --git a/src/time-and-attendance/shifts/services/shifts-delete.service.ts b/src/time-and-attendance/shifts/services/shifts-delete.service.ts new file mode 100644 index 0000000..f214407 --- /dev/null +++ b/src/time-and-attendance/shifts/services/shifts-delete.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from "@nestjs/common"; +import { Result } from "src/common/errors/result-error.factory"; +import { PrismaService } from "src/prisma/prisma.service"; + +@Injectable() +export class ShiftsDeleteService { + constructor(private readonly prisma: PrismaService) { } + //_________________________________________________________________ + // DELETE + //_________________________________________________________________ + //finds shifts using shit_ids + //blocs deletion if approved + async deleteShift(shift_id: number): Promise> { + try { + return await this.prisma.$transaction(async (tx) => { + const shift = await tx.shifts.findUnique({ + where: { id: shift_id }, + select: { id: true, date: true, timesheet_id: true }, + }); + if (!shift) return { success: false, error: `SHIFT_NOT_FOUND` }; + + await tx.shifts.delete({ where: { id: shift_id } }); + return { success: true, data: shift.id }; + }); + } catch (error) { + return { success: false, error: `SHIFT_NOT_FOUND` } + } + } +} \ No newline at end of file diff --git a/src/time-and-attendance/shifts/services/shifts-update-delete.service.ts b/src/time-and-attendance/shifts/services/shifts-update-delete.service.ts index 292b268..2ea0c0b 100644 --- a/src/time-and-attendance/shifts/services/shifts-update-delete.service.ts +++ b/src/time-and-attendance/shifts/services/shifts-update-delete.service.ts @@ -1,15 +1,17 @@ -import { BankCodesResolver } from "src/common/mappers/bank-type-id.mapper"; -import { PrismaService } from "src/prisma/prisma.service"; -import { shift_select } from "src/time-and-attendance/utils/selects.utils"; -import { Injectable } from "@nestjs/common"; -import { Normalized } from "src/time-and-attendance/utils/type.utils"; -import { Result } from "src/common/errors/result-error.factory"; -import { EmployeeTimesheetResolver } from "src/common/mappers/timesheet.mapper"; import { toDateFromString, toStringFromHHmm, toStringFromDate, toDateFromHHmm, overlaps } from "src/common/utils/date-utils"; +import { Injectable } from "@nestjs/common"; +import { PrismaService } from "src/prisma/prisma.service"; + +import { EmployeeTimesheetResolver } from "src/common/mappers/timesheet.mapper"; +import { BankCodesResolver } from "src/common/mappers/bank-type-id.mapper"; +import { Result } from "src/common/errors/result-error.factory"; + +import { shift_select } from "src/time-and-attendance/utils/selects.utils"; +import { Normalized } from "src/time-and-attendance/utils/type.utils"; import { ShiftDto } from "src/time-and-attendance/shifts/dtos/shift-create.dto"; @Injectable() -export class ShiftsUpdateDeleteService { +export class ShiftsUpdateService { constructor( private readonly prisma: PrismaService, private readonly typeResolver: BankCodesResolver, @@ -113,28 +115,6 @@ export class ShiftsUpdateDeleteService { } } - //_________________________________________________________________ - // DELETE - //_________________________________________________________________ - //finds shifts using shit_ids - //blocs deletion if approved - async deleteShift(shift_id: number): Promise> { - try { - return await this.prisma.$transaction(async (tx) => { - const shift = await tx.shifts.findUnique({ - where: { id: shift_id }, - select: { id: true, date: true, timesheet_id: true }, - }); - if (!shift) return { success: false, error: `SHIFT_NOT_FOUND` }; - - await tx.shifts.delete({ where: { id: shift_id } }); - return { success: true, data: shift.id }; - }); - } catch (error) { - return { success: false, error: `SHIFT_NOT_FOUND` } - } - } - //_________________________________________________________________ // helpers //_________________________________________________________________ diff --git a/src/time-and-attendance/shifts/shifts.module.ts b/src/time-and-attendance/shifts/shifts.module.ts index 7599e92..7cdcbfe 100644 --- a/src/time-and-attendance/shifts/shifts.module.ts +++ b/src/time-and-attendance/shifts/shifts.module.ts @@ -1,12 +1,14 @@ import { Module } from '@nestjs/common'; + import { ShiftController } from 'src/time-and-attendance/shifts/controllers/shift.controller'; import { ShiftsCreateService } from 'src/time-and-attendance/shifts/services/shifts-create.service'; -import { ShiftsUpdateDeleteService } from 'src/time-and-attendance/shifts/services/shifts-update-delete.service'; +import { ShiftsDeleteService } from 'src/time-and-attendance/shifts/services/shifts-delete.service'; +import { ShiftsUpdateService } from 'src/time-and-attendance/shifts/services/shifts-update-delete.service'; @Module({ controllers: [ShiftController], - providers: [ ShiftsCreateService, ShiftsUpdateDeleteService ], - exports: [ ShiftsCreateService, ShiftsUpdateDeleteService ], + providers: [ShiftsCreateService, ShiftsUpdateService, ShiftsDeleteService], + exports: [ShiftsCreateService, ShiftsUpdateService, ShiftsDeleteService], }) -export class ShiftsModule {} +export class ShiftsModule { } diff --git a/src/time-and-attendance/time-and-attendance.module.ts b/src/time-and-attendance/time-and-attendance.module.ts index 6c7ba61..cc626f3 100644 --- a/src/time-and-attendance/time-and-attendance.module.ts +++ b/src/time-and-attendance/time-and-attendance.module.ts @@ -27,7 +27,8 @@ import { CsvExportController } from "src/modules/exports/controllers/csv-exports import { ShiftController } from "src/time-and-attendance/shifts/controllers/shift.controller"; import { ShiftsCreateService } from "src/time-and-attendance/shifts/services/shifts-create.service"; import { ShiftsGetService } from "src/time-and-attendance/shifts/services/shifts-get.service"; -import { ShiftsUpdateDeleteService } from "src/time-and-attendance/shifts/services/shifts-update-delete.service"; +import { ShiftsUpdateService } from "src/time-and-attendance/shifts/services/shifts-update-delete.service"; +import { ShiftsDeleteService } from "src/time-and-attendance/shifts/services/shifts-delete.service"; import { SchedulePresetsGetService } from "src/time-and-attendance/schedule-presets/services/schedule-presets-get.service"; import { SchedulePresetsController } from "src/time-and-attendance/schedule-presets/controller/schedule-presets.controller"; @@ -59,7 +60,8 @@ import { SchedulePresetsCreateService } from "src/time-and-attendance/schedule-p GetTimesheetsOverviewService, ShiftsGetService, ShiftsCreateService, - ShiftsUpdateDeleteService, + ShiftsUpdateService, + ShiftsDeleteService, ExpenseUpsertService, SchedulePresetsGetService, SchedulePresetDeleteService,