import { Router } from 'express'; import { authenticateToken } from '@middlewares/auth.middleware'; import { requireAdmin } from '@middlewares/authorization.middleware'; import { getAllHolidays, getHolidayCalendar, createHoliday, updateHoliday, deleteHoliday, bulkImportHolidays, getAllConfigurations, updateConfiguration, resetConfiguration } from '@controllers/admin.controller'; const router = Router(); // All admin routes require authentication and admin role router.use(authenticateToken); router.use(requireAdmin); // ==================== Holiday Management Routes ==================== /** * @route GET /api/admin/holidays * @desc Get all holidays (optional year filter) * @query year (optional) * @access Admin */ router.get('/holidays', getAllHolidays); /** * @route GET /api/admin/holidays/calendar/:year * @desc Get holiday calendar for a specific year * @params year * @access Admin */ router.get('/holidays/calendar/:year', getHolidayCalendar); /** * @route POST /api/admin/holidays * @desc Create a new holiday * @body { holidayDate, holidayName, description, holidayType, isRecurring, ... } * @access Admin */ router.post('/holidays', createHoliday); /** * @route PUT /api/admin/holidays/:holidayId * @desc Update a holiday * @params holidayId * @body Holiday fields to update * @access Admin */ router.put('/holidays/:holidayId', updateHoliday); /** * @route DELETE /api/admin/holidays/:holidayId * @desc Delete (deactivate) a holiday * @params holidayId * @access Admin */ router.delete('/holidays/:holidayId', deleteHoliday); /** * @route POST /api/admin/holidays/bulk-import * @desc Bulk import holidays from CSV/JSON * @body { holidays: [...] } * @access Admin */ router.post('/holidays/bulk-import', bulkImportHolidays); // ==================== Configuration Management Routes ==================== /** * @route GET /api/admin/configurations * @desc Get all admin configurations (optional category filter) * @query category (optional) * @access Admin */ router.get('/configurations', getAllConfigurations); /** * @route PUT /api/admin/configurations/:configKey * @desc Update a configuration value * @params configKey * @body { configValue } * @access Admin */ router.put('/configurations/:configKey', updateConfiguration); /** * @route POST /api/admin/configurations/:configKey/reset * @desc Reset configuration to default value * @params configKey * @access Admin */ router.post('/configurations/:configKey/reset', resetConfiguration); export default router;