diff --git a/src/modules/leave-requests/services/holiday-leave-requests.service.ts b/src/modules/leave-requests/services/holiday-leave-requests.service.ts index a3c72d1..a6d17c2 100644 --- a/src/modules/leave-requests/services/holiday-leave-requests.service.ts +++ b/src/modules/leave-requests/services/holiday-leave-requests.service.ts @@ -8,6 +8,8 @@ import { mapRowToView } from '../mappers/leave-requests.mapper'; import { leaveRequestsSelect } from '../utils/leave-requests.select'; import { LeaveRequestsUtils} from '../utils/leave-request.util'; import { normalizeDates, toDateOnly } from 'src/modules/shared/helpers/date-time.helpers'; +import { BankCodesResolver } from 'src/modules/shared/utils/resolve-bank-type-id.utils'; +import { EmployeeIdEmailResolver } from 'src/modules/shared/utils/resolve-email-id.utils'; @Injectable() @@ -16,12 +18,14 @@ export class HolidayLeaveRequestsService { private readonly prisma: PrismaService, private readonly holidayService: HolidayService, private readonly leaveUtils: LeaveRequestsUtils, + private readonly emailResolver: EmployeeIdEmailResolver, + private readonly typeResolver: BankCodesResolver, ) {} async create(dto: UpsertLeaveRequestDto): Promise { const email = dto.email.trim(); - const employee_id = await this.leaveUtils.resolveEmployeeIdByEmail(email); - const bank_code = await this.leaveUtils.resolveBankCodeByType(LeaveTypes.HOLIDAY); + const employee_id = await this.emailResolver.findIdByEmail(email); + const bank_code = await this.typeResolver.findByType(LeaveTypes.HOLIDAY); if(!bank_code) throw new NotFoundException(`bank_code not found`); const dates = normalizeDates(dto.dates); if (!dates.length) throw new BadRequestException('Dates array must not be empty'); diff --git a/src/modules/leave-requests/services/leave-request.service.ts b/src/modules/leave-requests/services/leave-request.service.ts index 4b42f55..f46ab5c 100644 --- a/src/modules/leave-requests/services/leave-request.service.ts +++ b/src/modules/leave-requests/services/leave-request.service.ts @@ -14,6 +14,8 @@ import { VacationService } from "src/modules/business-logics/services/vacation.s import { PrismaService } from "src/prisma/prisma.service"; import { LeaveRequestsUtils } from "../utils/leave-request.util"; import { normalizeDates, toDateOnly, toISODateKey } from "src/modules/shared/helpers/date-time.helpers"; +import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils"; +import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils"; @Injectable() export class LeaveRequestsService { @@ -26,6 +28,8 @@ export class LeaveRequestsService { private readonly vacationLeaveService: VacationLeaveRequestsService, private readonly vacationLogic: VacationService, private readonly leaveUtils: LeaveRequestsUtils, + private readonly emailResolver: EmployeeIdEmailResolver, + private readonly typeResolver: BankCodesResolver, ) {} //handle distribution to the right service according to the selected type and action @@ -63,7 +67,7 @@ export class LeaveRequestsService { async delete(dto: UpsertLeaveRequestDto, type: LeaveTypes): Promise { const email = dto.email.trim(); const dates = normalizeDates(dto.dates); - const employee_id = await this.leaveUtils.resolveEmployeeIdByEmail(email); + const employee_id = await this.emailResolver.findIdByEmail(email); if (!dates.length) throw new BadRequestException("Dates array must not be empty"); const rows = await this.prisma.leaveRequests.findMany({ @@ -97,8 +101,8 @@ export class LeaveRequestsService { async update(dto: UpsertLeaveRequestDto, type: LeaveTypes): Promise { const email = dto.email.trim(); - const employee_id = await this.leaveUtils.resolveEmployeeIdByEmail(email); - const bank_code = await this.leaveUtils.resolveBankCodeByType(type); + const employee_id = await this.emailResolver.findIdByEmail(email); + const bank_code = await this.typeResolver.findByType(type); if(!bank_code) throw new NotFoundException(`bank_code not found`); const modifier = Number(bank_code.modifier ?? 1); const dates = normalizeDates(dto.dates); diff --git a/src/modules/leave-requests/services/sick-leave-requests.service.ts b/src/modules/leave-requests/services/sick-leave-requests.service.ts index ba3d77f..a99488c 100644 --- a/src/modules/leave-requests/services/sick-leave-requests.service.ts +++ b/src/modules/leave-requests/services/sick-leave-requests.service.ts @@ -9,6 +9,8 @@ import { SickLeaveService } from "src/modules/business-logics/services/sick-le import { roundToQuarterHour } from "src/common/utils/date-utils"; import { LeaveRequestsUtils } from "../utils/leave-request.util"; import { normalizeDates, toDateOnly } from "src/modules/shared/helpers/date-time.helpers"; +import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils"; +import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils"; @Injectable() export class SickLeaveRequestsService { @@ -16,12 +18,14 @@ export class SickLeaveRequestsService { private readonly prisma: PrismaService, private readonly sickService: SickLeaveService, private readonly leaveUtils: LeaveRequestsUtils, + private readonly emailResolver: EmployeeIdEmailResolver, + private readonly typeResolver: BankCodesResolver, ) {} async create(dto: UpsertLeaveRequestDto): Promise { const email = dto.email.trim(); - const employee_id = await this.leaveUtils.resolveEmployeeIdByEmail(email); - const bank_code = await this.leaveUtils.resolveBankCodeByType(LeaveTypes.SICK); + const employee_id = await this.emailResolver.findIdByEmail(email); + const bank_code = await this.typeResolver.findByType(LeaveTypes.SICK); if(!bank_code) throw new NotFoundException(`bank_code not found`); const modifier = bank_code.modifier ?? 1; diff --git a/src/modules/leave-requests/services/vacation-leave-requests.service.ts b/src/modules/leave-requests/services/vacation-leave-requests.service.ts index 90126a8..d1bce32 100644 --- a/src/modules/leave-requests/services/vacation-leave-requests.service.ts +++ b/src/modules/leave-requests/services/vacation-leave-requests.service.ts @@ -10,6 +10,8 @@ import { leaveRequestsSelect } from "../utils/leave-requests.select"; import { roundToQuarterHour } from "src/common/utils/date-utils"; import { LeaveRequestsUtils } from "../utils/leave-request.util"; import { normalizeDates, toDateOnly } from "src/modules/shared/helpers/date-time.helpers"; +import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils"; +import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils"; @Injectable() export class VacationLeaveRequestsService { @@ -17,12 +19,14 @@ export class VacationLeaveRequestsService { private readonly prisma: PrismaService, private readonly vacationService: VacationService, private readonly leaveUtils: LeaveRequestsUtils, + private readonly emailResolver: EmployeeIdEmailResolver, + private readonly typeResolver: BankCodesResolver, ) {} async create(dto: UpsertLeaveRequestDto): Promise { const email = dto.email.trim(); - const employee_id = await this.leaveUtils.resolveEmployeeIdByEmail(email); - const bank_code = await this.leaveUtils.resolveBankCodeByType(LeaveTypes.VACATION); + const employee_id = await this.emailResolver.findIdByEmail(email); + const bank_code = await this.typeResolver.findByType(LeaveTypes.VACATION); if(!bank_code) throw new NotFoundException(`bank_code not found`); const modifier = bank_code.modifier ?? 1; diff --git a/src/modules/leave-requests/utils/leave-request.util.ts b/src/modules/leave-requests/utils/leave-request.util.ts index a826728..7cd41de 100644 --- a/src/modules/leave-requests/utils/leave-request.util.ts +++ b/src/modules/leave-requests/utils/leave-request.util.ts @@ -11,26 +11,6 @@ export class LeaveRequestsUtils { private readonly shiftsCommand: ShiftsCommandService, ){} - async resolveEmployeeIdByEmail(email: string): Promise { - const employee = await this.prisma.employees.findFirst({ - where: { user: { email } }, - select: { id: true }, - }); - if (!employee) { - throw new NotFoundException(`Employee with email ${email} not found`); - } - return employee.id; - } - - async resolveBankCodeByType(type: LeaveTypes) { - const bankCode = await this.prisma.bankCodes.findFirst({ - where: { type }, - select: { id: true, bank_code: true, modifier: true }, - }); - if (!bankCode) throw new BadRequestException(`Bank code type "${type}" not found`); - return bankCode; - } - async syncShift( email: string, employee_id: number,