Re_Backend/src/routes/admin.routes.ts

102 lines
2.6 KiB
TypeScript

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;