import { Injectable } from "@nestjs/common"; import { PrismaService } from "src/prisma/prisma.service"; import { SchedulePresetsDto, SchedulePresetShiftsDto } from "../schedule-presets.dto"; import { Result } from "src/common/errors/result-error.factory"; @Injectable() export class SchedulePresetsGetService { constructor( private readonly prisma: PrismaService, ) { } async getSchedulePresets(): Promise> { try { const presets = await this.prisma.schedulePresets.findMany({ orderBy: [{ is_default: 'desc' }, { name: 'asc' }], include: { shifts: { orderBy: [{ week_day: 'asc', start_time: 'asc' }], include: { bank_code: { select: { type: true } } }, }, }, }); const hhmm = (date: Date) => date.toISOString().slice(11, 16); const response: SchedulePresetsDto[] = presets.map((preset) => ({ id: preset.id, name: preset.name, is_default: preset.is_default, shifts: preset.shifts.map>((shift) => ({ preset_id: shift.preset_id, week_day: shift.week_day, start_time: hhmm(shift.start_time), end_time: hhmm(shift.end_time), is_remote: shift.is_remote, type: shift.bank_code?.type, })), })); return { success: true, data: response }; } catch (error) { return { success: false, error: `SCHEDULE_PRESET_NOT_FOUND` }; } } }