vista con solo id_modulo

This commit is contained in:
xXpuma99Xx
2022-09-25 11:18:06 -05:00
parent 1c95f8c8d0
commit 9723e1b0d7
9 changed files with 97 additions and 32 deletions
+2
View File
@@ -78,6 +78,7 @@ import { InformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/v
import { InformacionInstitucionView } from './institucion/entity/views/informacion-institucion.view';
import { MinInformacionInstitucionView } from './institucion/entity/views/min-informacion-institucion.view';
import { InformacionModuloView } from './modulo/entity/views/informacion-modulo.view';
import { MinInformacionModuloView } from './modulo/entity/views/min-informacion-modulo.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';
@@ -150,6 +151,7 @@ import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuar
InformacionInstitucionView,
MinInformacionInstitucionView,
InformacionModuloView,
MinInformacionModuloView,
FullInformacionMultaView,
InformacionMultaView,
InformacionOperadorView,
+3 -3
View File
@@ -41,7 +41,7 @@ export class InstitucionController {
description: 'Endpoint que retorna todas las instituciones activas.',
})
activas() {
return this.institucionService.findInfoInstitucionAll(1);
return this.institucionService.findMinInfoInstitucionAll(1);
}
@Serealize(InstitucionMinOutputDto)
@@ -55,7 +55,7 @@ export class InstitucionController {
const superAdmin: Operador = req.user.operador;
this.validarUsuarioService.validarSuperAdmin(superAdmin);
return this.institucionService.findInfoInstitucionAll();
return this.institucionService.findMinInfoInstitucionAll();
}
@Serealize(InstitucionOutputDto)
@@ -99,7 +99,7 @@ export class InstitucionController {
const superAdmin: Operador = req.user.operador;
this.validarUsuarioService.validarSuperAdmin(superAdmin);
return this.institucionService.findInfoInstitucionAll(0, true);
return this.institucionService.findMinInfoInstitucionAll(0, true);
}
@Put()
+1 -1
View File
@@ -52,7 +52,7 @@ export class InstitucionService {
});
}
findInfoInstitucionAll(activo = 0, responsable = false) {
findMinInfoInstitucionAll(activo = 0, responsable = false) {
const busqueda: { activo?: number; responsable?: FindOperator<any> } = {};
if (activo) busqueda.activo = activo;
@@ -0,0 +1,12 @@
import { Expose } from 'class-transformer';
export class OnlyModuloMinOutputDto {
@Expose()
id_modulo;
@Expose()
activo;
@Expose()
modulo;
}
@@ -7,10 +7,7 @@ import { Institucion } from '../../../institucion/entity/institucion.entity';
dataSource
.createQueryBuilder()
.select('m.id_modulo', 'id_modulo')
.addSelect('m.activo', 'activo')
.addSelect('m.modulo', 'modulo')
.addSelect('m.id_institucion', 'id_institucion')
.addSelect('i.institucion', 'institucion')
.from(Modulo, 'm')
.innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'),
})
@@ -18,15 +15,6 @@ export class InformacionModuloView {
@ViewColumn()
id_modulo: number;
@ViewColumn()
activo: number;
@ViewColumn()
id_institucion: number;
@ViewColumn()
institucion: string;
@ViewColumn()
modulo: string;
}
@@ -0,0 +1,36 @@
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
import { Modulo } from '../modulo.entity';
import { Institucion } from '../../../institucion/entity/institucion.entity';
@ViewEntity({
expression: (dataSource: DataSource) =>
dataSource
.createQueryBuilder()
.select('m.id_modulo', 'id_modulo')
.addSelect('m.activo', 'activo_modulo')
.addSelect('m.modulo', 'modulo')
.addSelect('m.id_institucion', 'id_institucion')
.addSelect('i.institucion', 'institucion')
.addSelect('i.activo', 'activo_institucion')
.from(Modulo, 'm')
.innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'),
})
export class MinInformacionModuloView {
@ViewColumn()
id_modulo: number;
@ViewColumn()
activo_modulo: number;
@ViewColumn()
activo_institucion: number;
@ViewColumn()
id_institucion: number;
@ViewColumn()
institucion: string;
@ViewColumn()
modulo: string;
}
+8 -6
View File
@@ -26,7 +26,7 @@ import { CreateModuloDto } from './dto/input/create.dto';
import { ModuloDto } from './dto/input/modulo.dto';
import { UpdateModuloDto } from './dto/input/update.dto';
import { ModuloOutputDto } from './dto/output/modulo.dto';
import { ModuloMinOutputDto } from './dto/output/modulo-min.dto';
import { OnlyModuloMinOutputDto } from './dto/output/only-modulo-min.dto';
@Controller('modulo')
@ApiTags('modulo')
@@ -68,7 +68,7 @@ export class ModuloController {
this.validarUsuarioService.validarAdmin(admin);
return this.moduloService
.findInfoModuloById(parseInt(query.id_modulo))
.findMinInfoModuloById(parseInt(query.id_modulo))
.then((modulo) => {
if (
admin.tipoUsuario.id_tipo_usuario === 3 &&
@@ -81,7 +81,7 @@ export class ModuloController {
});
}
@Serealize(ModuloOutputDto)
@Serealize(OnlyModuloMinOutputDto)
@Get('modulos')
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
@@ -97,10 +97,12 @@ export class ModuloController {
const operador: Operador = req.user.operador;
this.validarUsuarioService.validarOperador(operador);
return this.moduloService.findInfoModuloAll(parseInt(query.id_institucion));
return this.moduloService.findMinInfoModuloAll(
parseInt(query.id_institucion),
);
}
@Serealize(ModuloMinOutputDto)
@Serealize(OnlyModuloMinOutputDto)
@Get('modulos-activos')
@ApiOperation({
description: 'Endpoint que retorna todos los módulos de una institución.',
@@ -111,7 +113,7 @@ export class ModuloController {
type: 'string',
})
modulosActivos(@Query() query: IdInstitucionDto) {
return this.moduloService.findInfoModuloAll(
return this.moduloService.findMinInfoModuloAll(
parseInt(query.id_institucion),
1,
);
+6 -1
View File
@@ -5,6 +5,7 @@ import { ModuloController } from './modulo.controller';
import { ModuloService } from './modulo.service';
import { Modulo } from './entity/modulo.entity';
import { InformacionModuloView } from './entity/views/informacion-modulo.view';
import { MinInformacionModuloView } from './entity/views/min-informacion-modulo.view';
import { InstitucionModule } from '../institucion/institucion.module';
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
@@ -12,7 +13,11 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module'
imports: [
InstitucionModule,
PassportModule.register({ defaultStrategy: 'jwt' }),
TypeOrmModule.forFeature([Modulo, InformacionModuloView]),
TypeOrmModule.forFeature([
Modulo,
InformacionModuloView,
MinInformacionModuloView,
]),
ValidarUsuarioModule,
],
controllers: [ModuloController],
+29 -9
View File
@@ -8,6 +8,7 @@ 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 { MinInformacionModuloView } from './entity/views/min-informacion-modulo.view';
import { Operador } from '../operador/entity/operador.entity';
import { InstitucionService } from '../institucion/institucion.service';
@@ -17,6 +18,8 @@ export class ModuloService {
@InjectRepository(Modulo) private repository: Repository<Modulo>,
@InjectRepository(InformacionModuloView)
private informacionModuloView: Repository<InformacionModuloView>,
@InjectRepository(MinInformacionModuloView)
private minInformacionModuloView: Repository<MinInformacionModuloView>,
private institucionService: InstitucionService,
) {}
@@ -41,7 +44,7 @@ export class ModuloService {
? await this.institucionService.findInfoInstitucionById(id_institucion)
: id_institucion;
return this.informacionModuloView
return this.minInformacionModuloView
.findOne({
where: { id_institucion: institucion.id_institucion, modulo },
})
@@ -88,26 +91,42 @@ export class ModuloService {
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) {
findMinInfoModuloById(id_modulo: number) {
return this.minInformacionModuloView
.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_modulo === 1,
modulo: infoModulo.modulo,
institucion: {
id_institucion: infoModulo.id_institucion,
institucion: infoModulo.institucion,
activo: infoModulo.activo_institucion === 1,
},
});
});
}
async findMinInfoModuloAll(id_institucion: number, activo = 0) {
return this.institucionService
.findInfoInstitucionById(id_institucion)
.then((institucion) => {
const busqueda: { id_institucion: number; activo?: number } = {
const busqueda: { id_institucion: number; activo_modulo?: number } = {
id_institucion: institucion.id_institucion,
};
if (activo) busqueda.activo = activo;
return this.informacionModuloView.find({
if (activo) busqueda.activo_modulo = activo;
return this.minInformacionModuloView.find({
where: busqueda,
order: { modulo: 'ASC' },
});
@@ -119,10 +138,11 @@ export class ModuloService {
modulos.push(
this.repository.create({
id_modulo: infoModulos[i].id_modulo,
activo: infoModulos[i].activo === 1,
activo: infoModulos[i].activo_modulo === 1,
modulo: infoModulos[i].modulo,
institucion: {
id_institucion: infoModulos[i].id_institucion,
activo: infoModulos[i].activo_institucion === 1,
institucion: infoModulos[i].institucion,
},
}),