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