modulo service final
This commit is contained in:
parent
57a1c3c0be
commit
9a98ac2851
@ -86,7 +86,7 @@ import { InformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/v
|
|||||||
import { FullInformacionInstitucionUsuarioView } from './institucion-usuario/entity/views/full-informacion-institucion-usuario.view';
|
import { FullInformacionInstitucionUsuarioView } from './institucion-usuario/entity/views/full-informacion-institucion-usuario.view';
|
||||||
import { InformacionInstitucionUsuarioView } from './institucion-usuario/entity/views/informacion-institucion-usuario.view';
|
import { InformacionInstitucionUsuarioView } from './institucion-usuario/entity/views/informacion-institucion-usuario.view';
|
||||||
import { InformacionModuloView } from './modulo/entity/views/informacion-modulo.view';
|
import { InformacionModuloView } from './modulo/entity/views/informacion-modulo.view';
|
||||||
import { MinInformacionModuloView } from './modulo/entity/views/min-informacion-modulo.view';
|
import { FullInformacionModuloView } from './modulo/entity/views/full-informacion-modulo.view';
|
||||||
import { FullInformacionMultaView } from './multa/entity/views/full-informacion-multa.view';
|
import { FullInformacionMultaView } from './multa/entity/views/full-informacion-multa.view';
|
||||||
import { InformacionMultaView } from './multa/entity/views/informacion-multa.view';
|
import { InformacionMultaView } from './multa/entity/views/informacion-multa.view';
|
||||||
import { FullInformacionOperadorView } from './operador/entity/views/full-informacion-operador.view';
|
import { FullInformacionOperadorView } from './operador/entity/views/full-informacion-operador.view';
|
||||||
@ -168,7 +168,7 @@ import { ModuloMotivoModule } from './modulo-motivo/modulo-motivo.module';
|
|||||||
FullInformacionInstitucionUsuarioView,
|
FullInformacionInstitucionUsuarioView,
|
||||||
InformacionInstitucionUsuarioView,
|
InformacionInstitucionUsuarioView,
|
||||||
InformacionModuloView,
|
InformacionModuloView,
|
||||||
MinInformacionModuloView,
|
FullInformacionModuloView,
|
||||||
FullInformacionMultaView,
|
FullInformacionMultaView,
|
||||||
InformacionMultaView,
|
InformacionMultaView,
|
||||||
FullInformacionOperadorView,
|
FullInformacionOperadorView,
|
||||||
|
@ -16,7 +16,7 @@ import { Institucion } from '../../../institucion/entity/institucion.entity';
|
|||||||
.orderBy('institucion', 'ASC')
|
.orderBy('institucion', 'ASC')
|
||||||
.addOrderBy('modulo', 'ASC'),
|
.addOrderBy('modulo', 'ASC'),
|
||||||
})
|
})
|
||||||
export class MinInformacionModuloView {
|
export class FullInformacionModuloView {
|
||||||
@ViewColumn()
|
@ViewColumn()
|
||||||
id_modulo: number;
|
id_modulo: number;
|
||||||
|
|
@ -68,7 +68,7 @@ export class ModuloController {
|
|||||||
const admin: Operador = req.user.operador;
|
const admin: Operador = req.user.operador;
|
||||||
|
|
||||||
this.validarUsuarioService.validarAdmin(admin);
|
this.validarUsuarioService.validarAdmin(admin);
|
||||||
return this.moduloService.findMinInfoModuloById(parseInt(query.id_modulo));
|
return this.moduloService.findMinInfoById(parseInt(query.id_modulo));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Serealize(OnlyModuloOutputDto)
|
@Serealize(OnlyModuloOutputDto)
|
||||||
@ -82,9 +82,7 @@ export class ModuloController {
|
|||||||
const admin: Operador = req.user.operador;
|
const admin: Operador = req.user.operador;
|
||||||
|
|
||||||
this.validarUsuarioService.validarAdmin(admin);
|
this.validarUsuarioService.validarAdmin(admin);
|
||||||
return this.moduloService.findMinInfoModuloAll(
|
return this.moduloService.findAllAdmin(admin);
|
||||||
admin.institucion.id_institucion,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Serealize(OnlyModuloOutputDto)
|
@Serealize(OnlyModuloOutputDto)
|
||||||
@ -96,10 +94,7 @@ export class ModuloController {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
})
|
})
|
||||||
modulosActivos(@Query() query: IdInstitucionDto) {
|
modulosActivos(@Query() query: IdInstitucionDto) {
|
||||||
return this.moduloService.findMinInfoModuloAll(
|
return this.moduloService.findAllActivo(parseInt(query.id_institucion));
|
||||||
parseInt(query.id_institucion),
|
|
||||||
1,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Serealize(MessageOutputDto)
|
@Serealize(MessageOutputDto)
|
||||||
|
@ -4,8 +4,8 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
|||||||
import { ModuloController } from './modulo.controller';
|
import { ModuloController } from './modulo.controller';
|
||||||
import { ModuloService } from './modulo.service';
|
import { ModuloService } from './modulo.service';
|
||||||
import { Modulo } from './entity/modulo.entity';
|
import { Modulo } from './entity/modulo.entity';
|
||||||
|
import { FullInformacionModuloView } from './entity/views/full-informacion-modulo.view';
|
||||||
import { InformacionModuloView } from './entity/views/informacion-modulo.view';
|
import { InformacionModuloView } from './entity/views/informacion-modulo.view';
|
||||||
import { MinInformacionModuloView } from './entity/views/min-informacion-modulo.view';
|
|
||||||
import { InstitucionModule } from '../institucion/institucion.module';
|
import { InstitucionModule } from '../institucion/institucion.module';
|
||||||
import { ModuloMotivoModule } from '../modulo-motivo/modulo-motivo.module';
|
import { ModuloMotivoModule } from '../modulo-motivo/modulo-motivo.module';
|
||||||
|
|
||||||
@ -16,8 +16,8 @@ import { ModuloMotivoModule } from '../modulo-motivo/modulo-motivo.module';
|
|||||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||||
TypeOrmModule.forFeature([
|
TypeOrmModule.forFeature([
|
||||||
Modulo,
|
Modulo,
|
||||||
|
FullInformacionModuloView,
|
||||||
InformacionModuloView,
|
InformacionModuloView,
|
||||||
MinInformacionModuloView,
|
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
controllers: [ModuloController],
|
controllers: [ModuloController],
|
||||||
|
@ -9,9 +9,9 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||||||
import { FindOptionsWhere, Repository } from 'typeorm';
|
import { FindOptionsWhere, Repository } from 'typeorm';
|
||||||
import { Institucion } from '../institucion/entity/institucion.entity';
|
import { Institucion } from '../institucion/entity/institucion.entity';
|
||||||
import { Modulo } from './entity/modulo.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 { Operador } from '../operador/entity/operador.entity';
|
||||||
|
import { InformacionModuloView } from './entity/views/informacion-modulo.view';
|
||||||
|
import { FullInformacionModuloView } from './entity/views/full-informacion-modulo.view';
|
||||||
import { InstitucionService } from '../institucion/institucion.service';
|
import { InstitucionService } from '../institucion/institucion.service';
|
||||||
import { ModuloMotivoService } from '../modulo-motivo/modulo-motivo.service';
|
import { ModuloMotivoService } from '../modulo-motivo/modulo-motivo.service';
|
||||||
|
|
||||||
@ -21,16 +21,15 @@ export class ModuloService {
|
|||||||
@InjectRepository(Modulo) private repository: Repository<Modulo>,
|
@InjectRepository(Modulo) private repository: Repository<Modulo>,
|
||||||
@InjectRepository(InformacionModuloView)
|
@InjectRepository(InformacionModuloView)
|
||||||
private informacionModuloView: Repository<InformacionModuloView>,
|
private informacionModuloView: Repository<InformacionModuloView>,
|
||||||
@InjectRepository(MinInformacionModuloView)
|
@InjectRepository(FullInformacionModuloView)
|
||||||
private minInformacionModuloView: Repository<MinInformacionModuloView>,
|
private fullInformacionModuloView: Repository<FullInformacionModuloView>,
|
||||||
|
private institucionService: InstitucionService,
|
||||||
@Inject(forwardRef(() => ModuloMotivoService))
|
@Inject(forwardRef(() => ModuloMotivoService))
|
||||||
private moduloMotivoService: ModuloMotivoService,
|
private moduloMotivoService: ModuloMotivoService,
|
||||||
private institucionService: InstitucionService,
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
create(admin: Operador, modulo: string) {
|
create(admin: Operador, modulo: string): Promise<{ message: string }> {
|
||||||
// Buscamos una modulo con ese nombre en la institución del admin
|
// Buscamos un registro con ese nombre en la institución del admin
|
||||||
// que realiza esta acción
|
|
||||||
return this.findModulo(admin.institucion, modulo, true)
|
return this.findModulo(admin.institucion, modulo, true)
|
||||||
.then((_) =>
|
.then((_) =>
|
||||||
// Creamos y guardamos un registro
|
// Creamos y guardamos un registro
|
||||||
@ -44,14 +43,39 @@ export class ModuloService {
|
|||||||
.then((_) => ({ message: 'Se creó correctamente un nuevo módulo.' }));
|
.then((_) => ({ message: 'Se creó correctamente un nuevo módulo.' }));
|
||||||
}
|
}
|
||||||
|
|
||||||
findFullInfoById(id_modulo: number) {
|
findAllActivo(id_institucion: number): Promise<Modulo[]> {
|
||||||
return this.repository.findOne({ where: { id_modulo } }).then((modulo) => {
|
return this.institucionService
|
||||||
if (!modulo) throw new NotFoundException('No existe este id módulo.');
|
.findById(id_institucion)
|
||||||
return modulo;
|
.then((institucion) =>
|
||||||
});
|
this.fullInformacionModuloView.find({
|
||||||
|
where: {
|
||||||
|
activo_modulo: 1,
|
||||||
|
id_institucion: institucion.id_institucion,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.then((infoModulos) => {
|
||||||
|
const modulos: Modulo[] = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < infoModulos.length; i++)
|
||||||
|
modulos.push(this.fullViewToModulo(infoModulos[i]));
|
||||||
|
return modulos;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
findById(id_modulo: number) {
|
findAllAdmin(operador: Operador): Promise<Modulo[]> {
|
||||||
|
return this.fullInformacionModuloView
|
||||||
|
.find({ where: { id_institucion: operador.institucion.id_institucion } })
|
||||||
|
.then((infoModulos) => {
|
||||||
|
const modulos: Modulo[] = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < infoModulos.length; i++)
|
||||||
|
modulos.push(this.fullViewToModulo(infoModulos[i]));
|
||||||
|
return modulos;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
findById(id_modulo: number): Promise<Modulo> {
|
||||||
return this.informacionModuloView
|
return this.informacionModuloView
|
||||||
.findOne({ where: { id_modulo } })
|
.findOne({ where: { id_modulo } })
|
||||||
.then((infoModulo) => {
|
.then((infoModulo) => {
|
||||||
@ -64,98 +88,82 @@ export class ModuloService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
findMinInfoModuloAll(id_institucion: number, activo = 0) {
|
findFullInfoById(id_modulo: number): Promise<Modulo> {
|
||||||
return this.institucionService
|
return this.repository.findOne({ where: { id_modulo } }).then((modulo) => {
|
||||||
.findById(id_institucion)
|
if (!modulo) throw new NotFoundException('No existe este id módulo.');
|
||||||
.then((institucion) => {
|
return modulo;
|
||||||
const busqueda: FindOptionsWhere<MinInformacionModuloView> = {
|
});
|
||||||
id_institucion: institucion.id_institucion,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (activo) busqueda.activo_modulo = activo;
|
|
||||||
return this.minInformacionModuloView.find({ where: busqueda });
|
|
||||||
})
|
|
||||||
.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_modulo === 1,
|
|
||||||
modulo: infoModulos[i].modulo,
|
|
||||||
institucion: {
|
|
||||||
id_institucion: infoModulos[i].id_institucion,
|
|
||||||
institucion: infoModulos[i].institucion,
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
return modulos;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
findMinInfoModuloById(id_modulo: number) {
|
findMinInfoById(id_modulo: number): Promise<Modulo> {
|
||||||
return this.minInformacionModuloView
|
return this.fullInformacionModuloView
|
||||||
.findOne({ where: { id_modulo } })
|
.findOne({ where: { id_modulo } })
|
||||||
.then((infoModulo) => {
|
.then((infoModulo) => {
|
||||||
if (!infoModulo)
|
if (!infoModulo)
|
||||||
throw new NotFoundException('No existe este id módulo.');
|
throw new NotFoundException('No existe este id módulo.');
|
||||||
return this.repository.create({
|
return this.fullViewToModulo(infoModulo);
|
||||||
id_modulo: infoModulo.id_modulo,
|
|
||||||
activo: infoModulo.activo_modulo === 1,
|
|
||||||
modulo: infoModulo.modulo,
|
|
||||||
institucion: {
|
|
||||||
id_institucion: infoModulo.id_institucion,
|
|
||||||
institucion: infoModulo.institucion,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
findModulo(institucion: Institucion, modulo: string, validarExiste = false) {
|
findModulo(
|
||||||
return this.minInformacionModuloView
|
institucion: Institucion,
|
||||||
|
modulo: string,
|
||||||
|
validarExiste = false,
|
||||||
|
): Promise<Modulo> {
|
||||||
|
return this.fullInformacionModuloView
|
||||||
.findOne({
|
.findOne({
|
||||||
where: { id_institucion: institucion.id_institucion, modulo },
|
where: { id_institucion: institucion.id_institucion, modulo },
|
||||||
})
|
})
|
||||||
.then((infoModulo) => {
|
.then((infoModulo) => {
|
||||||
if (!infoModulo) return null;
|
if (infoModulo && validarExiste)
|
||||||
if (validarExiste)
|
|
||||||
throw new ConflictException(
|
throw new ConflictException(
|
||||||
'Ya existe un módulo en esta institución con este nombre, intente con otro.',
|
'Ya existe un módulo en esta institución con este nombre, intente con otro.',
|
||||||
);
|
);
|
||||||
return this.repository.create({
|
return this.fullViewToModulo(infoModulo);
|
||||||
id_modulo: infoModulo.id_modulo,
|
|
||||||
institucion: { id_institucion: infoModulo.id_institucion },
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fullViewToModulo(infoModulo: FullInformacionModuloView): Modulo {
|
||||||
|
if (!infoModulo) return null;
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
update(
|
update(
|
||||||
admin: Operador,
|
admin: Operador,
|
||||||
attrs: Partial<Modulo>,
|
attrs: Partial<Modulo>,
|
||||||
motivo?: string,
|
motivo?: string,
|
||||||
numero_alumnos?: number,
|
numero_alumnos?: number,
|
||||||
fecha_creacion?: string,
|
fecha_creacion?: string,
|
||||||
) {
|
): Promise<{ message: string }> {
|
||||||
|
// Validamos que si se manda uno solo de esos campos, se deba mandar todos los demas
|
||||||
if (
|
if (
|
||||||
(!motivo || !numero_alumnos || !fecha_creacion) &&
|
(motivo || numero_alumnos || fecha_creacion) &&
|
||||||
(motivo || numero_alumnos || fecha_creacion)
|
(!motivo || !numero_alumnos || !fecha_creacion)
|
||||||
)
|
)
|
||||||
throw new ConflictException('No se mandó toda la información necesaria.');
|
throw new ConflictException('No se mandó toda la información necesaria.');
|
||||||
return this.findById(attrs.id_modulo)
|
return this.findById(attrs.id_modulo)
|
||||||
.then(async (modulo) => {
|
.then(async (modulo) => {
|
||||||
// Validamos que el modulo enviado sea del admin que realiza esta acción
|
// Validamos que el módulo pertenezca a la institución del admin
|
||||||
if (
|
if (
|
||||||
admin.institucion.id_institucion != modulo.institucion.id_institucion
|
admin.institucion.id_institucion != modulo.institucion.id_institucion
|
||||||
)
|
)
|
||||||
throw new ConflictException(
|
throw new ConflictException(
|
||||||
'No puedes actualizar la información de este módulo porque no le pertenece a tu institución.',
|
'No puedes modificar la información este módulo porque no pertenece a tu institución.',
|
||||||
);
|
);
|
||||||
// Buscamos un modulo en esa institución con ese nombre
|
// Si se quiere cambiar el nombre del módulo validamos que no exista uno con el mismo nombre
|
||||||
if (attrs.modulo)
|
if (attrs.modulo)
|
||||||
await this.findModulo(modulo.institucion, attrs.modulo, true);
|
await this.findModulo(modulo.institucion, attrs.modulo, true);
|
||||||
// Asignamos valores enviados al objeto
|
// Asignamos valores enviados al objeto
|
||||||
Object.assign(modulo, attrs);
|
Object.assign(modulo, attrs);
|
||||||
|
// Se crea un registro del cambio de status de este módulo
|
||||||
if (motivo)
|
if (motivo)
|
||||||
await this.moduloMotivoService.create(
|
await this.moduloMotivoService.create(
|
||||||
admin,
|
admin,
|
||||||
|
Loading…
Reference in New Issue
Block a user