import { Router } from 'express'; import { CoachController } from '../controllers/coach.controller'; import { authenticate, authorize } from '../middleware/auth'; import { validate } from '../middleware/validate'; import { registerCoachSchema, reviewSchema } from '../validators/class.validator'; import { UserRole } from '../utils/constants'; const router = Router(); // Rutas públicas router.get('/', CoachController.getCoaches); router.get('/:id', CoachController.getCoachById); router.get('/:id/availability', CoachController.getAvailability); router.get('/:id/reviews', CoachController.getReviews); // Rutas protegidas (usuarios autenticados) router.post('/register', authenticate, validate(registerCoachSchema), CoachController.registerAsCoach); router.get('/me/profile', authenticate, CoachController.getMyProfile); router.put('/me', authenticate, CoachController.updateMyProfile); router.post('/me/availability', authenticate, CoachController.addAvailability); router.post('/:id/reviews', authenticate, validate(reviewSchema), CoachController.addReview); // Eliminar disponibilidad router.delete('/availability/:id', authenticate, CoachController.removeAvailability); // Rutas de admin router.put('/:id/verify', authenticate, authorize(UserRole.ADMIN, UserRole.SUPERADMIN), CoachController.verifyCoach); export default router;