feat: Replace Meetings with Calendar - events with types and assigned users
- Rename meetings table to events with type field (meeting/event) - Add eventUsers junction table for user assignments - Members see only events they're assigned to - Calendar endpoint returns events + todos for month - Add migration SQL for database changes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
72
src/routes/event.routes.js
Normal file
72
src/routes/event.routes.js
Normal file
@@ -0,0 +1,72 @@
|
||||
import express from 'express';
|
||||
import * as eventController from '../controllers/event.controller.js';
|
||||
import { authenticate } from '../middlewares/auth/authMiddleware.js';
|
||||
import { requireAdmin } from '../middlewares/auth/roleMiddleware.js';
|
||||
import { validateBody, validateParams, validateQuery } from '../middlewares/security/validateInput.js';
|
||||
import { createEventSchema, updateEventSchema } from '../validators/crm.validators.js';
|
||||
import { z } from 'zod';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const monthQuerySchema = z.object({
|
||||
year: z.string().regex(/^\d{4}$/).optional(),
|
||||
month: z.string().regex(/^(1[0-2]|[1-9])$/).optional(),
|
||||
});
|
||||
|
||||
const eventIdSchema = z.object({
|
||||
eventId: z.string().uuid(),
|
||||
});
|
||||
|
||||
// Všetky routes vyžadujú autentifikáciu
|
||||
router.use(authenticate);
|
||||
|
||||
/**
|
||||
* GET /api/events - Získať eventy a todos podľa mesiaca (filtrované podľa assigned users)
|
||||
*/
|
||||
router.get(
|
||||
'/',
|
||||
validateQuery(monthQuerySchema),
|
||||
eventController.getCalendarData
|
||||
);
|
||||
|
||||
/**
|
||||
* GET /api/events/:eventId - Získať konkrétny event
|
||||
*/
|
||||
router.get(
|
||||
'/:eventId',
|
||||
validateParams(eventIdSchema),
|
||||
eventController.getEventById
|
||||
);
|
||||
|
||||
/**
|
||||
* POST /api/events - Vytvoriť event (iba admin)
|
||||
*/
|
||||
router.post(
|
||||
'/',
|
||||
requireAdmin,
|
||||
validateBody(createEventSchema),
|
||||
eventController.createEvent
|
||||
);
|
||||
|
||||
/**
|
||||
* PUT /api/events/:eventId - Upraviť event (iba admin)
|
||||
*/
|
||||
router.put(
|
||||
'/:eventId',
|
||||
requireAdmin,
|
||||
validateParams(eventIdSchema),
|
||||
validateBody(updateEventSchema),
|
||||
eventController.updateEvent
|
||||
);
|
||||
|
||||
/**
|
||||
* DELETE /api/events/:eventId - Zmazať event (iba admin)
|
||||
*/
|
||||
router.delete(
|
||||
'/:eventId',
|
||||
requireAdmin,
|
||||
validateParams(eventIdSchema),
|
||||
eventController.deleteEvent
|
||||
);
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user