listo institucion usuario
This commit is contained in:
parent
772010d7f1
commit
ace8e16c83
@ -1,10 +1,9 @@
|
||||
import { IsBoolean, IsInt, IsOptional } from 'class-validator';
|
||||
import { IsBoolean, IsInt } from 'class-validator';
|
||||
|
||||
export class UpdateInstitucionUsuarioInputDto {
|
||||
@IsInt()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
@IsBoolean()
|
||||
@IsOptional()
|
||||
activo: boolean;
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { InstitucionCarreaOutputDto } from '../../../institucion-carrera/dto/output/institucion-carrera.dto';
|
||||
|
||||
export class InstitucionUsuarioMinOutputDto {
|
||||
@Expose()
|
||||
id_institucion_usuario;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionCarreaOutputDto)
|
||||
institucionCarrera;
|
||||
}
|
@ -1,12 +1,14 @@
|
||||
import { Body, Controller, Put, Request, UseGuards } from '@nestjs/common';
|
||||
import { Body, Controller, Get, Put, Request, UseGuards } from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { InstitucionUsuarioService } from './institucion-usuario.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from 'src/usuario/entity/usuario.entity';
|
||||
import { UpdateInstitucionUsuarioInputDto } from './dto/input/update.dto';
|
||||
import { MessageOutputDto } from '../dto/output/message.dto';
|
||||
import { InstitucionUsuarioMinOutputDto } from './dto/output/institucion-usuario-min.dto';
|
||||
|
||||
@Controller('institucion-usuario')
|
||||
@ApiTags('institucion-usuario')
|
||||
@ -16,6 +18,21 @@ export class InstitucionUsuarioController {
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(InstitucionUsuarioMinOutputDto)
|
||||
@Get()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({
|
||||
description:
|
||||
'Enpoint que obtiene todas las asociaciones entre un alumno y una institución y su carra que esten activas.',
|
||||
})
|
||||
@ApiBearerAuth('jwt')
|
||||
get(@Request() req) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.institucionUsuarioService.findFullInfoAllByUsuario(usuario);
|
||||
}
|
||||
|
||||
@Serealize(MessageOutputDto)
|
||||
@Put('desactivar-cuentas')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
|
@ -21,6 +21,7 @@ export class InstitucionUsuarioService {
|
||||
) {}
|
||||
|
||||
create(institucionCarrera: InstitucionCarrera, usuario: Usuario) {
|
||||
// Creo y guardo el registro
|
||||
return this.repository
|
||||
.save(this.repository.create({ institucionCarrera, usuario }))
|
||||
.then((institucionUsuario) => ({
|
||||
@ -30,11 +31,14 @@ export class InstitucionUsuarioService {
|
||||
}
|
||||
|
||||
desactivarCuentas(admin: Operador) {
|
||||
// Busco todas los registros que le pertenecen a la institutción del operador
|
||||
// que esta realizando esta acción
|
||||
return this.informacionInstitucionUsuarioView
|
||||
.find({
|
||||
where: { id_institucion: admin.institucion.id_institucion },
|
||||
where: { id_institucion: admin.institucion.id_institucion, activo: 1 },
|
||||
})
|
||||
.then(async (infoInstitucionesUsuario) => {
|
||||
// Desactivo todos los registros que cumplen con las condiciones
|
||||
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
||||
await this.repository.save(
|
||||
this.repository.create({
|
||||
@ -43,8 +47,8 @@ export class InstitucionUsuarioService {
|
||||
activo: false,
|
||||
}),
|
||||
);
|
||||
})
|
||||
.then((_) => ({ message: 'Se desactivaron todas las cuentas.' }));
|
||||
return { message: 'Se desactivaron todas las cuentas.' };
|
||||
});
|
||||
}
|
||||
|
||||
findAllByIdUsuarioIdInstitucion(id_usuario: number, id_institucion: number) {
|
||||
@ -72,24 +76,21 @@ export class InstitucionUsuarioService {
|
||||
|
||||
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,
|
||||
},
|
||||
},
|
||||
}),
|
||||
this.fullViewToInstitucionUsuario(infoInstitucionesUsuario[i]),
|
||||
);
|
||||
return institucionesUsuario;
|
||||
});
|
||||
}
|
||||
|
||||
findFullInfoAllByUsuario(usuario: Usuario) {
|
||||
return this.fullInformacionInstitucionUsuarioView
|
||||
.find({ where: { id_usuario: usuario.id_usuario, activo: 1, multa: 0 } })
|
||||
.then((infoInstitucionesUsuario) => {
|
||||
const institucionesUsuario: InstitucionUsuario[] = [];
|
||||
|
||||
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
||||
institucionesUsuario.push(
|
||||
this.fullViewToInstitucionUsuario(infoInstitucionesUsuario[i]),
|
||||
);
|
||||
return institucionesUsuario;
|
||||
});
|
||||
@ -166,17 +167,21 @@ export class InstitucionUsuarioService {
|
||||
update(attrs: Partial<InstitucionUsuario>) {
|
||||
return this.findById(attrs.id_institucion_usuario)
|
||||
.then((institucionUsuario) => {
|
||||
// Asigno valores enviados al objeto
|
||||
Object.assign(institucionUsuario, attrs);
|
||||
// Guardar
|
||||
return this.repository.save(institucionUsuario);
|
||||
})
|
||||
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
|
||||
}
|
||||
|
||||
updateMulta(id_institucion: number, id_usuario: number, status: boolean) {
|
||||
// Busca todas las carreras del usuario en la institución enviada
|
||||
return this.findAllByIdUsuarioIdInstitucion(
|
||||
id_usuario,
|
||||
id_institucion,
|
||||
).then(async (institucionesUsuario) => {
|
||||
// desactiva o activa dependinedo el caso
|
||||
for (let i = 0; i < institucionesUsuario.length; i++) {
|
||||
institucionesUsuario[i].multa = status;
|
||||
await this.repository.save(institucionesUsuario[i]);
|
||||
@ -198,4 +203,25 @@ export class InstitucionUsuarioService {
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
fullViewToInstitucionUsuario(
|
||||
infoInstitucionUsuario: FullInformacionInstitucionUsuarioView,
|
||||
) {
|
||||
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,
|
||||
carrera: infoInstitucionUsuario.carrera,
|
||||
},
|
||||
institucion: {
|
||||
id_institucion: infoInstitucionUsuario.id_institucion,
|
||||
institucion: infoInstitucionUsuario.institucion,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user