falta un update

This commit is contained in:
xXpuma99Xx 2022-10-16 11:53:07 -05:00
parent fccc5f11c5
commit 4c8da74726
9 changed files with 209 additions and 91 deletions

View File

@ -80,6 +80,8 @@ import { FullInformacionEquipoProgramaView } from './equipo-programa/entity/view
import { InformacionEquipoProgramaView } from './equipo-programa/entity/views/informacion-equipo-programa.view';
import { FullInformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/views/full-informacion-equipo-tipo-entrada.view';
import { InformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/views/informacion-equipo-tipo-entrada.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 { 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';
@ -157,6 +159,8 @@ import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuar
InformacionEquipoProgramaView,
FullInformacionEquipoTipoEntradaView,
InformacionEquipoTipoEntradaView,
FullInformacionInstitucionUsuarioView,
InformacionInstitucionUsuarioView,
InformacionModuloView,
MinInformacionModuloView,
FullInformacionMultaView,

View File

@ -1,28 +0,0 @@
// import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
// import { EquipoPrograma } from '../equipo-programa.entity';
// import { Programa } from '../../../institucion-programa/entity/programa.entity';
// @ViewEntity({
// expression: (dataSource: DataSource) =>
// dataSource
// .createQueryBuilder()
// .select('ep.id_equipo_programa', 'id_equipo_programa')
// .addSelect('ep.id_equipo', 'id_equipo')
// .addSelect('ep.id_programa', 'id_programa')
// .addSelect('p.programa', 'programa')
// .from(EquipoPrograma, 'ep')
// .innerJoin(Programa, 'p', 'p.id_programa = ep.id_programa'),
// })
// export class FullInformacionEquipoProgramaView {
// @ViewColumn()
// id_equipo_programa: number;
// @ViewColumn()
// id_equipo: number;
// @ViewColumn()
// id_programa: number;
// @ViewColumn()
// programa: string;
// }

View File

@ -0,0 +1,62 @@
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
import { Carrera } from '../../../institucion-carrera/entity/carrera.entity';
import { Institucion } from '../../../institucion/entity/institucion.entity';
import { InstitucionCarrera } from '../../../institucion-carrera/entity/institucion-carrera.entity';
import { InstitucionUsuario } from '../institucion-usuario.entity';
import { Usuario } from '../../../usuario/entity/usuario.entity';
@ViewEntity({
expression: (dataSource: DataSource) =>
dataSource
.createQueryBuilder()
.select('iu.id_institucion_usuario', 'id_institucion_usuario')
.addSelect('iu.activo', 'activo')
.addSelect('iu.multa', 'multa')
.addSelect('iu.id_institucion_carrera', 'id_institucion_carrera')
.addSelect('iu.id_usuario', 'id_usuario')
.addSelect('ic.id_carrera', 'id_carrera')
.addSelect('ic.id_institucion', 'id_institucion')
.addSelect('u.correo', 'correo')
.addSelect('c.carrera', 'carrera')
.addSelect('i.institucion', 'institucion')
.from(InstitucionUsuario, 'iu')
.innerJoin(
InstitucionCarrera,
'ic',
'ic.id_institucion_carrera = iu.id_institucion_carrera',
)
.innerJoin(Usuario, 'u', 'u.id_usuario = iu.id_usuario')
.innerJoin(Carrera, 'c', 'c.id_carrera = ic.id_carrera')
.innerJoin(Institucion, 'i', 'i.id_institucion = ic.id_institucion'),
})
export class FullInformacionInstitucionUsuarioView {
@ViewColumn()
id_carrera: number;
@ViewColumn()
activo: number;
@ViewColumn()
carrera: string;
@ViewColumn()
correo: string;
@ViewColumn()
institucion: string;
@ViewColumn()
id_institucion: number;
@ViewColumn()
id_institucion_carrera: number;
@ViewColumn()
id_institucion_usuario: number;
@ViewColumn()
id_usuario: number;
@ViewColumn()
multa: number;
}

View File

@ -1,22 +0,0 @@
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
import { InstitucionUsuario } from '../institucion-usuario.entity';
@ViewEntity({
expression: (dataSource: DataSource) =>
dataSource
.createQueryBuilder()
.select('ep.id_equipo_programa', 'id_equipo_programa')
.addSelect('ep.id_equipo', 'id_equipo')
.addSelect('ep.id_programa', 'id_programa')
.from(InstitucionUsuario, 'ep'),
})
export class InformacionEquipoProgramaView {
@ViewColumn()
id_equipo_programa: number;
@ViewColumn()
id_equipo: number;
@ViewColumn()
id_programa: number;
}

View File

@ -0,0 +1,44 @@
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
import { InstitucionCarrera } from '../../../institucion-carrera/entity/institucion-carrera.entity';
import { InstitucionUsuario } from '../institucion-usuario.entity';
@ViewEntity({
expression: (dataSource: DataSource) =>
dataSource
.createQueryBuilder()
.select('iu.id_institucion_usuario', 'id_institucion_usuario')
.addSelect('iu.activo', 'activo')
.addSelect('iu.multa', 'multa')
.addSelect('iu.id_institucion_carrera', 'id_institucion_carrera')
.addSelect('iu.id_usuario', 'id_usuario')
.addSelect('ic.id_carrera', 'id_carrera')
.addSelect('ic.id_institucion', 'id_institucion')
.from(InstitucionUsuario, 'iu')
.innerJoin(
InstitucionCarrera,
'ic',
'ic.id_institucion_carrera = iu.id_institucion_carrera',
),
})
export class InformacionInstitucionUsuarioView {
@ViewColumn()
id_carrera: number;
@ViewColumn()
activo: number;
@ViewColumn()
id_institucion: number;
@ViewColumn()
id_institucion_carrera: number;
@ViewColumn()
id_institucion_usuario: number;
@ViewColumn()
id_usuario: number;
@ViewColumn()
multa: number;
}

View File

@ -3,13 +3,19 @@ import { PassportModule } from '@nestjs/passport';
import { TypeOrmModule } from '@nestjs/typeorm';
import { InstitucionUsuarioService } from './institucion-usuario.service';
import { InstitucionUsuario } from './entity/institucion-usuario.entity';
import { FullInformacionInstitucionUsuarioView } from './entity/views/full-informacion-institucion-usuario.view';
import { InformacionInstitucionUsuarioView } from './entity/views/informacion-institucion-usuario.view';
import { InstitucionUsuarioController } from './institucion-usuario.controller';
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
@Module({
imports: [
PassportModule.register({ defaultStrategy: 'jwt' }),
TypeOrmModule.forFeature([InstitucionUsuario]),
TypeOrmModule.forFeature([
InstitucionUsuario,
FullInformacionInstitucionUsuarioView,
InformacionInstitucionUsuarioView,
]),
ValidarUsuarioModule,
],
providers: [InstitucionUsuarioService],

View File

@ -4,12 +4,18 @@ import { Repository } from 'typeorm';
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';
@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) {
@ -21,51 +27,97 @@ export class InstitucionUsuarioService {
}));
}
findAllByIdUsuario(id_usuario: number) {
return this.repository.find({
join: {
alias: 'iu',
innerJoinAndSelect: { ic: 'iu.institucionCarrera' },
},
where: { usuario: { id_usuario } },
});
}
findInfoInstitucionUsuarioAllByIdUsuario(id_usuario: number) {
return this.informacionInstitucionUsuarioView
.find({ where: { id_usuario } })
.then((infoInstitucionUsuarios) => {
const institucionUsuarios: InstitucionUsuario[] = [];
findById(id_institucion_usuario: number) {
return this.repository
.findOne({ where: { id_institucion_usuario } })
.then((institucionUsuario) => {
if (!institucionUsuario)
throw new ConflictException('No existe este id institución usuario.');
return institucionUsuario;
for (let i = 0; i < infoInstitucionUsuarios.length; i++)
institucionUsuarios.push(
this.repository.create({
id_institucion_usuario:
infoInstitucionUsuarios[i].id_institucion_usuario,
activo: infoInstitucionUsuarios[i].activo === 1,
multa: infoInstitucionUsuarios[i].multa === 1,
institucionCarrera: {
id_institucion_carrera:
infoInstitucionUsuarios[i].id_institucion_carrera,
carrera: { id_carrera: infoInstitucionUsuarios[i].id_carrera },
institucion: {
id_institucion: infoInstitucionUsuarios[i].id_institucion,
},
},
}),
);
return institucionUsuarios;
});
}
findByUsuarioInstitucionCarrera(
findInfoInstitucionUsuarioById(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.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,
},
},
});
});
}
findFullInfoInstitucionUsuarioByUsuarioInstitucionCarrera(
usuario: Usuario,
institucionCarrera: InstitucionCarrera,
) {
return this.repository
return this.fullInformacionInstitucionUsuarioView
.findOne({
where: { activo: true, institucionCarrera, usuario },
where: {
id_institucion_carrera: institucionCarrera.id_institucion_carrera,
id_usuario: usuario.id_usuario,
},
})
.then((institucionUsuario) => {
if (!institucionUsuario)
.then((infoInstitucionUsuario) => {
if (!infoInstitucionUsuario || infoInstitucionUsuario.activo === 0)
throw new ConflictException(
'Verificar sus datos, cualquier duda asistir al módulo PC PUMA.',
);
return institucionUsuario;
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: {
id_usuario: infoInstitucionUsuario.id_usuario,
correo: infoInstitucionUsuario.correo,
},
});
});
}
update(attrs: Partial<InstitucionUsuario>) {
return this.findById(attrs.id_institucion_usuario)
return this.findInfoInstitucionUsuarioById(attrs.id_institucion_usuario)
.then((institucionUsuario) => {
Object.assign(institucionUsuario, attrs);
return this.repository.save(institucionUsuario);
})
.then((_) => ({
message: 'Se guardaron los cambios correctamente.',
}));
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
}
}

View File

@ -93,7 +93,7 @@ export class MultaService {
return this.repository.save(this.repository.create(data));
})
.then((_) =>
this.institucionUsuarioService.findAllByIdUsuario(
this.institucionUsuarioService.findInfoInstitucionUsuarioAllByIdUsuario(
prestamo.usuario.id_usuario,
),
)
@ -265,9 +265,10 @@ export class MultaService {
}
async quitarMulta(id_institucion_usuario: number) {
const institucionUsuario = await this.institucionUsuarioService.findById(
id_institucion_usuario,
);
const institucionUsuario =
await this.institucionUsuarioService.findInfoInstitucionUsuarioById(
id_institucion_usuario,
);
return this.repository
.createQueryBuilder('mu')

View File

@ -249,27 +249,26 @@ export class UsuarioService {
throw new ConflictException(
'Verificar sus datos, cualquier duda asistir al módulo PC PUMA.',
);
return this.institucionUsuarioService.findByUsuarioInstitucionCarrera(
return this.institucionUsuarioService.findFullInfoInstitucionUsuarioByUsuarioInstitucionCarrera(
existeUsuario,
institucionCarrera,
);
})
.then((institucionUsuario) => {
const usuario = institucionUsuario.usuario;
if (!usuario.correo)
if (!institucionUsuario.usuario.correo)
throw new ConflictException(
'Tu institución no te asignó un correo institucional, dirigete al módulo ',
'Tu institución no te asignó un correo institucional, dirigete al módulo para solucionarlo.',
);
const arrobaIndex = usuario.correo.indexOf('@');
const arrobaIndex = institucionUsuario.usuario.correo.indexOf('@');
message = `Se creó correctamente tu cuenta, mandamos un correo a ...${usuario.correo.slice(
message = `Se creó correctamente tu cuenta, mandamos un correo a ...${institucionUsuario.usuario.correo.slice(
arrobaIndex - 3,
)} con tus credenciales para acceder a este servicio.`;
usuario.telefono = telefono;
usuario.password = this.bcryptService.encriptar(password);
return this.repository.save(usuario);
institucionUsuario.usuario.telefono = telefono;
institucionUsuario.usuario.password =
this.bcryptService.encriptar(password);
return this.repository.save(institucionUsuario.usuario);
})
.then((usuario) =>
this.nodemailerService.sendEmail({