feat: Add services, company documents, company timesheet export

- Add services table and CRUD endpoints (/api/services)
- Add company documents upload/download functionality
- Add company timesheet XLSX export endpoint
- Remove admin requirement from event routes (all authenticated users can manage events)
- Add service validators

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
richardtekula
2026-01-17 18:45:01 +01:00
parent b542d1d635
commit 514b6c8a92
13 changed files with 866 additions and 11 deletions

View File

@@ -1,7 +1,6 @@
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';
@@ -39,42 +38,38 @@ router.get(
);
/**
* POST /api/events - Vytvoriť event (iba admin)
* POST /api/events - Vytvoriť event (všetci autentifikovaní používatelia)
*/
router.post(
'/',
requireAdmin,
validateBody(createEventSchema),
eventController.createEvent
);
/**
* PUT /api/events/:eventId - Upraviť event (iba admin)
* PUT /api/events/:eventId - Upraviť event (všetci autentifikovaní používatelia)
*/
router.put(
'/:eventId',
requireAdmin,
validateParams(eventIdSchema),
validateBody(updateEventSchema),
eventController.updateEvent
);
/**
* DELETE /api/events/:eventId - Zmazať event (iba admin)
* DELETE /api/events/:eventId - Zmazať event (všetci autentifikovaní používatelia)
*/
router.delete(
'/:eventId',
requireAdmin,
validateParams(eventIdSchema),
eventController.deleteEvent
);
/**
* POST /api/events/:eventId/notify - Odoslať notifikácie priradeným používateľom (iba admin)
* POST /api/events/:eventId/notify - Odoslať notifikácie priradeným používateľom (všetci autentifikovaní používatelia)
*/
router.post(
'/:eventId/notify',
requireAdmin,
validateParams(eventIdSchema),
eventController.sendEventNotification
);