Files
api-AT/src/periodo/periodo.service.ts
T

73 lines
1.9 KiB
TypeScript

import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Periodo } from './entities/periodo.entity';
import { Repository } from 'typeorm';
import { CreatePeriodoDto, ModifiedDateDto } from './dto/create-periodo.dto';
@Injectable()
export class PeriodoService {
constructor(
@InjectRepository(Periodo)
private readonly periodoRepository: Repository<Periodo>,
) { }
async findOne(semestre: string) {
return this.periodoRepository.findOne({ where: { semestre } });
}
async findAll() {
return this.periodoRepository.find({order:{'id_periodo':"DESC"}});
}
async getPeriodoActivo(): Promise<Periodo> {
const periodo = await this.periodoRepository.findOne({
where: { activo: true },
order: { id_periodo: 'DESC' },
});
if (!periodo) {
throw new NotFoundException('No hay periodos activos');
}
return periodo;
}
async getPeriodoActivoWhitoutError(): Promise<Periodo | null> {
const periodo = await this.periodoRepository.findOne({
where: { activo: true },
order: { id_periodo: 'DESC' },
});
return periodo;
}
async delete(id_periodo: number) {
await this.periodoRepository.delete(id_periodo)
}
async periodoDisable(id_periodo: number) {
await this.periodoRepository.update(id_periodo, { activo: false })
}
async create(data: CreatePeriodoDto) {
const periodo = await this.findOne(data.semestre)
if (periodo) {
throw new BadRequestException("El periodo ya existe")
}
const periodoActive = await this.getPeriodoActivoWhitoutError();
if (periodoActive) {
await this.periodoDisable(periodoActive.id_periodo)
}
const create = this.periodoRepository.create(data)
return this.periodoRepository.save(create)
}
async modifiedDate(data: ModifiedDateDto, id_periodo) {
return this.periodoRepository.update(id_periodo, data)
}
}