equipo tipo entrada a espera de pruebas

This commit is contained in:
xXpuma99Xx 2022-06-07 20:26:07 -05:00
parent f5846e63b6
commit 35d214f5df
6 changed files with 99 additions and 6 deletions

View File

@ -1,8 +1,8 @@
import { Body, Controller, Delete, Post } from '@nestjs/common';
import { ApiBody, ApiOperation } from '@nestjs/swagger';
import { EquipoProgramaService } from './equipo-programa.service';
import { EquipoProgramaCreateDto } from './dto/equipo-programa-create.dto';
import { EquipoProgramaDeleteDto } from './dto/equipo-programa-delete.dto';
import { ApiBody, ApiOperation } from '@nestjs/swagger';
@Controller('equipo-programa')
export class EquipoProgramaController {
constructor(private equipoProgramaService: EquipoProgramaService) {}

View File

@ -0,0 +1,9 @@
import { IsInt } from 'class-validator';
export class EquipoTipoEntradaCreateDto {
@IsInt()
id_equipo: number;
@IsInt()
id_tipo_entrada: number;
}

View File

@ -0,0 +1,6 @@
import { IsInt } from 'class-validator';
export class EquipoTipoEntradaDeleteDto {
@IsInt()
id_equipo_tipo_entrada: number;
}

View File

@ -5,7 +5,7 @@ import { TipoEntrada } from '../../institucion-tipo-entrada/entity/tipo-entrada.
@Entity()
export class EquipoTipoEntrada {
@PrimaryGeneratedColumn()
id_equipo_entrada: number;
id_equipo_tipo_entrada: number;
@ManyToOne(() => Equipo, (equipo) => equipo.tiposEntradas)
@JoinColumn({ name: 'id_equipo' })

View File

@ -1,7 +1,39 @@
import { Controller } from '@nestjs/common';
import { Body, Controller, Delete, Post } from '@nestjs/common';
import { ApiBody, ApiOperation } from '@nestjs/swagger';
import { EquipoTipoEntradaService } from './equipo-tipo-entrada.service';
import { EquipoTipoEntradaCreateDto } from './dto/equipo-tipo-entrada-create.dto';
import { EquipoTipoEntradaDeleteDto } from './dto/equipo-tipo-entrada-delete.dto';
@Controller('equipo-tipo-entrada')
export class EquipoTipoEntradaController {
constructor(private equipoTipoEntradaService: EquipoTipoEntradaService) {}
@Post()
@ApiOperation({
description:
'Endpoint que crea una relación entre un equipo y un tipo de entrada.',
})
@ApiBody({
description: 'Ambas variables son obligatorios.',
examples: { ejemplo: { value: { id_equipo: 1, id_tipo_entrada: 1 } } },
})
create(@Body() body: EquipoTipoEntradaCreateDto) {
return this.equipoTipoEntradaService.create(
body.id_equipo,
body.id_tipo_entrada,
);
}
@Delete()
@ApiOperation({
description:
'Endpoint que elimina una relación entre un equipo y un tipo de entrada.',
})
@ApiBody({
description: 'La variable id_equipo_tipo_entrada es obligatoria.',
examples: { ejemplo: { value: { id_equipo_tipo_entrada: 1 } } },
})
delete(@Body() body: EquipoTipoEntradaDeleteDto) {
return this.equipoTipoEntradaService.delete(body.id_equipo_tipo_entrada);
}
}

View File

@ -1,12 +1,58 @@
import { Injectable } from '@nestjs/common';
import { ConflictException, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { EquipoTipoEntrada } from '../equipo-tipo-entrada/entity/equipo-tipo-entrada.entity';
import { Equipo } from 'src/equipo/entity/equipo.entity';
import { EquipoTipoEntrada } from './entity/equipo-tipo-entrada.entity';
import { Programa } from '../institucion-programa/entity/programa.entity';
import { EquipoService } from '../equipo/equipo.service';
import { InstitucionTipoEntradaService } from '../institucion-tipo-entrada/institucion-tipo-entrada.service';
import { TipoEntrada } from 'src/institucion-tipo-entrada/entity/tipo-entrada.entity';
@Injectable()
export class EquipoTipoEntradaService {
constructor(
@InjectRepository(EquipoTipoEntrada)
private equipoTipoEntradaRepository: Repository<EquipoTipoEntrada>,
private repository: Repository<EquipoTipoEntrada>,
private equipoService: EquipoService,
private institucionTipoEntradaService: InstitucionTipoEntradaService,
) {}
async create(id_equipo: number, id_tipo_entrada: number) {
const equipo = await this.equipoService.findById(id_equipo);
const tipoEntrada =
await this.institucionTipoEntradaService.findTipoEntradaById(
id_tipo_entrada,
);
return this.existeEquipoTipoEntrada(equipo, tipoEntrada).then(() =>
this.repository.save(this.repository.create({ equipo, tipoEntrada })),
);
}
delete(id_equipo_tipo_entrada: number) {
return this.findById(id_equipo_tipo_entrada).then((equipoTipoEntrada) =>
this.repository.remove(equipoTipoEntrada),
);
}
existeEquipoTipoEntrada(equipo: Equipo, tipoEntrada: TipoEntrada) {
return this.repository
.findOne({ equipo, tipoEntrada })
.then((equipoTipoEntrada) => {
if (equipoTipoEntrada)
throw new ConflictException(
'Ya existe un equipo programa con este equipo y este tipo entrada.',
);
});
}
findById(id_equipo_tipo_entrada: number) {
return this.repository
.findOne({ id_equipo_tipo_entrada })
.then((equipoTipoEntrada) => {
if (!equipoTipoEntrada)
throw new ConflictException('No existe este equipo tipo entrada.');
return equipoTipoEntrada;
});
}
}