diff --git a/src/catalogos/tipo-miembro.entity.ts b/src/catalogos/tipo-miembro.entity.ts index e736c22..01f4303 100644 --- a/src/catalogos/tipo-miembro.entity.ts +++ b/src/catalogos/tipo-miembro.entity.ts @@ -12,5 +12,5 @@ export class TipoMiembro { @OneToMany( () => Miembro, (miembro) => miembro.tipoMiembro ) - miembro: Miembro + miembro: Miembro[] } \ No newline at end of file diff --git a/src/eventos/eventos.controller.ts b/src/eventos/eventos.controller.ts index 9f9f74f..e3f9b99 100644 --- a/src/eventos/eventos.controller.ts +++ b/src/eventos/eventos.controller.ts @@ -1,4 +1,7 @@ import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { EventoParticipante } from 'src/evento-participante/evento-participante/eventoParticipante.entity'; +import { Repository } from 'typeorm'; import { actualizarEventoDto } from './dto/actualizarEvento.dto'; import { crearEventoDto } from './dto/crearEvento.dto'; import { Evento } from './evento.entity'; @@ -33,4 +36,9 @@ export class EventosController { deleteEvento(@Param('id', ParseIntPipe)id: number){ return this.eventoService.deleteEventoParticipante(id) } + + @Get(':id/participantes') + async getCupos(@Param('id', ParseIntPipe)id: number){ + return this.eventoService.getCupos(id) + } } diff --git a/src/eventos/eventos.service.ts b/src/eventos/eventos.service.ts index 72aa66d..c308f04 100644 --- a/src/eventos/eventos.service.ts +++ b/src/eventos/eventos.service.ts @@ -60,4 +60,17 @@ export class EventosService { await queryRunner.release(); } } + + async getCupos(id: number){ + const evento = this.getEventosPorId(id) + if(!evento) throw new Error(`El evento con id:${id} no existe`) + const registrados = await this.eventoParticipanteRepository + .createQueryBuilder('ep') + .select('COUNT(ep.id_evento)', 'count') + .where('ep.id_evento = :eventoId', { eventoId: (await evento).id_evento }) + .getRawOne(); + const cupoOriginal = (await evento).cupo; + const cupoDisponible = cupoOriginal - registrados.count; + return { registrados: registrados.count, cupoDisponible, cupoOriginal}; + } }