import type { FastifyRequest, FastifyReply } from 'fastify';
import * as service from '../services/officeCalendar.service.js';

export async function getHandler(_request: FastifyRequest, _reply: FastifyReply) {
  return service.getSettingsAndHolidays();
}

export async function updateSettingsHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { startTime, endTime, weeklyOffDay } = request.body as { startTime: string; endTime: string; weeklyOffDay: number };
  return service.updateOfficeSettings(startTime, endTime, weeklyOffDay, request.user.id);
}

export async function addHolidayHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { date, type, halfDayStart, halfDayEnd, remark } = request.body as {
    date: string; type: 'holiday' | 'half_day' | 'active_day'; halfDayStart?: string; halfDayEnd?: string; remark?: string;
  };
  return service.addHoliday(date, type, halfDayStart, halfDayEnd, remark, request.user.id);
}

export async function updateHolidayHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { id } = request.params as { id: string };
  const { date, type, halfDayStart, halfDayEnd, remark } = request.body as {
    date: string; type: 'holiday' | 'half_day' | 'active_day'; halfDayStart?: string; halfDayEnd?: string; remark?: string;
  };
  return service.updateHoliday(id, date, type, halfDayStart, halfDayEnd, remark, request.user.id);
}

export async function deleteHolidayHandler(request: FastifyRequest, _reply: FastifyReply) {
  const { id } = request.params as { id: string };
  await service.deleteHoliday(id, request.user.id);
  return { ok: true };
}
