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 {
|
export class UpdateInstitucionUsuarioInputDto {
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id_institucion_usuario: number;
|
id_institucion_usuario: number;
|
||||||
|
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
@IsOptional()
|
|
||||||
activo: boolean;
|
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 { AuthGuard } from '@nestjs/passport';
|
||||||
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||||
import { InstitucionUsuarioService } from './institucion-usuario.service';
|
import { InstitucionUsuarioService } from './institucion-usuario.service';
|
||||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||||
import { Operador } from '../operador/entity/operador.entity';
|
import { Operador } from '../operador/entity/operador.entity';
|
||||||
|
import { Usuario } from 'src/usuario/entity/usuario.entity';
|
||||||
import { UpdateInstitucionUsuarioInputDto } from './dto/input/update.dto';
|
import { UpdateInstitucionUsuarioInputDto } from './dto/input/update.dto';
|
||||||
import { MessageOutputDto } from '../dto/output/message.dto';
|
import { MessageOutputDto } from '../dto/output/message.dto';
|
||||||
|
import { InstitucionUsuarioMinOutputDto } from './dto/output/institucion-usuario-min.dto';
|
||||||
|
|
||||||
@Controller('institucion-usuario')
|
@Controller('institucion-usuario')
|
||||||
@ApiTags('institucion-usuario')
|
@ApiTags('institucion-usuario')
|
||||||
@ -16,6 +18,21 @@ export class InstitucionUsuarioController {
|
|||||||
private validarUsuarioService: ValidarUsuarioService,
|
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)
|
@Serealize(MessageOutputDto)
|
||||||
@Put('desactivar-cuentas')
|
@Put('desactivar-cuentas')
|
||||||
@UseGuards(AuthGuard('jwt'))
|
@UseGuards(AuthGuard('jwt'))
|
||||||
|
@ -21,6 +21,7 @@ export class InstitucionUsuarioService {
|
|||||||
) {}
|
) {}
|
||||||
|
|
||||||
create(institucionCarrera: InstitucionCarrera, usuario: Usuario) {
|
create(institucionCarrera: InstitucionCarrera, usuario: Usuario) {
|
||||||
|
// Creo y guardo el registro
|
||||||
return this.repository
|
return this.repository
|
||||||
.save(this.repository.create({ institucionCarrera, usuario }))
|
.save(this.repository.create({ institucionCarrera, usuario }))
|
||||||
.then((institucionUsuario) => ({
|
.then((institucionUsuario) => ({
|
||||||
@ -30,11 +31,14 @@ export class InstitucionUsuarioService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
desactivarCuentas(admin: Operador) {
|
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
|
return this.informacionInstitucionUsuarioView
|
||||||
.find({
|
.find({
|
||||||
where: { id_institucion: admin.institucion.id_institucion },
|
where: { id_institucion: admin.institucion.id_institucion, activo: 1 },
|
||||||
})
|
})
|
||||||
.then(async (infoInstitucionesUsuario) => {
|
.then(async (infoInstitucionesUsuario) => {
|
||||||
|
// Desactivo todos los registros que cumplen con las condiciones
|
||||||
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
||||||
await this.repository.save(
|
await this.repository.save(
|
||||||
this.repository.create({
|
this.repository.create({
|
||||||
@ -43,8 +47,8 @@ export class InstitucionUsuarioService {
|
|||||||
activo: false,
|
activo: false,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
})
|
return { message: 'Se desactivaron todas las cuentas.' };
|
||||||
.then((_) => ({ message: 'Se desactivaron todas las cuentas.' }));
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
findAllByIdUsuarioIdInstitucion(id_usuario: number, id_institucion: number) {
|
findAllByIdUsuarioIdInstitucion(id_usuario: number, id_institucion: number) {
|
||||||
@ -72,24 +76,21 @@ export class InstitucionUsuarioService {
|
|||||||
|
|
||||||
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
||||||
institucionesUsuario.push(
|
institucionesUsuario.push(
|
||||||
this.repository.create({
|
this.fullViewToInstitucionUsuario(infoInstitucionesUsuario[i]),
|
||||||
id_institucion_usuario:
|
);
|
||||||
infoInstitucionesUsuario[i].id_institucion_usuario,
|
return institucionesUsuario;
|
||||||
activo: infoInstitucionesUsuario[i].activo === 1,
|
});
|
||||||
multa: infoInstitucionesUsuario[i].multa === 1,
|
}
|
||||||
institucionCarrera: {
|
|
||||||
id_institucion_carrera:
|
findFullInfoAllByUsuario(usuario: Usuario) {
|
||||||
infoInstitucionesUsuario[i].id_institucion_carrera,
|
return this.fullInformacionInstitucionUsuarioView
|
||||||
carrera: {
|
.find({ where: { id_usuario: usuario.id_usuario, activo: 1, multa: 0 } })
|
||||||
id_carrera: infoInstitucionesUsuario[i].id_carrera,
|
.then((infoInstitucionesUsuario) => {
|
||||||
carrera: infoInstitucionesUsuario[i].carrera,
|
const institucionesUsuario: InstitucionUsuario[] = [];
|
||||||
},
|
|
||||||
institucion: {
|
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
|
||||||
id_institucion: infoInstitucionesUsuario[i].id_institucion,
|
institucionesUsuario.push(
|
||||||
institucion: infoInstitucionesUsuario[i].institucion,
|
this.fullViewToInstitucionUsuario(infoInstitucionesUsuario[i]),
|
||||||
},
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
return institucionesUsuario;
|
return institucionesUsuario;
|
||||||
});
|
});
|
||||||
@ -166,17 +167,21 @@ export class InstitucionUsuarioService {
|
|||||||
update(attrs: Partial<InstitucionUsuario>) {
|
update(attrs: Partial<InstitucionUsuario>) {
|
||||||
return this.findById(attrs.id_institucion_usuario)
|
return this.findById(attrs.id_institucion_usuario)
|
||||||
.then((institucionUsuario) => {
|
.then((institucionUsuario) => {
|
||||||
|
// Asigno valores enviados al objeto
|
||||||
Object.assign(institucionUsuario, attrs);
|
Object.assign(institucionUsuario, attrs);
|
||||||
|
// Guardar
|
||||||
return this.repository.save(institucionUsuario);
|
return this.repository.save(institucionUsuario);
|
||||||
})
|
})
|
||||||
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
|
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMulta(id_institucion: number, id_usuario: number, status: boolean) {
|
updateMulta(id_institucion: number, id_usuario: number, status: boolean) {
|
||||||
|
// Busca todas las carreras del usuario en la institución enviada
|
||||||
return this.findAllByIdUsuarioIdInstitucion(
|
return this.findAllByIdUsuarioIdInstitucion(
|
||||||
id_usuario,
|
id_usuario,
|
||||||
id_institucion,
|
id_institucion,
|
||||||
).then(async (institucionesUsuario) => {
|
).then(async (institucionesUsuario) => {
|
||||||
|
// desactiva o activa dependinedo el caso
|
||||||
for (let i = 0; i < institucionesUsuario.length; i++) {
|
for (let i = 0; i < institucionesUsuario.length; i++) {
|
||||||
institucionesUsuario[i].multa = status;
|
institucionesUsuario[i].multa = status;
|
||||||
await this.repository.save(institucionesUsuario[i]);
|
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