import { applyDecorators } from '@nestjs/common'; import { ApiOperation, ApiResponse, ApiTags, ApiBody, } from '@nestjs/swagger'; import { RegistrarMiembroDto } from './dto/registrarMiembro.dto'; export function ApiPostRegistro() { return applyDecorators( ApiTags('Auth'), ApiOperation({ summary: 'Registrar nuevo miembro', description: 'Registra un nuevo usuario en la plataforma. No se permite duplicidad de correo electrónico.', }), ApiBody({ type: RegistrarMiembroDto, examples: { requeridos: { summary: 'Solo datos obligatorios', description: 'Ejemplo básico con los campos mínimos requeridos para registrar un usuario.', value: { nombre: 'Luis', apellido_paterno: 'Martínez', apellido_materno: 'Lopez', id_tipo_miembro: 1, password: 'contraseñaSegura123', cuenta: 421010101, email: 'luis@example.com', }, }, completo: { summary: 'Todos los campos llenos', description: 'Ejemplo de un usuario con carrera, semestre y descripción.', value: { nombre: 'Ana', apellido_paterno: 'Torres', apellido_materno: 'Hernández', id_tipo_miembro: 2, password: 'AnaSegura456', descripcion: 'Estudiante interesada en programación web', id_carrera: 3, semestre: '4°', cuenta: 421020202, email: 'ana.torres@example.com', }, }, invalido: { summary: 'Ejemplo con datos inválidos', description: 'Muestra un correo mal formado y una contraseña demasiado corta.', value: { nombre: 'Mario', apellido_paterno: 'Gómez', apellido_materno: 'Ramírez', id_tipo_miembro: 1, password: '123', cuenta: 421000000, email: 'mario-sin-arroba.com', }, }, }, }), ApiResponse({ status: 201, description: 'Usuario registrado exitosamente.', }), ApiResponse({ status: 403, description: 'El usuario ya existe.', }), ApiResponse({ status: 400, description: 'Datos inválidos o faltantes.', }), ); }