import express from 'express'; import * as eventController from '../controllers/event.controller.js'; import { authenticate } from '../middlewares/auth/authMiddleware.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/today-count - Získať počet eventov a todos pre dnešok (pre badge v sidebar) */ router.get('/today-count', eventController.getTodayCount); /** * 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 (všetci autentifikovaní používatelia) */ router.post( '/', validateBody(createEventSchema), eventController.createEvent ); /** * PUT /api/events/:eventId - Upraviť event (všetci autentifikovaní používatelia) */ router.put( '/:eventId', validateParams(eventIdSchema), validateBody(updateEventSchema), eventController.updateEvent ); /** * DELETE /api/events/:eventId - Zmazať event (všetci autentifikovaní používatelia) */ router.delete( '/:eventId', validateParams(eventIdSchema), eventController.deleteEvent ); /** * POST /api/events/:eventId/notify - Odoslať notifikácie priradeným používateľom (všetci autentifikovaní používatelia) */ router.post( '/:eventId/notify', validateParams(eventIdSchema), eventController.sendEventNotification ); export default router;