Add cupo_maximo field and related validations to cuestionario and evento modules

This commit is contained in:
miguel
2025-06-23 12:40:38 -06:00
parent 8fe2b6cc72
commit e20a381ba6
11 changed files with 171 additions and 16 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ export class CuestionarioController {
return this.cuestionarioService.create(createCuestionarioDto);
}
@Post('evento')
@Post('withEvento')
@CuestionarioApiDocumentation.ApiCreateWithEvento
createCuestionarioEvento(
@Body() createCuestionarioDto: CreateCuestionarioEventoDto,
+1 -3
View File
@@ -66,6 +66,7 @@ export class CuestionarioService {
createCuestionarioDto.secciones?.length || 0;
cuestionario.editable = true;
cuestionario.id_evento = createCuestionarioDto.id_evento;
cuestionario.cupo_maximo = createCuestionarioDto.cupo_maximo;
const savedCuestionario = await queryRunner.manager.save(cuestionario);
@@ -203,9 +204,6 @@ export class CuestionarioService {
};
evento = await queryRunner.manager.save(Evento, nuevoEvento);
console.log(
`Evento creado: ${evento.nombre_evento}, ID: ${evento.id_evento}`,
);
} else {
console.log(
`Evento encontrado: ${evento.nombre_evento}, ID: ${evento.id_evento}`,
@@ -11,6 +11,7 @@ export const ejemploCuestionarioAlumno = {
fecha_inicio: '2025-08-01T08:00:00',
fecha_fin: '2025-08-10T23:59:59',
id_tipo_cuestionario: 1,
cupo_maximo: 100,
secciones: [
{
titulo: 'Información Personal',
@@ -88,6 +89,7 @@ export const ejemploCuestionarioTrabajador = {
fecha_inicio: '2025-08-01T08:00:00',
fecha_fin: '2025-08-10T23:59:59',
id_tipo_cuestionario: 2,
cupo_maximo: 100,
secciones: [
{
titulo: 'Información Personal',
@@ -63,6 +63,15 @@ export class CreateCuestionarioDto {
@IsNumber()
id_tipo_cuestionario: number;
@ApiProperty({
description: 'Cupo máximo de participantes',
example: 100,
required: false,
})
@IsOptional()
@IsNumber()
cupo_maximo?: number;
@ApiProperty({
description: 'Nombre del evento asociado',
example: 'Feria de la Sexualidad',
@@ -10,6 +10,7 @@ import { CuestionarioSeccion } from 'src/cuestionario_seccion/entities/cuestiona
import { Evento } from 'src/evento/entities/evento.entity';
import { ParticipanteEvento } from 'src/participante_evento/entities/participante_evento.entity';
import { TipoCuestionario } from 'src/tipo_cuestionario/entities/tipo_cuestionario.entity';
import { CuestionarioRespondido } from 'src/cuestionario_respondido/entities/cuestionario_respondido.entity';
@Entity('cuestionario')
export class Cuestionario {
@@ -37,6 +38,9 @@ export class Cuestionario {
@Column({ type: 'datetime' })
fecha_fin: Date;
@Column({ type: 'int', nullable: true })
cupo_maximo?: number;
@Column({ type: 'int' })
id_tipo_cuestionario: number;
@@ -69,4 +73,7 @@ export class Cuestionario {
(participanteEvento) => participanteEvento.cuestionario,
)
inscripciones: ParticipanteEvento[];
@OneToMany(() => CuestionarioRespondido, (cr) => cr.cuestionario)
cuestionariosRespondidos: CuestionarioRespondido[];
}