79 lines
2.3 KiB
TypeScript
79 lines
2.3 KiB
TypeScript
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.',
|
|
}),
|
|
);
|
|
}
|