institucion programa endpoints restringidos a usuario
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Not, Repository } from 'typeorm';
|
||||
import { InstitucionPrograma } from './entity/institucion-programa.entity';
|
||||
import { Operador } from 'src/operador/entity/operador.entity';
|
||||
import { Programa } from './entity/programa.entity';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
|
||||
@@ -43,6 +44,23 @@ export class InstitucionProgramaService {
|
||||
});
|
||||
}
|
||||
|
||||
async findAllByIdInstitucion(id_institucion: number, mostrar = false) {
|
||||
const institucion = await this.institucionService.findById(id_institucion);
|
||||
const query = this.institucionProgramaRepository
|
||||
.createQueryBuilder('ip')
|
||||
.innerJoinAndSelect('ip.programa', 'p', 'p.id_programa != 1')
|
||||
.innerJoinAndSelect(
|
||||
'ip.institucion',
|
||||
'i',
|
||||
'i.id_institucion = :id_institucion',
|
||||
{ id_institucion: institucion.id_institucion },
|
||||
)
|
||||
.orderBy('p.programa');
|
||||
|
||||
if (mostrar) query.andWhere('ip.mostrar = 1');
|
||||
return query.getMany();
|
||||
}
|
||||
|
||||
findAllProgramas() {
|
||||
return this.programaRepository.find({
|
||||
where: { id_programa: Not(1) },
|
||||
@@ -52,7 +70,13 @@ export class InstitucionProgramaService {
|
||||
|
||||
findById(id_institucion_programa: number) {
|
||||
return this.institucionProgramaRepository
|
||||
.findOne({ id_institucion_programa })
|
||||
.findOne({
|
||||
join: {
|
||||
alias: 'ip',
|
||||
innerJoinAndSelect: { i: 'ip.institucion', p: 'ip.programa' },
|
||||
},
|
||||
where: { id_institucion_programa },
|
||||
})
|
||||
.then((institucionPrograma) => {
|
||||
if (!institucionPrograma)
|
||||
throw new NotFoundException('No existe esta institucion programa.');
|
||||
@@ -75,26 +99,16 @@ export class InstitucionProgramaService {
|
||||
});
|
||||
}
|
||||
|
||||
async findAllByIdInstitucion(id_institucion: number, mostrar = false) {
|
||||
const institucion = await this.institucionService.findById(id_institucion);
|
||||
const query = this.institucionProgramaRepository
|
||||
.createQueryBuilder('ip')
|
||||
.innerJoinAndSelect('ip.programa', 'p', 'p.id_programa != 1')
|
||||
.innerJoinAndSelect(
|
||||
'ip.institucion',
|
||||
'i',
|
||||
'i.id_institucion = :id_institucion',
|
||||
{ id_institucion: institucion.id_institucion },
|
||||
)
|
||||
.orderBy('p.programa');
|
||||
|
||||
if (mostrar) query.andWhere('ip.mostrar = 1');
|
||||
return query.getMany();
|
||||
}
|
||||
|
||||
update(attrs: Partial<InstitucionPrograma>) {
|
||||
update(admin: Operador, attrs: Partial<InstitucionPrograma>) {
|
||||
return this.findById(attrs.id_institucion_programa)
|
||||
.then((institucionPrograma) => {
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
institucionPrograma.institucion.id_institucion
|
||||
)
|
||||
throw new ConflictException(
|
||||
'No puedes actualizar la información de este software porque no le corresponde a tu institución.',
|
||||
);
|
||||
Object.assign(institucionPrograma, attrs);
|
||||
return this.institucionProgramaRepository.save(institucionPrograma);
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user