Implementados 4 módulos con agent swarm: 1. MERCADOPAGO INTEGRADO - SDK oficial de MercadoPago - Crear preferencias de pago - Webhooks para notificaciones - Reembolsos y cancelaciones - Estados: PENDING, PROCESSING, COMPLETED, REFUNDED 2. SISTEMA DE BONOS Y PACKS - Pack 5, Pack 10, Pack Mensual - Compra online con MP - Uso FIFO automático - Control de expiración - Aplicación en reservas 3. SUSCRIPCIONES/MEMBRESÍAS - Planes: Básico, Premium, Anual VIP - Beneficios: descuentos, reservas gratis, prioridad - Cobro recurrente vía MP - Estados: ACTIVE, PAUSED, CANCELLED - Aplicación automática en reservas 4. CLASES CON PROFESORES - Registro de coaches con verificación - Tipos: Individual, Grupal, Clínica - Horarios y disponibilidad - Reservas con pago integrado - Sistema de reseñas Endpoints nuevos: - /payments/* - Pagos MercadoPago - /bonus-packs/*, /bonuses/* - Bonos - /subscription-plans/*, /subscriptions/* - Suscripciones - /coaches/* - Profesores - /classes/*, /class-enrollments/* - Clases Variables de entorno: - MERCADOPAGO_ACCESS_TOKEN - MERCADOPAGO_PUBLIC_KEY - MERCADOPAGO_WEBHOOK_SECRET Datos de prueba: - 3 Bonus Packs - 3 Planes de suscripción - 1 Coach verificado (admin) - 3 Clases disponibles
20 lines
879 B
TypeScript
20 lines
879 B
TypeScript
import { Router } from 'express';
|
|
import { ClassEnrollmentController } from '../controllers/classEnrollment.controller';
|
|
import { authenticate } from '../middleware/auth';
|
|
import { validate } from '../middleware/validate';
|
|
import { enrollmentSchema } from '../validators/class.validator';
|
|
|
|
const router = Router();
|
|
|
|
// Webhook de MercadoPago (público)
|
|
router.post('/webhook', ClassEnrollmentController.webhook);
|
|
|
|
// Rutas protegidas
|
|
router.post('/', authenticate, validate(enrollmentSchema), ClassEnrollmentController.enrollInClass);
|
|
router.get('/my', authenticate, ClassEnrollmentController.getMyEnrollments);
|
|
router.get('/:id', authenticate, ClassEnrollmentController.getEnrollmentById);
|
|
router.delete('/:id', authenticate, ClassEnrollmentController.cancelEnrollment);
|
|
router.put('/:id/attend', authenticate, ClassEnrollmentController.markAttendance);
|
|
|
|
export default router;
|