diff --git a/src/equipo-programa/entity/equipo-programa.entity.ts b/src/equipo-programa/entity/equipo-programa.entity.ts index 2ec7730..97e8c5d 100644 --- a/src/equipo-programa/entity/equipo-programa.entity.ts +++ b/src/equipo-programa/entity/equipo-programa.entity.ts @@ -1,4 +1,10 @@ -import { Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; +import { + Column, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from 'typeorm'; import { Equipo } from '../../equipo/entity/equipo.entity'; import { Programa } from '../../institucion-programa/entity/programa.entity'; @@ -7,6 +13,12 @@ export class EquipoPrograma { @PrimaryGeneratedColumn() id_equipo_programa: number; + @Column({ type: Number, nullable: true }) + id_equipo: number; + + @Column({ type: Number, nullable: true }) + id_programa: number; + @ManyToOne(() => Equipo, (equipo) => equipo.programas) @JoinColumn({ name: 'id_equipo' }) equipo: Equipo; diff --git a/src/equipo-programa/equipo-programa.controller.ts b/src/equipo-programa/equipo-programa.controller.ts index 2b7bb82..dab40f8 100644 --- a/src/equipo-programa/equipo-programa.controller.ts +++ b/src/equipo-programa/equipo-programa.controller.ts @@ -8,11 +8,13 @@ import { } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger'; +import { Serealize } from '../interceptors/serialize.interceptor'; import { Operador } from '../operador/entity/operador.entity'; import { EquipoProgramaService } from './equipo-programa.service'; import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service'; import { CreateEquipoProgramaDto } from './dto/input/create.dto'; import { DeleteEquipoProgramaDto } from './dto/input/delete.dto'; +import { MessageOutputDto } from '../dto/output/message.dto'; @Controller('equipo-programa') @ApiTags('equipo-programa') @@ -22,6 +24,7 @@ export class EquipoProgramaController { private validarUsuarioService: ValidarUsuarioService, ) {} + @Serealize(MessageOutputDto) @Post() @UseGuards(AuthGuard('jwt')) @ApiOperation({ @@ -44,6 +47,7 @@ export class EquipoProgramaController { ); } + @Serealize(MessageOutputDto) @Delete() @UseGuards(AuthGuard('jwt')) @ApiOperation({ diff --git a/src/equipo-programa/equipo-programa.service.ts b/src/equipo-programa/equipo-programa.service.ts index 1c45d0c..99280a6 100644 --- a/src/equipo-programa/equipo-programa.service.ts +++ b/src/equipo-programa/equipo-programa.service.ts @@ -9,12 +9,12 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Equipo } from '../equipo/entity/equipo.entity'; import { EquipoPrograma } from './entity/equipo-programa.entity'; +import { Operador } from '../operador/entity/operador.entity'; import { Programa } from '../institucion-programa/entity/programa.entity'; import { FullInformacionEquipoProgramaView } from './entity/views/full-informacion-equipo-programa.view'; import { InformacionEquipoProgramaView } from './entity/views/informacion-equipo-programa.view'; import { EquipoService } from '../equipo/equipo.service'; import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service'; -import { Operador } from '../operador/entity/operador.entity'; @Injectable() export class EquipoProgramaService { @@ -36,6 +36,11 @@ export class EquipoProgramaService { id_programa, ); + // valido que el programa seleccionado no sea "Sin programa" + if (programa.id_programa === 1) + throw new ConflictException( + 'No se puede asignar manualmente este programa.', + ); // Valida que el equipo pertenezca a la institución del operador if ( operador.tipoUsuario.id_tipo_usuario > 2 && @@ -46,7 +51,7 @@ export class EquipoProgramaService { 'No puedes modificar la información este equipo porque no pertenece a tu institución.', ); // Verifica que no eixsta un registro con estos ids - return this.findInfoEquipoProgramaByEquipoPrograma(equipo, programa).then( + return this.findByEquipoPrograma(equipo, programa).then( (existeEquipoPrograma) => { // Error si existe if (existeEquipoPrograma) @@ -60,9 +65,7 @@ export class EquipoProgramaService { create(equipo: Equipo, programa: Programa) { // Ver si tiene programa "Sin programa" - return this.findInfoEquipoProgramaByEquipoPrograma(equipo, { - id_programa: 1, - }) + return this.findByEquipoPrograma(equipo, { id_programa: 1 }) .then(async (existeEquipoSinPrograma) => { // Si tiene lo elimino if (existeEquipoSinPrograma) @@ -85,9 +88,7 @@ export class EquipoProgramaService { } async delete(operador: Operador, id_equipo_programa: number) { - const equipoPrograma = await this.findInfoEquipoProgramaById( - id_equipo_programa, - ); + const equipoPrograma = await this.findById(id_equipo_programa); // No se puede eliminar "Sin programa" manualmente if (equipoPrograma.programa.id_programa === 1) @@ -114,7 +115,7 @@ export class EquipoProgramaService { })); } - findFullInfoEquipoProgramaAllByIdEquipo(id_equipo: number) { + findFullInfoAllByIdEquipo(id_equipo: number) { return this.fullInformacionEquipoProgramaView .find({ where: { id_equipo } }) .then((infoEquipoProgramas) => { @@ -134,7 +135,7 @@ export class EquipoProgramaService { }); } - findInfoEquipoProgramaById(id_equipo_programa: number) { + findById(id_equipo_programa: number) { return this.informacionEquipoProgramaView .findOne({ where: { id_equipo_programa } }) .then((infoEquipoPrograma) => { @@ -162,10 +163,7 @@ export class EquipoProgramaService { }); } - findInfoEquipoProgramaByEquipoPrograma( - equipo: Equipo, - programa: Programa | Partial, - ) { + findByEquipoPrograma(equipo: Equipo, programa: Programa | Partial) { return this.repository.findOne({ where: { equipo, programa } }); } } diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index 85c914e..5f65dc4 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -402,7 +402,7 @@ export class EquipoService { // Busco todos los programas de este equipo const programas = - await this.equipoProgramaService.findFullInfoEquipoProgramaAllByIdEquipo( + await this.equipoProgramaService.findFullInfoAllByIdEquipo( infoEquipo.id_equipo, ); // Busco todos los tipos de entrada de este equipo diff --git a/src/upload-file/upload-file.service.ts b/src/upload-file/upload-file.service.ts index 0e701a0..aba8b97 100644 --- a/src/upload-file/upload-file.service.ts +++ b/src/upload-file/upload-file.service.ts @@ -317,7 +317,7 @@ export class UploadFileService { false, ); const existeEquipoPrograma = programa - ? await this.equipoProgramaService.findInfoEquipoProgramaByEquipoPrograma( + ? await this.equipoProgramaService.findByEquipoPrograma( equipo, programa, )