vista institucion
This commit is contained in:
+11
-9
@@ -36,6 +36,7 @@ import { StatusModule } from './status/status.module';
|
||||
import { TipoUsuarioModule } from './tipo-usuario/tipo-usuario.module';
|
||||
import { UploadFileModule } from './upload-file/upload-file.module';
|
||||
import { UsuarioModule } from './usuario/usuario.module';
|
||||
import { ValidarUsuarioModule } from './validar-usuario/validar-usuario.module';
|
||||
|
||||
import { Carrera } from './institucion-carrera/entity/carrera.entity';
|
||||
import { CarreraPrograma } from './carrera-programa/entity/carrera-programa.entity';
|
||||
@@ -72,15 +73,15 @@ import { Usuario } from './usuario/entity/usuario.entity';
|
||||
|
||||
import { FullInformacionEquipoView } from './equipo/entity/views/full-informacion-equipo.view';
|
||||
import { InformacionEquipoView } from './equipo/entity/views/informacion-equipo.view';
|
||||
import { FullInformacionPrestamoView } from './prestamo/entity/views/full-informacion-prestamo.view';
|
||||
import { InformacionPrestamoView } from './prestamo/entity/views/informacion-prestamo.view';
|
||||
import { FullInformacionMultaView } from './multa/entity/views/full-informacion-multa.view';
|
||||
import { InformacionMultaView } from './multa/entity/views/informacion-multa.view';
|
||||
import { InformacionEquipoProgramaView } from './equipo-programa/entity/views/informacion-equipo-programa.view';
|
||||
import { InformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/views/informacion-equipo-tipo-entrada.view';
|
||||
import { InformacionInstitucionView } from './institucion/entity/views/informacion-institucion.view';
|
||||
import { FullInformacionMultaView } from './multa/entity/views/full-informacion-multa.view';
|
||||
import { InformacionMultaView } from './multa/entity/views/informacion-multa.view';
|
||||
import { InformacionOperadorView } from './operador/entity/views/informacion-operador.view';
|
||||
import { FullInformacionPrestamoView } from './prestamo/entity/views/full-informacion-prestamo.view';
|
||||
import { InformacionPrestamoView } from './prestamo/entity/views/informacion-prestamo.view';
|
||||
import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuario.view';
|
||||
import { ValidarUsuarioModule } from './validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -142,13 +143,14 @@ import { ValidarUsuarioModule } from './validar-usuario/validar-usuario.module';
|
||||
Usuario,
|
||||
FullInformacionEquipoView,
|
||||
InformacionEquipoView,
|
||||
FullInformacionPrestamoView,
|
||||
InformacionPrestamoView,
|
||||
FullInformacionMultaView,
|
||||
InformacionMultaView,
|
||||
InformacionEquipoProgramaView,
|
||||
InformacionEquipoTipoEntradaView,
|
||||
InformacionInstitucionView,
|
||||
FullInformacionMultaView,
|
||||
InformacionMultaView,
|
||||
InformacionOperadorView,
|
||||
FullInformacionPrestamoView,
|
||||
InformacionPrestamoView,
|
||||
InformacionUsuarioView,
|
||||
],
|
||||
};
|
||||
|
||||
@@ -28,9 +28,6 @@ export class Institucion {
|
||||
@Column({ type: String, nullable: true, length: 40 })
|
||||
dominio: string;
|
||||
|
||||
@Column({ type: Boolean, nullable: false, default: false })
|
||||
email_institucional: boolean;
|
||||
|
||||
@Column({ type: String, nullable: false, length: 150 })
|
||||
institucion: string;
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { Institucion } from '../institucion.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
dataSource
|
||||
.createQueryBuilder()
|
||||
.select('i.id_institucion', 'id_institucion')
|
||||
.addSelect('i.activo', 'activo')
|
||||
.addSelect('i.correo', 'correo')
|
||||
.addSelect('i.dominio', 'dominio')
|
||||
.addSelect('i.institucion', 'institucion')
|
||||
.addSelect('i.responsable', 'responsable')
|
||||
.from(Institucion, 'i'),
|
||||
})
|
||||
export class InformacionInstitucionView {
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
activo: number;
|
||||
|
||||
@ViewColumn()
|
||||
correo: string;
|
||||
|
||||
@ViewColumn()
|
||||
dominio: string;
|
||||
|
||||
@ViewColumn()
|
||||
institucion: string;
|
||||
|
||||
@ViewColumn()
|
||||
responsable: string;
|
||||
}
|
||||
@@ -41,7 +41,7 @@ export class InstitucionController {
|
||||
description: 'Endpoint que retorna todas las instituciones activas.',
|
||||
})
|
||||
activas() {
|
||||
return this.institucionService.findAll(true);
|
||||
return this.institucionService.findInfoInstitucionAll(1);
|
||||
}
|
||||
|
||||
@Serealize(InstitucionMinOutputDto)
|
||||
@@ -55,7 +55,7 @@ export class InstitucionController {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionService.findAll();
|
||||
return this.institucionService.findInfoInstitucionAll();
|
||||
}
|
||||
|
||||
@Serealize(InstitucionOutputDto)
|
||||
@@ -99,7 +99,7 @@ export class InstitucionController {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionService.findAll();
|
||||
return this.institucionService.findInfoInstitucionAll(0, true);
|
||||
}
|
||||
|
||||
@Put()
|
||||
|
||||
@@ -4,12 +4,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { InstitucionController } from './institucion.controller';
|
||||
import { InstitucionService } from './institucion.service';
|
||||
import { Institucion } from './entity/institucion.entity';
|
||||
import { InformacionInstitucionView } from './entity/views/informacion-institucion.view';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Institucion]),
|
||||
TypeOrmModule.forFeature([Institucion, InformacionInstitucionView]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [InstitucionController],
|
||||
|
||||
@@ -4,14 +4,17 @@ import {
|
||||
NotFoundException,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { FindOperator, IsNull, Not, Repository } from 'typeorm';
|
||||
import { Institucion } from './entity/institucion.entity';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { InformacionInstitucionView } from './entity/views/informacion-institucion.view';
|
||||
|
||||
@Injectable()
|
||||
export class InstitucionService {
|
||||
constructor(
|
||||
@InjectRepository(Institucion) private repository: Repository<Institucion>,
|
||||
@InjectRepository(InformacionInstitucionView)
|
||||
private informacionInstitucionView: Repository<InformacionInstitucionView>,
|
||||
) {}
|
||||
|
||||
findAll(activo = false) {
|
||||
@@ -34,15 +37,52 @@ export class InstitucionService {
|
||||
});
|
||||
}
|
||||
|
||||
findInfoInstitucionById(id_institucion: number) {
|
||||
return this.informacionInstitucionView
|
||||
.findOne({ where: { id_institucion } })
|
||||
.then((institucion) => {
|
||||
if (!institucion)
|
||||
throw new NotFoundException('No existe este id institución.');
|
||||
return this.repository.create({
|
||||
id_institucion: institucion.id_institucion,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
findInfoInstitucionAll(activo = 0, responsable = false) {
|
||||
const busqueda: { activo?: number; responsable?: FindOperator<any> } = {};
|
||||
|
||||
if (activo) busqueda.activo = activo;
|
||||
if (responsable) busqueda.responsable = Not(IsNull());
|
||||
return this.informacionInstitucionView
|
||||
.find({ where: busqueda, order: { institucion: 'ASC' } })
|
||||
.then((instituciones) => {
|
||||
const data: Institucion[] = [];
|
||||
|
||||
for (let i = 0; i < instituciones.length; i++)
|
||||
data.push(
|
||||
this.repository.create({
|
||||
id_institucion: instituciones[i].id_institucion,
|
||||
activo: instituciones[i].activo === 1,
|
||||
correo: instituciones[i].correo,
|
||||
dominio: instituciones[i].dominio,
|
||||
institucion: instituciones[i].institucion,
|
||||
responsable: instituciones[i].responsable,
|
||||
}),
|
||||
);
|
||||
return data;
|
||||
});
|
||||
}
|
||||
|
||||
update(admin: Operador, attrs: Partial<Institucion>) {
|
||||
return this.findById(attrs.id_institucion)
|
||||
return this.findInfoInstitucionById(attrs.id_institucion)
|
||||
.then((institucion) => {
|
||||
if (
|
||||
admin.tipoUsuario.id_tipo_usuario === 3 &&
|
||||
admin.institucion.id_institucion != institucion.id_institucion
|
||||
)
|
||||
throw new ConflictException(
|
||||
'No puedes actualizar la información de esta institución porque no correspondes a ella.',
|
||||
'No puedes actualizar la información de esta institución porque no perteneces a ella.',
|
||||
);
|
||||
Object.assign(institucion, attrs);
|
||||
return this.repository.save(institucion);
|
||||
|
||||
Reference in New Issue
Block a user