From 4997f09937bb1fcf85d9c026dd90f6034ea29884 Mon Sep 17 00:00:00 2001 From: IO420 <320154041@pcpuma.acatlan.unam.mx> Date: Thu, 29 Jan 2026 13:02:44 -0600 Subject: [PATCH] add new Ep toggle --- src/equipo/equipo.controller.ts | 5 +++++ src/equipo/equipo.service.ts | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/equipo/equipo.controller.ts b/src/equipo/equipo.controller.ts index 74a0408..1524e6f 100644 --- a/src/equipo/equipo.controller.ts +++ b/src/equipo/equipo.controller.ts @@ -41,5 +41,10 @@ export class EquipoController { update(@Body() equipo: CreateEquipoDto) { return this.equipoService.update(equipo); } + + @Patch(':id/activo') + toggleActivo(@Param('id') id: number) { + return this.equipoService.toggleActivo(+id); + } } //IO diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index 35d4b16..d5d8f8c 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -135,5 +135,39 @@ export class EquipoService { async update(equipo: CreateEquipoDto) { return this.equipoRepository.update(equipo.id_equipo, equipo); } + + async toggleActivo(id_equipo: number) { + if (Number.isNaN(id_equipo)) { + throw new BadRequestException('ID de equipo inválido'); + } + + const equipo = await this.equipoRepository.findOne({ + where: { id_equipo }, + }); + + if (!equipo) { + throw new NotFoundException('Equipo no encontrado'); + } + + let activoActual: boolean; + + if (Buffer.isBuffer(equipo.activo)) { + activoActual = equipo.activo[0] === 1; + } else { + activoActual = Boolean(equipo.activo); + } + + const nuevoActivo = !activoActual; + + await this.equipoRepository.update(id_equipo, { + activo: nuevoActivo, + }); + + return { + message: 'Estado del equipo actualizado', + id_equipo, + activo: nuevoActivo, + }; + } } //IO