const express = require('express'); const router = express.Router(); const { createRegistration, getRegistrations, getUserRegistrations, getRegistrationById, updateRegistrationStatus, cancelRegistration, getRegistrationsByEvent, createManualRegistration, updateRegistrationOptions, submitFormResponses, replaceFormResponses, getFormDraft, saveFormDraft, sendInvoice, } = require('../controllers/registrationController'); const { protect, supervisor, staff, optionalAuth } = require('../middleware/authMiddleware'); // Registration - auth optional when event doesn't require it router.post('/', optionalAuth, createRegistration); router.get('/myregistrations', protect, getUserRegistrations); router.put('/:id/options', protect, updateRegistrationOptions); router.delete('/:id', protect, cancelRegistration); router.post('/:id/send-invoice', protect, sendInvoice); // Registration detail + forms — optionalAuth so guests can access with just the registrationId router.get('/:id', optionalAuth, getRegistrationById); router.get('/:id/forms/draft', optionalAuth, getFormDraft); router.put('/:id/forms/draft', optionalAuth, saveFormDraft); router.post('/:id/forms/responses', optionalAuth, submitFormResponses); router.put('/:id/forms/responses', protect, supervisor, replaceFormResponses); // Admin/Staff routes router.get('/', protect, staff, getRegistrations); router.put('/:id', protect, staff, updateRegistrationStatus); router.get('/event/:eventId', protect, staff, getRegistrationsByEvent); router.post('/manual', protect, supervisor, createManualRegistration); module.exports = router;