import { ConflictException, Injectable, NotFoundException, } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { CarreraPrograma } from './entity/carrera-programa.entity'; import { CarreraService } from '../carrera/carrera.service'; import { ProgramaService } from '../programa/programa.service'; @Injectable() export class CarreraProgramaService { constructor( @InjectRepository(CarreraPrograma) private repository: Repository, private carreraService: CarreraService, private programaService: ProgramaService, ) {} async create(id_carrera: number, id_programa: number) { const carrera = await this.carreraService.findById(id_carrera); const programa = await this.programaService.findById(id_programa); const nuevoCarreraPrograma = this.repository.create({ carrera, programa, }); return this.repository .findOne({ carrera, programa }) .then((existeCarretaPrograma) => { if (existeCarretaPrograma) throw new ConflictException( 'Ya existe una carrera programa con este nombre, intente con uno diferente', ); return this.repository.save(nuevoCarreraPrograma); }) .then(() => ({ message: 'se creo correctamente la carrera programa' })); } findAll() { return this.repository.find(); } findById(id_carrera_programa: number) { return this.repository .findOne({ id_carrera_programa }) .then((carreraPrograma) => { if (!carreraPrograma) throw new NotFoundException('No existe esta carrera programa'); return carreraPrograma; }); } async update(attrs: Partial) { const carreraPrograma = await this.findById(attrs.id_carrera_programa); return this.repository .findOne({ id_carrera_programa: attrs.id_carrera_programa }) .then((existeCarreraPrograma) => { if (existeCarreraPrograma) throw new ConflictException('Ya existe esta carrera programa'); Object.assign(carreraPrograma, attrs); return this.repository.save(carreraPrograma); }) .then(() => ({ message: 'Se actualizo correctamente la carrera programa', })); } }