import type { FastifyInstance } from 'fastify';
import { getHandler, updateSettingsHandler, addHolidayHandler, updateHolidayHandler, deleteHolidayHandler } from '../controllers/officeCalendar.controller.js';
import { authorize } from '../plugins/authorize.js';
import { PERMISSIONS } from '../constants/permissions.js';
import { updateOfficeSettingsSchema, addHolidaySchema, updateHolidaySchema } from '../schemas/officeCalendar.schema.js';

export default async function officeCalendarRoutes(fastify: FastifyInstance) {
  fastify.get('/api/office-calendar', { preHandler: [authorize(PERMISSIONS.OFFICE_CALENDAR_VIEW)] }, getHandler);
  fastify.put('/api/office-calendar/settings', { preHandler: [authorize(PERMISSIONS.OFFICE_CALENDAR_EDIT)], schema: updateOfficeSettingsSchema }, updateSettingsHandler);
  fastify.post('/api/office-calendar/holidays', { preHandler: [authorize(PERMISSIONS.OFFICE_CALENDAR_EDIT)], schema: addHolidaySchema }, addHolidayHandler);
  fastify.put('/api/office-calendar/holidays/:id', { preHandler: [authorize(PERMISSIONS.OFFICE_CALENDAR_EDIT)], schema: updateHolidaySchema }, updateHolidayHandler);
  fastify.delete('/api/office-calendar/holidays/:id', { preHandler: [authorize(PERMISSIONS.OFFICE_CALENDAR_EDIT)] }, deleteHolidayHandler);
}
