vista modulo

This commit is contained in:
xXpuma99Xx
2022-09-25 01:03:33 -05:00
parent b25742ae95
commit 0cc9add1ce
6 changed files with 128 additions and 46 deletions
+62 -25
View File
@@ -7,6 +7,7 @@ import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Institucion } from '../institucion/entity/institucion.entity';
import { Modulo } from './entity/modulo.entity';
import { InformacionModuloView } from './entity/views/informacion-modulo.view';
import { Operador } from '../operador/entity/operador.entity';
import { InstitucionService } from '../institucion/institucion.service';
@@ -14,6 +15,8 @@ import { InstitucionService } from '../institucion/institucion.service';
export class ModuloService {
constructor(
@InjectRepository(Modulo) private repository: Repository<Modulo>,
@InjectRepository(InformacionModuloView)
private informacionModuloView: Repository<InformacionModuloView>,
private institucionService: InstitucionService,
) {}
@@ -35,36 +38,19 @@ export class ModuloService {
async existeModulo(id_institucion: number | Institucion, modulo: string) {
const institucion =
typeof id_institucion === 'number'
? await this.institucionService.findById(id_institucion)
? await this.institucionService.findInfoInstitucionById(id_institucion)
: id_institucion;
return this.repository
.findOne({ where: { institucion, modulo } })
return this.informacionModuloView
.findOne({
where: { id_institucion: institucion.id_institucion, modulo },
})
.then((existeModulo) => {
if (existeModulo)
throw new ConflictException(
'Ya existe un módulo en esta institución con este nombre, intente con otro nombre.',
);
});
}
findAllByIdInstitucion(id_institucion: number, activos = false) {
return this.institucionService
.findById(id_institucion)
.then((institucion) => {
const query = this.repository
.createQueryBuilder('m')
.innerJoinAndSelect(
'm.institucion',
'i',
'i.id_institucion = :id_institucion',
{ id_institucion: institucion.id_institucion },
)
.orderBy('i.institucion')
.orderBy('m.modulo');
if (activos) query.andWhere('m.activo = 1');
return query.getMany();
return;
});
}
@@ -82,7 +68,7 @@ export class ModuloService {
) {
const institucion =
typeof id_institucion === 'number'
? await this.institucionService.findById(id_institucion)
? await this.institucionService.findInfoInstitucionById(id_institucion)
: id_institucion;
return this.repository
@@ -94,8 +80,59 @@ export class ModuloService {
});
}
findInfoModuloById(id_modulo: number) {
return this.informacionModuloView
.findOne({ where: { id_modulo } })
.then((infoModulo) => {
if (!infoModulo)
throw new NotFoundException('No existe este id módulo.');
return this.repository.create({
id_modulo: infoModulo.id_modulo,
activo: infoModulo.activo === 1,
modulo: infoModulo.modulo,
institucion: {
id_institucion: infoModulo.id_institucion,
institucion: infoModulo.institucion,
},
});
});
}
async findInfoModuloAll(id_institucion: number, activo = 0) {
return this.institucionService
.findInfoInstitucionById(id_institucion)
.then((institucion) => {
const busqueda: { id_institucion: number; activo?: number } = {
id_institucion: institucion.id_institucion,
};
if (activo) busqueda.activo = activo;
return this.informacionModuloView.find({
where: busqueda,
order: { modulo: 'ASC' },
});
})
.then((infoModulos) => {
const modulos: Modulo[] = [];
for (let i = 0; i < infoModulos.length; i++)
modulos.push(
this.repository.create({
id_modulo: infoModulos[i].id_modulo,
activo: infoModulos[i].activo === 1,
modulo: infoModulos[i].modulo,
institucion: {
id_institucion: infoModulos[i].id_institucion,
institucion: infoModulos[i].institucion,
},
}),
);
return modulos;
});
}
update(admin: Operador, attrs: Partial<Modulo>) {
return this.findById(attrs.id_modulo)
return this.findInfoModuloById(attrs.id_modulo)
.then(async (modulo) => {
if (
admin.institucion.id_institucion != modulo.institucion.id_institucion