102 lines
2.6 KiB
TypeScript
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;
|
|
|