73 lines
1.9 KiB
TypeScript
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)
|
|
}
|
|
}
|