202 lines
7.6 KiB
TypeScript
202 lines
7.6 KiB
TypeScript
import { ConflictException, Injectable } from '@nestjs/common';
|
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
import { Repository } from 'typeorm';
|
|
import { Institucion } from 'src/institucion/entity/institucion.entity';
|
|
import { InstitucionCarrera } from '../institucion-carrera/entity/institucion-carrera.entity';
|
|
import { InstitucionUsuario } from './entity/institucion-usuario.entity';
|
|
import { Usuario } from '../usuario/entity/usuario.entity';
|
|
import { FullInformacionInstitucionUsuarioView } from './entity/views/full-informacion-institucion-usuario.view';
|
|
import { InformacionInstitucionUsuarioView } from './entity/views/informacion-institucion-usuario.view';
|
|
import { Operador } from 'src/operador/entity/operador.entity';
|
|
|
|
@Injectable()
|
|
export class InstitucionUsuarioService {
|
|
constructor(
|
|
@InjectRepository(InstitucionUsuario)
|
|
private repository: Repository<InstitucionUsuario>,
|
|
@InjectRepository(FullInformacionInstitucionUsuarioView)
|
|
private fullInformacionInstitucionUsuarioView: Repository<FullInformacionInstitucionUsuarioView>,
|
|
@InjectRepository(InformacionInstitucionUsuarioView)
|
|
private informacionInstitucionUsuarioView: Repository<InformacionInstitucionUsuarioView>,
|
|
) {}
|
|
|
|
create(institucionCarrera: InstitucionCarrera, usuario: Usuario) {
|
|
return this.repository
|
|
.save(this.repository.create({ institucionCarrera, usuario }))
|
|
.then((institucionUsuario) => ({
|
|
message: `Se asignó la carrera: ${institucionUsuario.institucionCarrera.carrera.carrera} al usuario: ${institucionUsuario.usuario.usuario}.`,
|
|
institucionUsuario,
|
|
}));
|
|
}
|
|
|
|
desactivarCuentas(admin: Operador) {
|
|
return this.informacionInstitucionUsuarioView
|
|
.find({
|
|
where: { id_institucion: admin.institucion.id_institucion },
|
|
})
|
|
.then(async (infoInstitucionesUsuario) => {
|
|
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
|
await this.repository.save(
|
|
this.repository.create({
|
|
id_institucion_usuario:
|
|
infoInstitucionesUsuario[i].id_institucion_usuario,
|
|
activo: false,
|
|
}),
|
|
);
|
|
})
|
|
.then((_) => ({ message: 'Se desactivaron todas las cuentas.' }));
|
|
}
|
|
|
|
findAllByIdUsuarioIdInstitucion(id_usuario: number, id_institucion: number) {
|
|
return this.informacionInstitucionUsuarioView
|
|
.find({ where: { id_institucion, id_usuario } })
|
|
.then((infoInstitucionesUsuario) => {
|
|
const institucionesUsuario: InstitucionUsuario[] = [];
|
|
|
|
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
|
institucionesUsuario.push(
|
|
this.viewToInstitucionUsuario(infoInstitucionesUsuario[i]),
|
|
);
|
|
return institucionesUsuario;
|
|
});
|
|
}
|
|
|
|
findFullInfoAllByIdUsuarioIdInstitucion(
|
|
id_usuario: number,
|
|
id_institucion: number,
|
|
) {
|
|
return this.fullInformacionInstitucionUsuarioView
|
|
.find({ where: { id_institucion, id_usuario } })
|
|
.then((infoInstitucionesUsuario) => {
|
|
const institucionesUsuario: InstitucionUsuario[] = [];
|
|
|
|
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
|
institucionesUsuario.push(
|
|
this.repository.create({
|
|
id_institucion_usuario:
|
|
infoInstitucionesUsuario[i].id_institucion_usuario,
|
|
activo: infoInstitucionesUsuario[i].activo === 1,
|
|
multa: infoInstitucionesUsuario[i].multa === 1,
|
|
institucionCarrera: {
|
|
id_institucion_carrera:
|
|
infoInstitucionesUsuario[i].id_institucion_carrera,
|
|
carrera: {
|
|
id_carrera: infoInstitucionesUsuario[i].id_carrera,
|
|
carrera: infoInstitucionesUsuario[i].carrera,
|
|
},
|
|
institucion: {
|
|
id_institucion: infoInstitucionesUsuario[i].id_institucion,
|
|
institucion: infoInstitucionesUsuario[i].institucion,
|
|
},
|
|
},
|
|
}),
|
|
);
|
|
return institucionesUsuario;
|
|
});
|
|
}
|
|
|
|
findFullInfoByIdUsuarioIdInstitucionCarrera(
|
|
usuario: Usuario,
|
|
id_institucion_carrera: number,
|
|
) {
|
|
return this.fullInformacionInstitucionUsuarioView
|
|
.findOne({
|
|
where: { id_institucion_carrera, id_usuario: usuario.id_usuario },
|
|
})
|
|
.then((infoInstitucionUsuario) => {
|
|
if (!infoInstitucionUsuario || infoInstitucionUsuario.activo === 0)
|
|
throw new ConflictException(
|
|
'Verificar sus datos, cualquier duda asistir al módulo PC PUMA.',
|
|
);
|
|
return this.repository.create({
|
|
id_institucion_usuario: infoInstitucionUsuario.id_institucion_usuario,
|
|
activo: infoInstitucionUsuario.activo === 1,
|
|
multa: infoInstitucionUsuario.multa === 1,
|
|
institucionCarrera: {
|
|
id_institucion_carrera:
|
|
infoInstitucionUsuario.id_institucion_carrera,
|
|
carrera: { id_carrera: infoInstitucionUsuario.id_carrera },
|
|
institucion: {
|
|
id_institucion: infoInstitucionUsuario.id_institucion,
|
|
},
|
|
},
|
|
usuario,
|
|
});
|
|
});
|
|
}
|
|
|
|
findById(id_institucion_usuario: number) {
|
|
return this.informacionInstitucionUsuarioView
|
|
.findOne({ where: { id_institucion_usuario } })
|
|
.then((infoInstitucionUsuario) => {
|
|
if (!infoInstitucionUsuario)
|
|
throw new ConflictException('No existe este id institución usuario.');
|
|
return this.viewToInstitucionUsuario(infoInstitucionUsuario);
|
|
});
|
|
}
|
|
|
|
findByIdUsuarioIdInstitucion(usuario: Usuario, institucion: Institucion) {
|
|
return this.informacionInstitucionUsuarioView
|
|
.findOne({
|
|
where: {
|
|
id_institucion: institucion.id_institucion,
|
|
id_usuario: usuario.id_usuario,
|
|
},
|
|
})
|
|
.then((infoInstitucionUsuario) =>
|
|
this.viewToInstitucionUsuario(infoInstitucionUsuario),
|
|
);
|
|
}
|
|
|
|
findByIdUsuarioIdInstitucionCarrera(
|
|
id_usuario: number,
|
|
id_institucion_carrera: number,
|
|
) {
|
|
return this.informacionInstitucionUsuarioView
|
|
.findOne({ where: { id_institucion_carrera, id_usuario } })
|
|
.then((infoInstitucionUsuario) =>
|
|
this.viewToInstitucionUsuario(infoInstitucionUsuario),
|
|
);
|
|
}
|
|
|
|
save(institucionUsuario: InstitucionUsuario) {
|
|
return this.repository.save(institucionUsuario);
|
|
}
|
|
|
|
update(attrs: Partial<InstitucionUsuario>) {
|
|
return this.findById(attrs.id_institucion_usuario)
|
|
.then((institucionUsuario) => {
|
|
Object.assign(institucionUsuario, attrs);
|
|
return this.repository.save(institucionUsuario);
|
|
})
|
|
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
|
|
}
|
|
|
|
updateMulta(id_institucion: number, id_usuario: number, status: boolean) {
|
|
return this.findAllByIdUsuarioIdInstitucion(
|
|
id_usuario,
|
|
id_institucion,
|
|
).then(async (institucionesUsuario) => {
|
|
for (let i = 0; i < institucionesUsuario.length; i++) {
|
|
institucionesUsuario[i].multa = status;
|
|
await this.repository.save(institucionesUsuario[i]);
|
|
}
|
|
});
|
|
}
|
|
|
|
viewToInstitucionUsuario(
|
|
infoInstitucionUsuario: InformacionInstitucionUsuarioView,
|
|
) {
|
|
return this.repository.create({
|
|
id_institucion_usuario: infoInstitucionUsuario.id_institucion_usuario,
|
|
activo: infoInstitucionUsuario.activo === 1,
|
|
multa: infoInstitucionUsuario.multa === 1,
|
|
institucionCarrera: {
|
|
id_institucion_carrera: infoInstitucionUsuario.id_institucion_carrera,
|
|
carrera: { id_carrera: infoInstitucionUsuario.id_carrera },
|
|
institucion: { id_institucion: infoInstitucionUsuario.id_institucion },
|
|
},
|
|
});
|
|
}
|
|
}
|