merge
This commit is contained in:
+13
-2
@@ -44,7 +44,6 @@ import { Carrito } from './carrito/entity/carrito.entity';
|
||||
import { CarritoMotivo } from './carrito-motivo/entity/carrito-motivo.entity';
|
||||
import { Dia } from './institucion-dia/entity/dia.entity';
|
||||
import { Equipo } from './equipo/entity/equipo.entity';
|
||||
// import { EquipoPrestamoView } from './equipo/entity/views/equipo-prestamo.view';
|
||||
import { EquipoMotivo } from './equipo-motivo/entity/equipo-motivo.entity';
|
||||
import { EquipoPrograma } from './equipo-programa/entity/equipo-programa.entity';
|
||||
import { EquipoTipoEntrada } from './equipo-tipo-entrada/entity/equipo-tipo-entrada.entity';
|
||||
@@ -73,6 +72,13 @@ import { TipoEntrada } from './institucion-tipo-entrada/entity/tipo-entrada.enti
|
||||
import { TipoUsuario } from './tipo-usuario/entity/tipo-usuario.entity';
|
||||
import { Usuario } from './usuario/entity/usuario.entity';
|
||||
|
||||
import { InformacionEquipoView } from './equipo/entity/views/informacion-equipo.view';
|
||||
import { InformacionEquipoProgramaView } from './equipo-programa/entity/views/informacion-equipo-programa.view';
|
||||
import { InformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/views/informacion-equipo-tipo-entrada.view';
|
||||
import { InformacionOperadorView } from './operador/entity/views/informacion-operador.view';
|
||||
import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuario.view';
|
||||
import { ValidarUsuarioModule } from './validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
ConfigModule.forRoot({ isGlobal: true }),
|
||||
@@ -105,7 +111,6 @@ import { Usuario } from './usuario/entity/usuario.entity';
|
||||
CarritoMotivo,
|
||||
Dia,
|
||||
Equipo,
|
||||
// EquipoPrestamoView,
|
||||
EquipoMotivo,
|
||||
EquipoPrograma,
|
||||
EquipoTipoEntrada,
|
||||
@@ -133,6 +138,11 @@ import { Usuario } from './usuario/entity/usuario.entity';
|
||||
TipoEntrada,
|
||||
TipoUsuario,
|
||||
Usuario,
|
||||
InformacionEquipoView,
|
||||
InformacionEquipoProgramaView,
|
||||
InformacionEquipoTipoEntradaView,
|
||||
InformacionOperadorView,
|
||||
InformacionUsuarioView,
|
||||
],
|
||||
};
|
||||
},
|
||||
@@ -168,6 +178,7 @@ import { Usuario } from './usuario/entity/usuario.entity';
|
||||
TipoUsuarioModule,
|
||||
UploadFileModule,
|
||||
UsuarioModule,
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
+37
-103
@@ -1,16 +1,13 @@
|
||||
import {
|
||||
ConflictException,
|
||||
BadRequestException,
|
||||
Injectable,
|
||||
UnauthorizedException,
|
||||
} from '@nestjs/common';
|
||||
import { JwtService } from '@nestjs/jwt';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { BcryptService } from '../bcrypt/bcrypt.service';
|
||||
import { ModuloService } from '../modulo/modulo.service';
|
||||
import { OperadorService } from '../operador/operador.service';
|
||||
import { UsuarioService } from '../usuario/usuario.service';
|
||||
import { JwtPayload } from './dto/jwt-payload';
|
||||
|
||||
@Injectable()
|
||||
export class AuthService {
|
||||
@@ -23,24 +20,19 @@ export class AuthService {
|
||||
) {}
|
||||
|
||||
loginAdmin(admin: string, password: string) {
|
||||
return this.operadorService.findAdmin(admin, false).then((operador) => {
|
||||
this.validarLogin(operador, password);
|
||||
if (!operador.activo)
|
||||
throw new ConflictException('Esta cuenta se encuentra desactivada.');
|
||||
|
||||
const payload: JwtPayload = {
|
||||
id_operador: operador.id_operador,
|
||||
nombre: operador.nombre,
|
||||
operador: operador.operador,
|
||||
institucion: operador.institucion
|
||||
? { id_institucion: operador.institucion.id_institucion }
|
||||
: null,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
||||
},
|
||||
};
|
||||
|
||||
return { operador, token: this.jwtService.sign(payload) };
|
||||
return this.operadorService.informacionAdmin(admin).then((data) => {
|
||||
if (
|
||||
!data.operador ||
|
||||
!this.bcryptService.comparar(password, data.password)
|
||||
)
|
||||
throw new BadRequestException(
|
||||
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
|
||||
);
|
||||
if (!data.activo)
|
||||
throw new UnauthorizedException(
|
||||
'Esta cuenta se encuentra desactivada.',
|
||||
);
|
||||
return { token: this.jwtService.sign(data.operador) };
|
||||
});
|
||||
}
|
||||
|
||||
@@ -48,95 +40,37 @@ export class AuthService {
|
||||
const modulo = await this.moduloService.findById(id_modulo);
|
||||
|
||||
return this.operadorService
|
||||
.findByOperador(modulo.institucion, operador, false)
|
||||
.then((operador) => {
|
||||
this.validarLogin(operador, password);
|
||||
.informacionOperador(modulo.institucion, operador)
|
||||
.then((data) => {
|
||||
if (
|
||||
operador.institucion.id_institucion !=
|
||||
modulo.institucion.id_institucion
|
||||
!data.operador ||
|
||||
!this.bcryptService.comparar(password, data.password)
|
||||
)
|
||||
throw new ConflictException(
|
||||
'Este módulo no pertenece a tu institución, selecciona una que si.',
|
||||
throw new BadRequestException(
|
||||
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
|
||||
);
|
||||
|
||||
const payload: JwtPayload = {
|
||||
id_operador: operador.id_operador,
|
||||
id_modulo: modulo.id_modulo,
|
||||
nombre: operador.nombre,
|
||||
operador: operador.operador,
|
||||
institucion: operador.institucion
|
||||
? { id_institucion: operador.institucion.id_institucion }
|
||||
: null,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
||||
},
|
||||
};
|
||||
|
||||
return { token: this.jwtService.sign(payload) };
|
||||
if (!data.activo)
|
||||
throw new UnauthorizedException(
|
||||
'Esta cuenta se encuentra desactivada.',
|
||||
);
|
||||
return { token: this.jwtService.sign(data.operador) };
|
||||
});
|
||||
}
|
||||
|
||||
loginUsuario(usuario: string, password: string) {
|
||||
return this.usuarioService
|
||||
.findByUsuario(usuario, false, false, true)
|
||||
.then((usuario) => {
|
||||
this.validarLogin(usuario, password);
|
||||
|
||||
const instituciones: {
|
||||
id_institucion_usuario: number;
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: number;
|
||||
institucion: { id_institucion: number };
|
||||
carrera: { id_carrera: number };
|
||||
};
|
||||
}[] = [];
|
||||
|
||||
for (let i = 0; i < usuario.instituciones.length; i++)
|
||||
if (
|
||||
usuario.instituciones[i].activo &&
|
||||
!usuario.instituciones[i].multa
|
||||
)
|
||||
instituciones.push({
|
||||
id_institucion_usuario:
|
||||
usuario.instituciones[i].id_institucion_usuario,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera:
|
||||
usuario.instituciones[i].institucionCarrera
|
||||
.id_institucion_carrera,
|
||||
carrera: {
|
||||
id_carrera:
|
||||
usuario.instituciones[i].institucionCarrera.carrera
|
||||
.id_carrera,
|
||||
},
|
||||
institucion: {
|
||||
id_institucion:
|
||||
usuario.instituciones[i].institucionCarrera.institucion
|
||||
.id_institucion,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const payload: JwtPayload = {
|
||||
id_usuario: usuario.id_usuario,
|
||||
nombre: usuario.nombre,
|
||||
usuario: usuario.usuario,
|
||||
instituciones: instituciones,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario,
|
||||
},
|
||||
};
|
||||
|
||||
return { token: this.jwtService.sign(payload), usuario };
|
||||
.informacionUsuarioByUsuario(usuario)
|
||||
.then((data) => {
|
||||
if (!data.password)
|
||||
throw new BadRequestException('Este usuario no ha sido registrado.');
|
||||
if (
|
||||
!data.usuario ||
|
||||
!this.bcryptService.comparar(password, data.password)
|
||||
)
|
||||
throw new BadRequestException(
|
||||
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
|
||||
);
|
||||
return { token: this.jwtService.sign(data.usuario) };
|
||||
});
|
||||
}
|
||||
|
||||
validarLogin(usuarioOperador: Usuario | Operador, password: string) {
|
||||
if (
|
||||
!usuarioOperador ||
|
||||
!this.bcryptService.comparar(password, usuarioOperador.password)
|
||||
)
|
||||
throw new UnauthorizedException(
|
||||
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
export class JwtPayload {
|
||||
nombre: string;
|
||||
|
||||
id_operador: number;
|
||||
|
||||
institucion: { id_institucion: number };
|
||||
|
||||
operador: string;
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
export class JwtPayload {
|
||||
nombre: string;
|
||||
|
||||
id_modulo: number;
|
||||
|
||||
id_operador: number;
|
||||
|
||||
institucion: { id_institucion: number };
|
||||
|
||||
operador: string;
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
export class JwtPayload {
|
||||
nombre: string;
|
||||
|
||||
id_usuario: number;
|
||||
|
||||
instituciones: {
|
||||
id_institucion_usuario: number;
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: number;
|
||||
institucion: { id_institucion: number };
|
||||
carrera: { id_carrera: number };
|
||||
};
|
||||
}[];
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
|
||||
usuario: string;
|
||||
}
|
||||
@@ -38,6 +38,7 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
.then(async (operador) => {
|
||||
if (!operador.activo)
|
||||
throw new ForbiddenException('Esta cuenta esta desactivada.');
|
||||
/*
|
||||
if (operador.tipoUsuario.id_tipo_usuario === 4) {
|
||||
if (payload.id_modulo)
|
||||
await this.moduloService
|
||||
@@ -48,6 +49,7 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
'Credenciales no válidas, inicia sesión de nuevo.',
|
||||
);
|
||||
}
|
||||
*/
|
||||
user.operador = operador;
|
||||
});
|
||||
return user;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import {
|
||||
Body,
|
||||
ForbiddenException,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
@@ -19,17 +18,21 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { CarreraProgramaService } from './carrera-programa.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
import { CreateCarreraProgramaDto } from './dto/input/create.dto';
|
||||
import { DeleteCarreraProgramaDto } from './dto/input/delete.dto';
|
||||
import { CarreraProgramaOutputDto } from './dto/output/carrera-programa.dto';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
|
||||
@Controller('carrera-programa')
|
||||
@ApiTags('carrera-programa')
|
||||
export class CarreraProgramaController {
|
||||
constructor(private carreraProgramaService: CarreraProgramaService) {}
|
||||
constructor(
|
||||
private carreraProgramaService: CarreraProgramaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -47,10 +50,7 @@ export class CarreraProgramaController {
|
||||
create(@Request() req, @Body() body: CreateCarreraProgramaDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.carreraProgramaService.create(
|
||||
admin,
|
||||
body.id_institucion_carrera,
|
||||
@@ -72,10 +72,7 @@ export class CarreraProgramaController {
|
||||
delete(@Request() req, @Body() body: DeleteCarreraProgramaDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.carreraProgramaService.delete(admin, body.id_carrera_programa);
|
||||
}
|
||||
|
||||
@@ -96,14 +93,9 @@ export class CarreraProgramaController {
|
||||
const usuarioOperador: Operador | Usuario =
|
||||
req.user.operador || req.user.usuario;
|
||||
|
||||
if (
|
||||
!usuarioOperador ||
|
||||
(usuarioOperador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
usuarioOperador.tipoUsuario.id_tipo_usuario < 5)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
if ('id_usuario' in usuarioOperador)
|
||||
this.validarUsuarioService.validarUsuario(usuarioOperador);
|
||||
else this.validarUsuarioService.validarAdmin(usuarioOperador);
|
||||
return this.carreraProgramaService.findByIdInstitucion(
|
||||
usuarioOperador,
|
||||
parseInt(query.id_institucion),
|
||||
|
||||
@@ -7,6 +7,7 @@ import { CarreraPrograma } from './entity/carrera-programa.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { InstitucionCarreraModule } from '../institucion-carrera/institucion-carrera.module';
|
||||
import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -15,6 +16,7 @@ import { InstitucionProgramaModule } from '../institucion-programa/institucion-p
|
||||
InstitucionProgramaModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([CarreraPrograma]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [CarreraProgramaController],
|
||||
providers: [CarreraProgramaService],
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
import {
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Query,
|
||||
Request,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { Controller, Get, Query, Request, UseGuards } from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import {
|
||||
ApiBearerAuth,
|
||||
@@ -14,7 +7,8 @@ import {
|
||||
ApiTags,
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { CaritoMotivoService } from './carrito-motivo.service';
|
||||
import { CarritoMotivoService } from './carrito-motivo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { GetDto } from './dto/input/get.dto';
|
||||
import { CarritoMotivoOutputDto } from './dto/output/carrito-motivo.dto';
|
||||
@@ -22,7 +16,10 @@ import { CarritoMotivoOutputDto } from './dto/output/carrito-motivo.dto';
|
||||
@Controller('carrito-motivo')
|
||||
@ApiTags('carrito-motivo')
|
||||
export class CarritoMotivoController {
|
||||
constructor(private carritoMotivoService: CaritoMotivoService) {}
|
||||
constructor(
|
||||
private carritoMotivoService: CarritoMotivoService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(CarritoMotivoOutputDto)
|
||||
@Get()
|
||||
@@ -45,14 +42,7 @@ export class CarritoMotivoController {
|
||||
get(@Request() req, @Query() query: GetDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.carritoMotivoService.findAllByIdCarrito(
|
||||
parseInt(query.id_carrito),
|
||||
parseInt(query.pagina),
|
||||
|
||||
@@ -2,11 +2,12 @@ import { forwardRef, Module } from '@nestjs/common';
|
||||
import { PassportModule } from '@nestjs/passport';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { CarritoMotivoController } from './carrito-motivo.controller';
|
||||
import { CaritoMotivoService } from './carrito-motivo.service';
|
||||
import { CarritoMotivoService } from './carrito-motivo.service';
|
||||
import { CarritoMotivo } from './entity/carrito-motivo.entity';
|
||||
import { CarritoModule } from '../carrito/carrito.module';
|
||||
import { OperadorModule } from '../operador/operador.module';
|
||||
import { StatusModule } from '../status/status.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -15,9 +16,10 @@ import { StatusModule } from '../status/status.module';
|
||||
StatusModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([CarritoMotivo]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [CarritoMotivoController],
|
||||
providers: [CaritoMotivoService],
|
||||
exports: [CaritoMotivoService],
|
||||
providers: [CarritoMotivoService],
|
||||
exports: [CarritoMotivoService],
|
||||
})
|
||||
export class CarritoMotivoModule {}
|
||||
|
||||
@@ -9,7 +9,7 @@ import { CarritoService } from '../carrito/carrito.service';
|
||||
import { OperadorService } from '../operador/operador.service';
|
||||
|
||||
@Injectable()
|
||||
export class CaritoMotivoService {
|
||||
export class CarritoMotivoService {
|
||||
constructor(
|
||||
@InjectRepository(CarritoMotivo)
|
||||
private repository: Repository<CarritoMotivo>,
|
||||
|
||||
@@ -20,6 +20,7 @@ import {
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { CarritoService } from './carrito.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { CarritoDto } from './dto/input/carrito.dto';
|
||||
import { CarritosDto } from './dto/input/carritos.dto';
|
||||
import { CreateCarritoDto } from './dto/input/create.dto';
|
||||
@@ -30,7 +31,10 @@ import { CarritosOutputDto } from './dto/output/carritos.dto';
|
||||
@Controller('carrito')
|
||||
@ApiTags('carrito')
|
||||
export class CarritoController {
|
||||
constructor(private carritoService: CarritoService) {}
|
||||
constructor(
|
||||
private carritoService: CarritoService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(CarritoOutputDto)
|
||||
@Get('carrito')
|
||||
@@ -47,14 +51,7 @@ export class CarritoController {
|
||||
carrito(@Request() req, @Query() query: CarritoDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.carritoService
|
||||
.findById(parseInt(query.id_carrito))
|
||||
.then((carrito) => {
|
||||
@@ -128,14 +125,7 @@ export class CarritoController {
|
||||
carritos(@Request() req, @Query() query: CarritosDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.carritoService.findAll(operador, query);
|
||||
}
|
||||
|
||||
@@ -156,10 +146,7 @@ export class CarritoController {
|
||||
create(@Request() req, @Body() body: CreateCarritoDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.carritoService.create(
|
||||
admin,
|
||||
body.id_modulo,
|
||||
@@ -191,14 +178,7 @@ export class CarritoController {
|
||||
const data = { ...body };
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
delete data.motivo;
|
||||
return this.carritoService.update(operador, data, body.motivo);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/instit
|
||||
import { MarcaModule } from '../marca/marca.module';
|
||||
import { ModeloModule } from '../modelo/modelo.module';
|
||||
import { ModuloModule } from '../modulo/modulo.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -21,6 +22,7 @@ import { ModuloModule } from '../modulo/modulo.module';
|
||||
ModuloModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Carrito]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [CarritoController],
|
||||
providers: [CarritoService],
|
||||
|
||||
@@ -12,7 +12,7 @@ import { Carrito } from './entity/carrito.entity';
|
||||
import { Modulo } from '../modulo/entity/modulo.entity';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity';
|
||||
import { CaritoMotivoService } from '../carrito-motivo/carrito-motivo.service';
|
||||
import { CarritoMotivoService } from '../carrito-motivo/carrito-motivo.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service';
|
||||
import { MarcaService } from '../marca/marca.service';
|
||||
@@ -23,8 +23,8 @@ import { ModuloService } from '../modulo/modulo.service';
|
||||
export class CarritoService {
|
||||
constructor(
|
||||
@InjectRepository(Carrito) private repository: Repository<Carrito>,
|
||||
@Inject(forwardRef(() => CaritoMotivoService))
|
||||
private caritoMotivoService: CaritoMotivoService,
|
||||
@Inject(forwardRef(() => CarritoMotivoService))
|
||||
private caritoMotivoService: CarritoMotivoService,
|
||||
private institucionService: InstitucionService,
|
||||
private institucionTipoCarritoService: InstitucionTipoCarritoService,
|
||||
private marcaService: MarcaService,
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
import {
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Query,
|
||||
Request,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { Controller, Get, Query, Request, UseGuards } from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import {
|
||||
ApiBearerAuth,
|
||||
@@ -15,6 +8,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { EquipoMotivoService } from './equipo-motivo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto';
|
||||
import { EquipoMotivoOutputDto } from './dto/output/equipo-motivo.dto';
|
||||
@@ -22,7 +16,10 @@ import { EquipoMotivoOutputDto } from './dto/output/equipo-motivo.dto';
|
||||
@Controller('equipo-motivo')
|
||||
@ApiTags('equipo-motivo')
|
||||
export class EquipoMotivoController {
|
||||
constructor(private equipoMotivoService: EquipoMotivoService) {}
|
||||
constructor(
|
||||
private equipoMotivoService: EquipoMotivoService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(EquipoMotivoOutputDto)
|
||||
@Get()
|
||||
@@ -45,14 +42,7 @@ export class EquipoMotivoController {
|
||||
get(@Request() req, @Query() query: IdEquipoPaginaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoMotivoService.findAllByIdEquipo(
|
||||
parseInt(query.id_equipo),
|
||||
parseInt(query.pagina),
|
||||
|
||||
@@ -7,6 +7,7 @@ import { EquipoMotivo } from './entity/equipo-motivo.entity';
|
||||
import { EquipoModule } from '../equipo/equipo.module';
|
||||
import { OperadorModule } from '../operador/operador.module';
|
||||
import { StatusModule } from '../status/status.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -15,6 +16,7 @@ import { StatusModule } from '../status/status.module';
|
||||
StatusModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([EquipoMotivo]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [EquipoMotivoController],
|
||||
providers: [EquipoMotivoService],
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { EquipoPrograma } from '../equipo-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')
|
||||
.from(EquipoPrograma, 'ep'),
|
||||
})
|
||||
export class InformacionEquipoProgramaView {
|
||||
@ViewColumn()
|
||||
id_equipo_programa: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_equipo: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_programa: number;
|
||||
}
|
||||
@@ -2,7 +2,6 @@ import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
ForbiddenException,
|
||||
Post,
|
||||
Request,
|
||||
UseGuards,
|
||||
@@ -11,13 +10,17 @@ import { AuthGuard } from '@nestjs/passport';
|
||||
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { EquipoProgramaService } from './equipo-programa.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { CreateEquipoProgramaDto } from './dto/input/create.dto';
|
||||
import { DeleteEquipoProgramaDto } from './dto/input/delete.dto';
|
||||
|
||||
@Controller('equipo-programa')
|
||||
@ApiTags('equipo-programa')
|
||||
export class EquipoProgramaController {
|
||||
constructor(private equipoProgramaService: EquipoProgramaService) {}
|
||||
constructor(
|
||||
private equipoProgramaService: EquipoProgramaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -33,14 +36,7 @@ export class EquipoProgramaController {
|
||||
create(@Request() req, @Body() body: CreateEquipoProgramaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoProgramaService.create(body.id_equipo, body.id_programa);
|
||||
}
|
||||
|
||||
@@ -58,14 +54,7 @@ export class EquipoProgramaController {
|
||||
delete(@Request() req, @Body() body: DeleteEquipoProgramaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoProgramaService.delete(operador, body.id_equipo_programa);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,15 +4,18 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { EquipoProgramaController } from './equipo-programa.controller';
|
||||
import { EquipoProgramaService } from './equipo-programa.service';
|
||||
import { EquipoPrograma } from '../equipo-programa/entity/equipo-programa.entity';
|
||||
import { InformacionEquipoProgramaView } from './entity/views/informacion-equipo-programa.view';
|
||||
import { EquipoModule } from '../equipo/equipo.module';
|
||||
import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
forwardRef(() => EquipoModule),
|
||||
InstitucionProgramaModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([EquipoPrograma]),
|
||||
TypeOrmModule.forFeature([EquipoPrograma, InformacionEquipoProgramaView]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [EquipoProgramaController],
|
||||
providers: [EquipoProgramaService],
|
||||
|
||||
@@ -10,6 +10,7 @@ import { Repository } from 'typeorm';
|
||||
import { Equipo } from '../equipo/entity/equipo.entity';
|
||||
import { EquipoPrograma } from './entity/equipo-programa.entity';
|
||||
import { Programa } from '../institucion-programa/entity/programa.entity';
|
||||
import { InformacionEquipoProgramaView } from './entity/views/informacion-equipo-programa.view';
|
||||
import { EquipoService } from '../equipo/equipo.service';
|
||||
import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
@@ -19,6 +20,8 @@ export class EquipoProgramaService {
|
||||
constructor(
|
||||
@InjectRepository(EquipoPrograma)
|
||||
private repository: Repository<EquipoPrograma>,
|
||||
@InjectRepository(InformacionEquipoProgramaView)
|
||||
private informacionEquipoProgramaView: Repository<InformacionEquipoProgramaView>,
|
||||
@Inject(forwardRef(() => EquipoService))
|
||||
private equipoService: EquipoService,
|
||||
private institucionProgramaService: InstitucionProgramaService,
|
||||
@@ -29,9 +32,6 @@ export class EquipoProgramaService {
|
||||
id_equipo: number | Equipo,
|
||||
id_programa: number | Programa,
|
||||
) {
|
||||
const sinPrograma = await this.institucionProgramaService.findProgramaById(
|
||||
1,
|
||||
);
|
||||
const equipo =
|
||||
typeof id_equipo === 'number'
|
||||
? await this.equipoService.findById(id_equipo)
|
||||
@@ -41,13 +41,39 @@ export class EquipoProgramaService {
|
||||
? await this.institucionProgramaService.findProgramaById(id_programa)
|
||||
: id_programa;
|
||||
|
||||
return this.findEquipoProgramaByEquipoPrograma(equipo, programa)
|
||||
.then((_) =>
|
||||
this.findEquipoProgramaByEquipoPrograma(equipo, sinPrograma, false),
|
||||
)
|
||||
return this.informacionEquipoPrograma(
|
||||
equipo.id_equipo,
|
||||
programa.id_programa,
|
||||
)
|
||||
.then((existeEquipoPrograma) => {
|
||||
if (existeEquipoPrograma)
|
||||
throw new ConflictException(
|
||||
'Este software ya fue asignado a este equipo.',
|
||||
);
|
||||
return this.informacionEquipoPrograma(equipo.id_equipo, 1);
|
||||
})
|
||||
.then(async (existeEquipoSinPrograma) => {
|
||||
if (existeEquipoSinPrograma)
|
||||
await this.repository.remove(existeEquipoSinPrograma);
|
||||
await this.repository.delete({
|
||||
id_equipo_programa: existeEquipoSinPrograma.id_equipo_programa,
|
||||
});
|
||||
return this.repository.save(
|
||||
this.repository.create({ equipo, programa }),
|
||||
);
|
||||
})
|
||||
.then((equipoPrograma) => ({
|
||||
message: `Se asignó el software: ${equipoPrograma.programa.programa}, al equipo con número de inventario: ${equipo.numero_inventario}.`,
|
||||
equipoPrograma,
|
||||
}));
|
||||
}
|
||||
|
||||
async createCargaMasiva(equipo: Equipo, programa: Programa) {
|
||||
return this.informacionEquipoPrograma(equipo.id_equipo, 1)
|
||||
.then(async (existeEquipoSinPrograma) => {
|
||||
if (existeEquipoSinPrograma)
|
||||
await this.repository.delete({
|
||||
id_equipo_programa: existeEquipoSinPrograma.id_equipo_programa,
|
||||
});
|
||||
return this.repository.save(
|
||||
this.repository.create({ equipo, programa }),
|
||||
);
|
||||
@@ -120,4 +146,10 @@ export class EquipoProgramaService {
|
||||
return equipoPrograma;
|
||||
});
|
||||
}
|
||||
|
||||
informacionEquipoPrograma(id_equipo: number, id_programa: number) {
|
||||
return this.informacionEquipoProgramaView.findOne({
|
||||
where: { id_equipo, id_programa },
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { EquipoTipoEntrada } from '../equipo-tipo-entrada.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
dataSource
|
||||
.createQueryBuilder()
|
||||
.select('ete.id_equipo_tipo_entrada', 'id_equipo_tipo_entrada')
|
||||
.addSelect('ete.id_equipo', 'id_equipo')
|
||||
.addSelect('ete.id_tipo_entrada', 'id_tipo_entrada')
|
||||
.from(EquipoTipoEntrada, 'ete'),
|
||||
})
|
||||
export class InformacionEquipoTipoEntradaView {
|
||||
@ViewColumn()
|
||||
id_equipo_tipo_entrada: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_equipo: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_tipo_entrada: number;
|
||||
}
|
||||
@@ -2,7 +2,6 @@ import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
ForbiddenException,
|
||||
Post,
|
||||
Request,
|
||||
UseGuards,
|
||||
@@ -10,6 +9,7 @@ import {
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { EquipoTipoEntradaService } from './equipo-tipo-entrada.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { CreateEquipoTipoEntradaDto } from './dto/input/create.dto';
|
||||
import { DeleteEquipoTipoEntradaDto } from './dto/input/delete.dto';
|
||||
@@ -17,7 +17,10 @@ import { DeleteEquipoTipoEntradaDto } from './dto/input/delete.dto';
|
||||
@Controller('equipo-tipo-entrada')
|
||||
@ApiTags('equipo-tipo-entrada')
|
||||
export class EquipoTipoEntradaController {
|
||||
constructor(private equipoTipoEntradaService: EquipoTipoEntradaService) {}
|
||||
constructor(
|
||||
private equipoTipoEntradaService: EquipoTipoEntradaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -33,14 +36,7 @@ export class EquipoTipoEntradaController {
|
||||
create(@Request() req, @Body() body: CreateEquipoTipoEntradaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoTipoEntradaService.create(
|
||||
body.id_equipo,
|
||||
body.id_tipo_entrada,
|
||||
@@ -61,14 +57,7 @@ export class EquipoTipoEntradaController {
|
||||
delete(@Request() req, @Body() body: DeleteEquipoTipoEntradaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoTipoEntradaService.delete(body.id_equipo_tipo_entrada);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,15 +4,21 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { EquipoTipoEntradaController } from './equipo-tipo-entrada.controller';
|
||||
import { EquipoTipoEntradaService } from './equipo-tipo-entrada.service';
|
||||
import { EquipoTipoEntrada } from '../equipo-tipo-entrada/entity/equipo-tipo-entrada.entity';
|
||||
import { InformacionEquipoTipoEntradaView } from './entity/views/informacion-equipo-tipo-entrada.view';
|
||||
import { EquipoModule } from '../equipo/equipo.module';
|
||||
import { InstitucionTipoEntradaModule } from '../institucion-tipo-entrada/institucion-tipo-entrada.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
EquipoModule,
|
||||
InstitucionTipoEntradaModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([EquipoTipoEntrada]),
|
||||
TypeOrmModule.forFeature([
|
||||
EquipoTipoEntrada,
|
||||
InformacionEquipoTipoEntradaView,
|
||||
]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [EquipoTipoEntradaController],
|
||||
providers: [EquipoTipoEntradaService],
|
||||
|
||||
@@ -4,6 +4,7 @@ import { Repository } from 'typeorm';
|
||||
import { Equipo } from '../equipo/entity/equipo.entity';
|
||||
import { EquipoTipoEntrada } from './entity/equipo-tipo-entrada.entity';
|
||||
import { TipoEntrada } from '../institucion-tipo-entrada/entity/tipo-entrada.entity';
|
||||
import { InformacionEquipoTipoEntradaView } from './entity/views/informacion-equipo-tipo-entrada.view';
|
||||
import { EquipoService } from '../equipo/equipo.service';
|
||||
import { InstitucionTipoEntradaService } from '../institucion-tipo-entrada/institucion-tipo-entrada.service';
|
||||
|
||||
@@ -12,6 +13,8 @@ export class EquipoTipoEntradaService {
|
||||
constructor(
|
||||
@InjectRepository(EquipoTipoEntrada)
|
||||
private repository: Repository<EquipoTipoEntrada>,
|
||||
@InjectRepository(InformacionEquipoTipoEntradaView)
|
||||
private informacionEquipoTipoEntradaView: Repository<InformacionEquipoTipoEntradaView>,
|
||||
private equipoService: EquipoService,
|
||||
private institucionTipoEntradaService: InstitucionTipoEntradaService,
|
||||
) {}
|
||||
@@ -31,10 +34,28 @@ export class EquipoTipoEntradaService {
|
||||
)
|
||||
: id_tipo_entrada;
|
||||
|
||||
return this.findEquipoTipoEntradaByEquipoTipoEntrada(equipo, tipoEntrada)
|
||||
.then((_) =>
|
||||
this.repository.save(this.repository.create({ equipo, tipoEntrada })),
|
||||
)
|
||||
return this.informacionEquipoTipoEntrada(
|
||||
equipo.id_equipo,
|
||||
tipoEntrada.id_tipo_entrada,
|
||||
)
|
||||
.then((existeEquipoTipoEntrada) => {
|
||||
if (existeEquipoTipoEntrada)
|
||||
throw new ConflictException(
|
||||
'Este tipo de entrada ya fue asignado a este equipo.',
|
||||
);
|
||||
return this.repository.save(
|
||||
this.repository.create({ equipo, tipoEntrada }),
|
||||
);
|
||||
})
|
||||
.then((equipoTipoEntrada) => ({
|
||||
message: `Se asignó el tipo de entrada: ${tipoEntrada.tipo_entrada}, al equipo con número de inventario: ${equipo.numero_inventario}.`,
|
||||
equipoTipoEntrada,
|
||||
}));
|
||||
}
|
||||
|
||||
async createCargaMasiva(equipo: Equipo, tipoEntrada: TipoEntrada) {
|
||||
return this.repository
|
||||
.save(this.repository.create({ equipo, tipoEntrada }))
|
||||
.then((equipoTipoEntrada) => ({
|
||||
message: `Se asignó el tipo de entrada: ${tipoEntrada.tipo_entrada}, al equipo con número de inventario: ${equipo.numero_inventario}.`,
|
||||
equipoTipoEntrada,
|
||||
@@ -59,19 +80,9 @@ export class EquipoTipoEntradaService {
|
||||
});
|
||||
}
|
||||
|
||||
findEquipoTipoEntradaByEquipoTipoEntrada(
|
||||
equipo: Equipo,
|
||||
tipoEntrada: TipoEntrada,
|
||||
validarExistencia = true,
|
||||
) {
|
||||
return this.repository
|
||||
.findOne({ where: { equipo, tipoEntrada } })
|
||||
.then((equipoTipoEntrada) => {
|
||||
if (validarExistencia && equipoTipoEntrada)
|
||||
throw new ConflictException(
|
||||
'Este tipo de entrada ya fue asignado a este equipo.',
|
||||
);
|
||||
return equipoTipoEntrada;
|
||||
});
|
||||
informacionEquipoTipoEntrada(id_equipo: number, id_tipo_entrada: number) {
|
||||
return this.informacionEquipoTipoEntradaView.findOne({
|
||||
where: { id_equipo, id_tipo_entrada },
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+42
-21
@@ -6,54 +6,75 @@ import { Modulo } from '../../../modulo/entity/modulo.entity';
|
||||
import { EquipoPrograma } from '../../../equipo-programa/entity/equipo-programa.entity';
|
||||
import { EquipoTipoEntrada } from '../../../equipo-tipo-entrada/entity/equipo-tipo-entrada.entity';
|
||||
import { Programa } from '../../../institucion-programa/entity/programa.entity';
|
||||
import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity';
|
||||
import { TipoEntrada } from '../../../institucion-tipo-entrada/entity/tipo-entrada.entity';
|
||||
import { Status } from '../../../status/entity/status.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
dataSource
|
||||
.createQueryBuilder()
|
||||
.from(Equipo, 'e')
|
||||
.select('e.id_equipo', 'id_equipo')
|
||||
.addSelect('e.equipo', 'equipo')
|
||||
.addSelect('e.id_carrito', 'id_carrito')
|
||||
.addSelect('e.id_status', 'id_status')
|
||||
.addSelect('e.numero_inventario', 'numero_inventario')
|
||||
.addSelect('e.prestado', 'prestado')
|
||||
.addSelect('c.activo', 'activo')
|
||||
.addSelect('s.id_status', 'id_status')
|
||||
.addSelect('m.id_modulo', 'id_modulo')
|
||||
.addSelect('i.id_institucion', 'id_institucion')
|
||||
.addSelect('c.activo', 'activo_carrito')
|
||||
.addSelect('c.carrito', 'carrito')
|
||||
.addSelect('c.id_modulo', 'id_modulo')
|
||||
.addSelect('c.id_tipo_carrito', 'id_tipo_carrito')
|
||||
.addSelect('m.activo', 'activo_modulo')
|
||||
.addSelect('m.id_institucion', 'id_institucion')
|
||||
.addSelect('i.activo', 'activo_institucion')
|
||||
// .addSelect('p.id_programa')
|
||||
// .addSelect('p.id_programa')
|
||||
// .addSelect('te.id_tipo_entrada')
|
||||
// .addSelect('tc.id_tipo_carrito')
|
||||
.from(Equipo, 'e')
|
||||
.innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito')
|
||||
.innerJoin(EquipoPrograma, 'ps', 'ps.id_equipo = e.id_equipo')
|
||||
.innerJoin(EquipoTipoEntrada, 'tes', 'tes.id_equipo = e.id_equipo')
|
||||
.innerJoin(Status, 's', 's.id_status = e.id_status')
|
||||
// .innerJoin(TipoEntrada, 'te', 'te.id_tipo_entrada = c.id_tipo_entrada')
|
||||
.innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo')
|
||||
// .innerJoin(Programa, 'p', 'p.id_programa = e.id_programa')
|
||||
.innerJoin(TipoCarrito, 'tc', 'tc.id_tipo_carrito = c.id_tipo_carrito')
|
||||
.innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion')
|
||||
.where(
|
||||
'e.prestado = 1 && s.id_status = 1 && c.activo = 1 && m.activo = 1 && i.activo = 1',
|
||||
),
|
||||
.innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'),
|
||||
// .innerJoin(EquipoPrograma, 'ps', 'ps.id_equipo = e.id_equipo')
|
||||
// .innerJoin(EquipoTipoEntrada, 'tes', 'tes.id_equipo = e.id_equipo')
|
||||
// .innerJoin(TipoEntrada, 'te', 'te.id_tipo_entrada = c.id_tipo_entrada')
|
||||
// .innerJoin(Programa, 'p', 'p.id_programa = e.id_programa')
|
||||
})
|
||||
export class EquipoPrestamoView {
|
||||
export class InformacionEquipoView {
|
||||
@ViewColumn()
|
||||
id_equipo: number;
|
||||
|
||||
@ViewColumn()
|
||||
prestado: boolean;
|
||||
activo_carrito: boolean;
|
||||
|
||||
@ViewColumn()
|
||||
activo: boolean;
|
||||
activo_institucion: boolean;
|
||||
|
||||
@ViewColumn()
|
||||
id_status: number;
|
||||
activo_modulo: boolean;
|
||||
|
||||
@ViewColumn()
|
||||
carrito: string;
|
||||
|
||||
@ViewColumn()
|
||||
equipo: string;
|
||||
|
||||
@ViewColumn()
|
||||
id_modulo: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_carrito: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_tipo_carrito: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_status: number;
|
||||
|
||||
@ViewColumn()
|
||||
numero_inventario: string;
|
||||
|
||||
@ViewColumn()
|
||||
prestado: boolean;
|
||||
}
|
||||
@@ -18,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { EquipoService } from './equipo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { NumeroInventarioDto } from '../dto/numero-inventario.dto';
|
||||
import { EquiposDto } from './dto/input/equipos.dto';
|
||||
@@ -28,7 +29,10 @@ import { EquiposOutputDto } from './dto/output/equipos.dto';
|
||||
@Controller('equipo')
|
||||
@ApiTags('equipo')
|
||||
export class EquipoController {
|
||||
constructor(private equipoService: EquipoService) {}
|
||||
constructor(
|
||||
private equipoService: EquipoService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(EquipoOutputDto)
|
||||
@Get('equipo')
|
||||
@@ -51,14 +55,7 @@ export class EquipoController {
|
||||
equipo(@Request() req, @Query() query: NumeroInventarioDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoService
|
||||
.findByNumeroInventario(
|
||||
parseInt(query.id_institucion),
|
||||
@@ -159,14 +156,7 @@ export class EquipoController {
|
||||
equipos(@Request() req, @Query() query: EquiposDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoService.findAll(operador, query);
|
||||
}
|
||||
|
||||
@@ -196,14 +186,7 @@ export class EquipoController {
|
||||
const operador: Operador = req.user.operador;
|
||||
const data = { ...body };
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
delete data.id_carrito;
|
||||
delete data.id_status;
|
||||
delete data.id_operador;
|
||||
|
||||
@@ -4,7 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { EquipoController } from './equipo.controller';
|
||||
import { EquipoService } from './equipo.service';
|
||||
import { Equipo } from './entity/equipo.entity';
|
||||
// import { EquipoPrestamoView } from './entity/views/equipo-prestamo.view';
|
||||
import { InformacionEquipoView } from './entity/views/informacion-equipo.view';
|
||||
import { CarritoModule } from '../carrito/carrito.module';
|
||||
import { EquipoProgramaModule } from '../equipo-programa/equipo-programa.module';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
@@ -17,6 +17,7 @@ import { ModuloModule } from '../modulo/modulo.module';
|
||||
import { EquipoMotivoModule } from '../equipo-motivo/equipo-motivo.module';
|
||||
import { OperadorModule } from '../operador/operador.module';
|
||||
import { StatusModule } from '../status/status.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -33,7 +34,8 @@ import { StatusModule } from '../status/status.module';
|
||||
OperadorModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
StatusModule,
|
||||
TypeOrmModule.forFeature([Equipo /*, EquipoPrestamoView*/]),
|
||||
TypeOrmModule.forFeature([Equipo, InformacionEquipoView]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [EquipoController],
|
||||
providers: [EquipoService],
|
||||
|
||||
@@ -10,7 +10,6 @@ import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Carrito } from '../carrito/entity/carrito.entity';
|
||||
import { Equipo } from './entity/equipo.entity';
|
||||
// import { EquipoPrestamoView } from './entity/views/equipo-prestamo.view';
|
||||
import { Institucion } from '../institucion/entity/institucion.entity';
|
||||
import { Marca } from '../marca/entity/marca.entity';
|
||||
import { Modelo } from '../modelo/entity/modelo.entity';
|
||||
@@ -19,6 +18,7 @@ import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Programa } from '../institucion-programa/entity/programa.entity';
|
||||
import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity';
|
||||
import { TipoEntrada } from '../institucion-tipo-entrada/entity/tipo-entrada.entity';
|
||||
import { InformacionEquipoView } from './entity/views/informacion-equipo.view';
|
||||
import { CarritoService } from '../carrito/carrito.service';
|
||||
import { EquipoProgramaService } from '../equipo-programa/equipo-programa.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
@@ -36,8 +36,8 @@ import { StatusService } from '../status/status.service';
|
||||
export class EquipoService {
|
||||
constructor(
|
||||
@InjectRepository(Equipo) private repository: Repository<Equipo>,
|
||||
// @InjectRepository(EquipoPrestamoView)
|
||||
// private equipoPrestamoView: Repository<EquipoPrestamoView>,
|
||||
@InjectRepository(InformacionEquipoView)
|
||||
private informacionEquipoView: Repository<InformacionEquipoView>,
|
||||
private carritoService: CarritoService,
|
||||
@Inject(forwardRef(() => EquipoProgramaService))
|
||||
private equipoProgramaService: EquipoProgramaService,
|
||||
@@ -253,6 +253,25 @@ export class EquipoService {
|
||||
});
|
||||
}
|
||||
|
||||
async findEquipoByEquipo(
|
||||
id_carrito: number | Carrito,
|
||||
equipo: string,
|
||||
validarNoExiste = true,
|
||||
) {
|
||||
const carrito =
|
||||
typeof id_carrito === 'number'
|
||||
? await this.carritoService.findById(id_carrito)
|
||||
: id_carrito;
|
||||
|
||||
return this.repository
|
||||
.findOne({ where: { carrito, equipo } })
|
||||
.then((equipo) => {
|
||||
if (validarNoExiste && !equipo)
|
||||
throw new NotFoundException('No existe este equipo.');
|
||||
return equipo;
|
||||
});
|
||||
}
|
||||
|
||||
async findEquipo(
|
||||
modulo: Modulo,
|
||||
tipoCarrito: TipoCarrito,
|
||||
@@ -300,9 +319,7 @@ export class EquipoService {
|
||||
.where('e.prestado = 0')
|
||||
.orderBy('c.carrito')
|
||||
.addOrderBy('e.equipo');
|
||||
// const a = await this.equipoPrestamoView.find();
|
||||
|
||||
// console.log(a);
|
||||
if (programa) {
|
||||
query.andWhere('ps.id_programa = :id_programa', {
|
||||
id_programa: programa.id_programa,
|
||||
@@ -335,6 +352,18 @@ export class EquipoService {
|
||||
});
|
||||
}
|
||||
|
||||
informacionEquipoByEquipo(id_carrito: number, equipo: string) {
|
||||
return this.informacionEquipoView.findOne({
|
||||
where: { equipo, id_carrito },
|
||||
});
|
||||
}
|
||||
|
||||
informacionEquipoNumeroInventario(id_institucion: number, equipo: string) {
|
||||
return this.informacionEquipoView.findOne({
|
||||
where: { equipo, id_institucion },
|
||||
});
|
||||
}
|
||||
|
||||
reseteoTotal() {
|
||||
return this.repository
|
||||
.createQueryBuilder()
|
||||
@@ -343,25 +372,6 @@ export class EquipoService {
|
||||
.execute();
|
||||
}
|
||||
|
||||
async findEquipoByEquipo(
|
||||
id_carrito: number | Carrito,
|
||||
equipo: string,
|
||||
validarNoExiste = true,
|
||||
) {
|
||||
const carrito =
|
||||
typeof id_carrito === 'number'
|
||||
? await this.carritoService.findById(id_carrito)
|
||||
: id_carrito;
|
||||
|
||||
return this.repository
|
||||
.findOne({ where: { carrito, equipo } })
|
||||
.then((equipo) => {
|
||||
if (validarNoExiste && !equipo)
|
||||
throw new NotFoundException('No existe este equipo.');
|
||||
return equipo;
|
||||
});
|
||||
}
|
||||
|
||||
async update(
|
||||
// operador: Operador,
|
||||
attrs: Partial<Equipo>,
|
||||
|
||||
@@ -2,7 +2,6 @@ import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Query,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { HoraExcepcionService } from './hora-excepcion.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { CreateHoraExcepcionDto } from './dto/input/create.dto';
|
||||
import { DeleteHoraExcepcionDto } from './dto/input/delete.dto';
|
||||
@@ -28,7 +28,10 @@ import { HoraExcepcionOutputDto } from './dto/output/hora-excepcion.dto';
|
||||
@Controller('hora-excepcion')
|
||||
@ApiTags('hora-excepcion')
|
||||
export class HoraExcepcionController {
|
||||
constructor(private horaExcepcionService: HoraExcepcionService) {}
|
||||
constructor(
|
||||
private horaExcepcionService: HoraExcepcionService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -51,10 +54,7 @@ export class HoraExcepcionController {
|
||||
create(@Request() req, @Body() body: CreateHoraExcepcionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.horaExcepcionService.create(
|
||||
admin,
|
||||
body.id_institucion_dia,
|
||||
@@ -76,10 +76,7 @@ export class HoraExcepcionController {
|
||||
delete(@Request() req, @Body() body: DeleteHoraExcepcionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.horaExcepcionService.delete(admin, body.id_hora_excepcion);
|
||||
}
|
||||
|
||||
@@ -98,10 +95,7 @@ export class HoraExcepcionController {
|
||||
get(@Request() req, @Query() query: GetHoraExcepcionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.horaExcepcionService.findAllByIdInstitucionDia(
|
||||
parseInt(query.id_institucion_dia),
|
||||
);
|
||||
|
||||
@@ -5,12 +5,14 @@ import { HoraExcepcionController } from './hora-excepcion.controller';
|
||||
import { HoraExcepcionService } from './hora-excepcion.service';
|
||||
import { HoraExcepcion } from './entity/hora-excepcion.entity';
|
||||
import { InstitucionDiaModule } from '../institucion-dia/institucion-dia.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionDiaModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([HoraExcepcion]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [HoraExcepcionController],
|
||||
providers: [HoraExcepcionService],
|
||||
|
||||
@@ -20,7 +20,7 @@ export class Carrera {
|
||||
@Column({ type: String, nullable: false, length: 10 })
|
||||
clave: string;
|
||||
|
||||
@ManyToOne(() => Nivel, (nivel) => nivel.carreras, { eager: true })
|
||||
@ManyToOne(() => Nivel, (nivel) => nivel.carreras)
|
||||
@JoinColumn({ name: 'id_nivel' })
|
||||
nivel: Nivel;
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Put,
|
||||
Query,
|
||||
@@ -18,6 +17,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { InstitucionDiaService } from './institucion-dia.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
import { UpdateInstitucionDiaDto } from './dto/input/update.dto';
|
||||
@@ -27,7 +27,10 @@ import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
@Controller('institucion-dia')
|
||||
@ApiTags('institucion-dia')
|
||||
export class InstitucionDiaController {
|
||||
constructor(private institucionDiaService: InstitucionDiaService) {}
|
||||
constructor(
|
||||
private institucionDiaService: InstitucionDiaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(InstitucionCarreaOutputDto)
|
||||
@Get()
|
||||
@@ -44,10 +47,7 @@ export class InstitucionDiaController {
|
||||
dias(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.institucionDiaService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
);
|
||||
@@ -69,10 +69,7 @@ export class InstitucionDiaController {
|
||||
hoy(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.institucionDiaService.hoy(parseInt(query.id_institucion));
|
||||
}
|
||||
|
||||
@@ -102,10 +99,7 @@ export class InstitucionDiaController {
|
||||
update(@Request() req, @Body() body: UpdateInstitucionDiaDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.institucionDiaService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@ import { InstitucionDiaService } from './institucion-dia.service';
|
||||
import { Dia } from './entity/dia.entity';
|
||||
import { InstitucionDia } from './entity/institucion-dia.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Dia, InstitucionDia]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [InstitucionDiaController],
|
||||
providers: [InstitucionDiaService],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { InstitucionInfraccionService } from './institucion-infraccion.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
import { CreateInstitucionInfraccionDto } from './dto/input/create.dto';
|
||||
@@ -31,6 +31,7 @@ import { InstitucionInfraccionOutputDto } from './dto/output/institucion-infracc
|
||||
export class InstitucionInfraccionController {
|
||||
constructor(
|
||||
private institucionInfraccionService: InstitucionInfraccionService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@@ -44,10 +45,7 @@ export class InstitucionInfraccionController {
|
||||
create(@Request() req, @Body() body: CreateInstitucionInfraccionDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionInfraccionService.create(body.infraccion);
|
||||
}
|
||||
|
||||
@@ -59,10 +57,7 @@ export class InstitucionInfraccionController {
|
||||
get(@Request() req) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionInfraccionService.findAll();
|
||||
}
|
||||
|
||||
@@ -81,14 +76,7 @@ export class InstitucionInfraccionController {
|
||||
infracciones(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.institucionInfraccionService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
);
|
||||
@@ -109,10 +97,7 @@ export class InstitucionInfraccionController {
|
||||
update(@Request() req, @Body() body: UpdateInstitucionInfraccionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.institucionInfraccionService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@ import { InstitucionInfraccionService } from './institucion-infraccion.service';
|
||||
import { Infraccion } from './entity/infraccion.entity';
|
||||
import { InstitucionInfraccion } from './entity/institucion-infraccion.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Infraccion, InstitucionInfraccion]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [InstitucionInfraccionController],
|
||||
providers: [InstitucionInfraccionService],
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import {
|
||||
Body,
|
||||
ForbiddenException,
|
||||
Controller,
|
||||
Get,
|
||||
Post,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { InstitucionProgramaService } from './institucion-programa.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
@@ -31,7 +31,10 @@ import { ProgramaOutputDto } from './dto/output/programa.dto';
|
||||
@Controller('institucion-programa')
|
||||
@ApiTags('institucion-programa')
|
||||
export class InstitucionProgramaController {
|
||||
constructor(private institucionProgramaService: InstitucionProgramaService) {}
|
||||
constructor(
|
||||
private institucionProgramaService: InstitucionProgramaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -44,10 +47,7 @@ export class InstitucionProgramaController {
|
||||
create(@Request() req, @Body() body: CreateProgramaDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionProgramaService.create(body.programa);
|
||||
}
|
||||
|
||||
@@ -59,15 +59,7 @@ export class InstitucionProgramaController {
|
||||
get(@Request() req) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.institucionProgramaService.findAllProgramas();
|
||||
}
|
||||
|
||||
@@ -86,10 +78,7 @@ export class InstitucionProgramaController {
|
||||
programas(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.institucionProgramaService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
);
|
||||
@@ -111,10 +100,7 @@ export class InstitucionProgramaController {
|
||||
programasMostrar(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.institucionProgramaService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
true,
|
||||
@@ -137,10 +123,7 @@ export class InstitucionProgramaController {
|
||||
update(@Request() req, @Body() body: UpdateProgramaDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.institucionProgramaService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@ import { InstitucionProgramaService } from './institucion-programa.service';
|
||||
import { InstitucionPrograma } from './entity/institucion-programa.entity';
|
||||
import { Programa } from './entity/programa.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([InstitucionPrograma, Programa]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [InstitucionProgramaController],
|
||||
providers: [InstitucionProgramaService],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
@@ -33,6 +33,7 @@ import { TipoCarritoOutputDto } from './dto/output/tipo-carrito.dto';
|
||||
export class InstitucionTipoCarritoController {
|
||||
constructor(
|
||||
private institucionTipoCarritoService: InstitucionTipoCarritoService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@@ -46,10 +47,7 @@ export class InstitucionTipoCarritoController {
|
||||
create(@Request() req, @Body() body: CreateInstitucionTipoCarritoDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionTipoCarritoService.create(
|
||||
body.letra,
|
||||
body.tipo_carrito,
|
||||
@@ -66,15 +64,7 @@ export class InstitucionTipoCarritoController {
|
||||
get(@Request() req) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.institucionTipoCarritoService.findAll();
|
||||
}
|
||||
|
||||
@@ -94,10 +84,7 @@ export class InstitucionTipoCarritoController {
|
||||
tiposCarrito(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.institucionTipoCarritoService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
);
|
||||
@@ -119,10 +106,7 @@ export class InstitucionTipoCarritoController {
|
||||
tiposCarritoMostrar(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.institucionTipoCarritoService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
true,
|
||||
@@ -145,10 +129,7 @@ export class InstitucionTipoCarritoController {
|
||||
update(@Request() req, @Body() body: UpdateInstitucionTipoCarritoDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.institucionTipoCarritoService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@ import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.servic
|
||||
import { InstitucionTipoCarrito } from './entity/institucion-tipo-carrito.entity';
|
||||
import { TipoCarrito } from './entity/tipo-carrito.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([InstitucionTipoCarrito, TipoCarrito]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [InstitucionTipoCarritoController],
|
||||
providers: [InstitucionTipoCarritoService],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { InstitucionTipoEntradaService } from './institucion-tipo-entrada.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
@@ -31,7 +31,10 @@ import { TipoEntradaOutputDto } from './dto/output/tipo-entrada.dto';
|
||||
@Controller('institucion-tipo-entrada')
|
||||
@ApiTags('institucion-tipo-entrada')
|
||||
export class InstitucionTipoEntradaController {
|
||||
constructor(private tipoEntradaService: InstitucionTipoEntradaService) {}
|
||||
constructor(
|
||||
private tipoEntradaService: InstitucionTipoEntradaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -44,10 +47,7 @@ export class InstitucionTipoEntradaController {
|
||||
create(@Request() req, @Body() body: CreateInstitucionTipoEntradaDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.tipoEntradaService.create(body.tipo_entrada);
|
||||
}
|
||||
|
||||
@@ -61,15 +61,7 @@ export class InstitucionTipoEntradaController {
|
||||
get(@Request() req) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.tipoEntradaService.findAll();
|
||||
}
|
||||
|
||||
@@ -89,10 +81,7 @@ export class InstitucionTipoEntradaController {
|
||||
tiposEntrada(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.tipoEntradaService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
);
|
||||
@@ -114,10 +103,7 @@ export class InstitucionTipoEntradaController {
|
||||
tipoEntradaMostrar(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.tipoEntradaService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
true,
|
||||
@@ -140,10 +126,7 @@ export class InstitucionTipoEntradaController {
|
||||
update(@Request() req, @Body() body: UpdateInstitucionTipoEntradaDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.tipoEntradaService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@ import { InstitucionTipoEntradaService } from './institucion-tipo-entrada.servic
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { InstitucionTipoEntrada } from './entity/institucion-tipo-entrada.entity';
|
||||
import { TipoEntrada } from './entity/tipo-entrada.entity';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([InstitucionTipoEntrada, TipoEntrada]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [InstitucionTipoEntradaController],
|
||||
providers: [InstitucionTipoEntradaService],
|
||||
|
||||
@@ -6,9 +6,5 @@ export class UpdateInstitucionUsuarioInputDto {
|
||||
|
||||
@IsBoolean()
|
||||
@IsOptional()
|
||||
activo?: boolean;
|
||||
|
||||
@IsBoolean()
|
||||
@IsOptional()
|
||||
multa?: boolean;
|
||||
activo: boolean;
|
||||
}
|
||||
|
||||
@@ -1,21 +1,18 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Put,
|
||||
Request,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { Body, Controller, Put, Request, UseGuards } from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { InstitucionUsuarioService } from './institucion-usuario.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { UpdateInstitucionUsuarioInputDto } from './dto/input/update.dto';
|
||||
|
||||
@Controller('institucion-usuario')
|
||||
@ApiTags('institucion-usuario')
|
||||
export class InstitucionUsuarioController {
|
||||
constructor(private institucionUsuarioService: InstitucionUsuarioService) {}
|
||||
constructor(
|
||||
private institucionUsuarioService: InstitucionUsuarioService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Put()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -24,13 +21,12 @@ export class InstitucionUsuarioController {
|
||||
})
|
||||
@ApiBearerAuth('jwt')
|
||||
@ApiBody({
|
||||
description: 'Todas las variables a excepción de id_ son opcionales.',
|
||||
description: 'Todas las variables son obligatorias.',
|
||||
examples: {
|
||||
ejemplo: {
|
||||
value: {
|
||||
correo: '',
|
||||
id_usuario: 1,
|
||||
telefono: '',
|
||||
activo: true,
|
||||
id_institucion_usuario: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -38,14 +34,7 @@ export class InstitucionUsuarioController {
|
||||
update(@Request() req, @Body() body: UpdateInstitucionUsuarioInputDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(admin);
|
||||
return this.institucionUsuarioService.update(body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { InstitucionUsuarioService } from './institucion-usuario.service';
|
||||
import { InstitucionUsuario } from './entity/institucion-usuario.entity';
|
||||
import { InstitucionUsuarioController } from './institucion-usuario.controller';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([InstitucionUsuario]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
providers: [InstitucionUsuarioService],
|
||||
exports: [InstitucionUsuarioService],
|
||||
|
||||
@@ -49,11 +49,13 @@ export class InstitucionUsuarioService {
|
||||
}
|
||||
|
||||
update(attrs: Partial<InstitucionUsuario>) {
|
||||
return this.findById(attrs.id_institucion_usuario).then(
|
||||
(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.',
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { InstitucionService } from './institucion.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
import { UpdateInstitucionDto } from './dto/input/update.dto';
|
||||
@@ -29,7 +30,10 @@ import { InstitucionesMinOutputDto } from './dto/output/instituciones-min.dto';
|
||||
@Controller('institucion')
|
||||
@ApiTags('institucion')
|
||||
export class InstitucionController {
|
||||
constructor(private institucionService: InstitucionService) {}
|
||||
constructor(
|
||||
private institucionService: InstitucionService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(InstitucionesMinOutputDto)
|
||||
@Get('instituciones-activas')
|
||||
@@ -50,10 +54,7 @@ export class InstitucionController {
|
||||
get(@Request() req) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionService.findAll();
|
||||
}
|
||||
|
||||
@@ -72,14 +73,7 @@ export class InstitucionController {
|
||||
institucion(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdminAdmin(admin);
|
||||
return this.institucionService
|
||||
.findById(parseInt(query.id_institucion))
|
||||
.then((institucion) => {
|
||||
@@ -104,10 +98,7 @@ export class InstitucionController {
|
||||
instituciones(@Request() req) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.institucionService.findAll();
|
||||
}
|
||||
|
||||
@@ -140,14 +131,7 @@ export class InstitucionController {
|
||||
update(@Request() req, @Body() body: UpdateInstitucionDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdminAdmin(admin);
|
||||
return this.institucionService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { InstitucionController } from './institucion.controller';
|
||||
import { InstitucionService } from './institucion.service';
|
||||
import { Institucion } from './entity/institucion.entity';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Institucion]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [InstitucionController],
|
||||
providers: [InstitucionService],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Query,
|
||||
@@ -18,6 +17,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { MarcaService } from './marca.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { CreateMarcaDto } from './dto/input/create.dto';
|
||||
import { MarcaDto } from './dto/input/marca.dto';
|
||||
@@ -26,7 +26,10 @@ import { MarcaOutputDto } from './dto/output/marca.dto';
|
||||
@Controller('marca')
|
||||
@ApiTags('marca')
|
||||
export class MarcaController {
|
||||
constructor(private marcaService: MarcaService) {}
|
||||
constructor(
|
||||
private marcaService: MarcaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -39,10 +42,7 @@ export class MarcaController {
|
||||
create(@Request() req, @Body() body: CreateMarcaDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.marcaService.create(body.marca, body.tipo);
|
||||
}
|
||||
|
||||
@@ -59,15 +59,7 @@ export class MarcaController {
|
||||
get(@Request() req, @Query() query: MarcaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.marcaService.findAll(query.tipo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { MarcaController } from './marca.controller';
|
||||
import { MarcaService } from './marca.service';
|
||||
import { Marca } from './entity/marca.entity';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Marca]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [MarcaController],
|
||||
providers: [MarcaService],
|
||||
|
||||
@@ -18,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { ModeloService } from './modelo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { CreateModeloDto } from './dto/input/create.dto';
|
||||
import { ModeloDto } from './dto/input/modelo.dto';
|
||||
@@ -26,7 +27,10 @@ import { ModeloOutputDto } from './dto/output/modelo.dto';
|
||||
@Controller('modelo')
|
||||
@ApiTags('modelo')
|
||||
export class ModeloController {
|
||||
constructor(private modeloService: ModeloService) {}
|
||||
constructor(
|
||||
private modeloService: ModeloService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -39,6 +43,7 @@ export class ModeloController {
|
||||
create(@Request() req, @Body() body: CreateModeloDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
@@ -59,15 +64,7 @@ export class ModeloController {
|
||||
get(@Request() req, @Query() query: ModeloDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para accedar a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.modeloService.findAll(query.tipo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { ModeloController } from './modelo.controller';
|
||||
import { ModeloService } from './modelo.service';
|
||||
import { Modelo } from './entity/modelo.entity';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Modelo]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [ModeloController],
|
||||
providers: [ModeloService],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -19,8 +18,8 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { ModuloService } from './modulo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
import { CreateModuloDto } from './dto/input/create.dto';
|
||||
import { ModuloDto } from './dto/input/modulo.dto';
|
||||
@@ -31,7 +30,10 @@ import { ModuloMinOutputDto } from './dto/output/modulo-min.dto';
|
||||
@Controller('modulo')
|
||||
@ApiTags('modulo')
|
||||
export class ModuloController {
|
||||
constructor(private moduloService: ModuloService) {}
|
||||
constructor(
|
||||
private moduloService: ModuloService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -44,10 +46,7 @@ export class ModuloController {
|
||||
create(@Request() req, @Body() body: CreateModuloDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.moduloService.create(admin, body.modulo);
|
||||
}
|
||||
|
||||
@@ -66,10 +65,7 @@ export class ModuloController {
|
||||
modulo(@Request() req, @Query() query: ModuloDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.moduloService.findById(parseInt(query.id_modulo));
|
||||
}
|
||||
|
||||
@@ -88,15 +84,7 @@ export class ModuloController {
|
||||
modulos(@Request() req, @Query() query: IdInstitucionDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.moduloService.findAllByIdInstitucion(
|
||||
parseInt(query.id_institucion),
|
||||
);
|
||||
@@ -134,10 +122,7 @@ export class ModuloController {
|
||||
update(@Request() req, @Body() body: UpdateModuloDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.moduloService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,14 @@ import { ModuloController } from './modulo.controller';
|
||||
import { ModuloService } from './modulo.service';
|
||||
import { Modulo } from './entity/modulo.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Modulo]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [ModuloController],
|
||||
providers: [ModuloService],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { MultaService } from './multa.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
import { IdUsuarioDto } from '../dto/id-usuario.dto';
|
||||
@@ -35,7 +35,10 @@ import { MultasUsuarioOutputDto } from './dto/output/multas-usuario.dto';
|
||||
@Controller('multa')
|
||||
@ApiTags('multa')
|
||||
export class MultaController {
|
||||
constructor(private multaService: MultaService) {}
|
||||
constructor(
|
||||
private multaService: MultaService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -57,14 +60,7 @@ export class MultaController {
|
||||
multar(@Request() req, @Body() body: MultarDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.multaService.create(
|
||||
body.id_prestamo,
|
||||
body.id_operador,
|
||||
@@ -102,15 +98,7 @@ export class MultaController {
|
||||
multas(@Request() req, @Query() query: MultasDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.multaService.findAll(query);
|
||||
}
|
||||
|
||||
@@ -134,14 +122,7 @@ export class MultaController {
|
||||
multasEquipo(@Request() req, @Query() query: IdEquipoPaginaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.multaService.findAllByIdEquipo(
|
||||
parseInt(query.id_equipo),
|
||||
parseInt(query.pagina),
|
||||
@@ -168,15 +149,7 @@ export class MultaController {
|
||||
multasUsuario(@Request() req, @Query() query: IdUsuarioPaginaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.multaService.findAllByIdUsuario(
|
||||
parseInt(query.id_usuario),
|
||||
parseInt(query.pagina),
|
||||
@@ -199,10 +172,7 @@ export class MultaController {
|
||||
multasActivas(@Request() req, @Query() query: IdUsuarioDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.multaService.findMultasActivas(parseInt(query.id_usuario));
|
||||
}
|
||||
|
||||
@@ -220,10 +190,7 @@ export class MultaController {
|
||||
quitarMulta(@Request() req, @Body() body: QuitarMultarDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.multaService.quitarMulta(body.id_institucion_usuario);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import { InstitucionUsuarioModule } from '../institucion-usuario/institucion-usu
|
||||
import { OperadorModule } from '../operador/operador.module';
|
||||
import { PrestamoModule } from '../prestamo/prestamo.module';
|
||||
import { UsuarioModule } from '../usuario/usuario.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -23,6 +24,7 @@ import { UsuarioModule } from '../usuario/usuario.module';
|
||||
OperadorModule,
|
||||
TypeOrmModule.forFeature([Multa]),
|
||||
UsuarioModule,
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [MultaController],
|
||||
providers: [MultaService],
|
||||
|
||||
@@ -157,10 +157,10 @@ export class MultaService {
|
||||
.innerJoinAndSelect('m.institucion', 'i')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.orderBy('i.institucion')
|
||||
.addOrderBy('u.usuario')
|
||||
.addOrderBy('mu.activo', 'DESC')
|
||||
.addOrderBy('mu.id_multa', 'DESC')
|
||||
.addOrderBy('u.usuario')
|
||||
.skip((parseInt(filtros.pagina) - 1) * 25)
|
||||
.take(25);
|
||||
|
||||
@@ -193,7 +193,6 @@ export class MultaService {
|
||||
.innerJoinAndSelect('is.institucionCarrera', 'ic')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.orderBy('mu.id_multa', 'DESC')
|
||||
.skip((pagina - 1) * 25)
|
||||
.take(25)
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { Institucion } from '../../../institucion/entity/institucion.entity';
|
||||
import { TipoUsuario } from '../../../tipo-usuario/entity/tipo-usuario.entity';
|
||||
import { Operador } from '../operador.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
dataSource
|
||||
.createQueryBuilder()
|
||||
.select('o.id_operador', 'id_operador')
|
||||
.addSelect('o.activo', 'activo')
|
||||
.addSelect('o.id_institucion', 'id_institucion')
|
||||
.addSelect('o.id_tipo_usuario', 'id_tipo_usuario')
|
||||
.addSelect('o.nombre', 'nombre')
|
||||
.addSelect('o.operador', 'operador')
|
||||
.addSelect('o.password', 'password')
|
||||
.from(Operador, 'o'),
|
||||
})
|
||||
export class InformacionOperadorView {
|
||||
@ViewColumn()
|
||||
id_operador: number;
|
||||
|
||||
@ViewColumn()
|
||||
activo: boolean;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_tipo_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
nombre: string;
|
||||
|
||||
@ViewColumn()
|
||||
operador: string;
|
||||
|
||||
@ViewColumn()
|
||||
password: string;
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { OperadorService } from './operador.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from './entity/operador.entity';
|
||||
import { CreateAdminDto } from './dto/input/create-admin.dto';
|
||||
import { CreateOperadorDto } from './dto/input/create-operador.dto';
|
||||
@@ -29,7 +29,10 @@ import { OperadorOutputDto } from './dto/output/operador.dto';
|
||||
@Controller('operador')
|
||||
@ApiTags('operador')
|
||||
export class OperadorController {
|
||||
constructor(private operadorService: OperadorService) {}
|
||||
constructor(
|
||||
private operadorService: OperadorService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post('admin')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -51,10 +54,7 @@ export class OperadorController {
|
||||
createAdmin(@Request() req, @Body() body: CreateAdminDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.operadorService.create(
|
||||
body.id_institucion,
|
||||
3,
|
||||
@@ -84,10 +84,7 @@ export class OperadorController {
|
||||
createOperador(@Request() req, @Body() body: CreateOperadorDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.operadorService.create(
|
||||
admin.institucion,
|
||||
4,
|
||||
@@ -132,14 +129,7 @@ export class OperadorController {
|
||||
operadores(@Request() req, @Query() query: OperadoresDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdminAdmin(admin);
|
||||
return this.operadorService.findAll(query);
|
||||
}
|
||||
|
||||
@@ -156,14 +146,7 @@ export class OperadorController {
|
||||
passwordResset(@Request() req, @Body() body: UpdateOperadorDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdminAdmin(admin);
|
||||
return this.operadorService.passwordReset(
|
||||
admin,
|
||||
body.id_operador,
|
||||
@@ -192,14 +175,7 @@ export class OperadorController {
|
||||
update(@Request() req, @Body() body: UpdateOperadorDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdminAdmin(admin);
|
||||
return this.operadorService.update(admin, body);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,12 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { OperadorController } from './operador.controller';
|
||||
import { OperadorService } from './operador.service';
|
||||
import { Operador } from './entity/operador.entity';
|
||||
import { InformacionOperadorView } from './entity/views/informacion-operador.view';
|
||||
import { BcryptModule } from '../bcrypt/bcrypt.module';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { NodemailerModule } from '../nodemailer/nodemailer.module';
|
||||
import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -16,7 +18,8 @@ import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
NodemailerModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TipoUsuarioModule,
|
||||
TypeOrmModule.forFeature([Operador]),
|
||||
TypeOrmModule.forFeature([Operador, InformacionOperadorView]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [OperadorController],
|
||||
providers: [OperadorService],
|
||||
|
||||
@@ -7,6 +7,7 @@ import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Between, Repository } from 'typeorm';
|
||||
import { Institucion } from '../institucion/entity/institucion.entity';
|
||||
import { Operador } from './entity/operador.entity';
|
||||
import { InformacionOperadorView } from './entity/views/informacion-operador.view';
|
||||
import { BcryptService } from '../bcrypt/bcrypt.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { NodemailerService } from '../nodemailer/nodemailer.service';
|
||||
@@ -16,6 +17,8 @@ import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service';
|
||||
export class OperadorService {
|
||||
constructor(
|
||||
@InjectRepository(Operador) private repository: Repository<Operador>,
|
||||
@InjectRepository(InformacionOperadorView)
|
||||
private informacionOperadorView: Repository<InformacionOperadorView>,
|
||||
private bcryptService: BcryptService,
|
||||
private institucionService: InstitucionService,
|
||||
private nodemailerService: NodemailerService,
|
||||
@@ -170,6 +173,53 @@ export class OperadorService {
|
||||
});
|
||||
}
|
||||
|
||||
informacionAdmin(admin: string) {
|
||||
return this.informacionOperadorView
|
||||
.findOne({
|
||||
where: {
|
||||
operador: admin,
|
||||
id_tipo_usuario: Between(2, 3),
|
||||
},
|
||||
})
|
||||
.then((admin) => {
|
||||
if (!admin) return { operador: null, activo: null, password: null };
|
||||
return {
|
||||
operador: {
|
||||
id_operador: admin.id_operador,
|
||||
nombre: admin.nombre,
|
||||
operador: admin.operador,
|
||||
institucion: admin.id_institucion
|
||||
? { id_institucion: admin.id_institucion }
|
||||
: null,
|
||||
tipoUsuario: { id_tipo_usuario: admin.id_tipo_usuario },
|
||||
},
|
||||
activo: admin.activo,
|
||||
password: admin.password,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
informacionOperador(institucion: Institucion, operador: string) {
|
||||
return this.informacionOperadorView
|
||||
.findOne({
|
||||
where: { operador, id_institucion: institucion.id_institucion },
|
||||
})
|
||||
.then((operador) => {
|
||||
if (!operador) return { operador: null, activo: null, password: null };
|
||||
return {
|
||||
operador: {
|
||||
id_operador: operador.id_operador,
|
||||
nombre: operador.nombre,
|
||||
operador: operador.operador,
|
||||
institucion: { id_institucion: operador.id_institucion },
|
||||
tipoUsuario: { id_tipo_usuario: operador.id_tipo_usuario },
|
||||
},
|
||||
activo: operador.activo,
|
||||
password: operador.password,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
passwordReset(admin: Operador, id_operador: number, password?: string) {
|
||||
return this.findById(id_operador)
|
||||
.then((operador) => {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
IsBooleanString,
|
||||
IsDateString,
|
||||
IsNotEmpty,
|
||||
IsNumberString,
|
||||
@@ -10,6 +11,14 @@ export class HistorialDto {
|
||||
@IsNumberString()
|
||||
pagina: string;
|
||||
|
||||
@IsBooleanString()
|
||||
@IsOptional()
|
||||
cancelado_operador?: string;
|
||||
|
||||
@IsBooleanString()
|
||||
@IsOptional()
|
||||
cancelado_usuario?: string;
|
||||
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
@IsOptional()
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { PrestamoService } from './prestamo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto';
|
||||
import { IdUsuarioDto } from '../dto/id-usuario.dto';
|
||||
@@ -45,7 +45,10 @@ import { Usuario } from '../usuario/entity/usuario.entity';
|
||||
@Controller('prestamo')
|
||||
@ApiTags('prestamo')
|
||||
export class PrestamoController {
|
||||
constructor(private prestamoService: PrestamoService) {}
|
||||
constructor(
|
||||
private prestamoService: PrestamoService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(ActivosOutputDto)
|
||||
@Get('activos')
|
||||
@@ -111,14 +114,7 @@ export class PrestamoController {
|
||||
activos(@Request() req, @Query() query: ActivosDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.findAll(query);
|
||||
}
|
||||
|
||||
@@ -137,14 +133,7 @@ export class PrestamoController {
|
||||
cancelarOperador(@Request() req, @Body() body: CancelarOperadorDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.cancelarOperador(
|
||||
body.id_prestamo,
|
||||
body.id_operador,
|
||||
@@ -165,10 +154,7 @@ export class PrestamoController {
|
||||
cancelarUsuario(@Request() req, @Body() body: CancelarUsuarioDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.prestamoService.cancelarUsuario(body.id_prestamo);
|
||||
}
|
||||
|
||||
@@ -186,14 +172,7 @@ export class PrestamoController {
|
||||
entregar(@Request() req, @Body() body: EntregarDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.entregar(body.id_prestamo, body.id_operador);
|
||||
}
|
||||
|
||||
@@ -273,14 +252,7 @@ export class PrestamoController {
|
||||
historial(@Request() req, @Query() query: HistorialDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.prestamoService.findAll(query);
|
||||
}
|
||||
|
||||
@@ -305,14 +277,7 @@ export class PrestamoController {
|
||||
historialEquipo(@Request() req, @Query() query: IdEquipoPaginaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.findAllByIdEquipo(
|
||||
parseInt(query.id_equipo),
|
||||
parseInt(query.pagina),
|
||||
@@ -340,14 +305,7 @@ export class PrestamoController {
|
||||
historialUsuario(@Request() req, @Query() query: IdUsuarioPaginaDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.findAllByIdUsuario(
|
||||
parseInt(query.id_usuario),
|
||||
parseInt(query.pagina),
|
||||
@@ -376,10 +334,7 @@ export class PrestamoController {
|
||||
pedir(@Request() req, @Body() body: PedirDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.prestamoService.create(
|
||||
usuario,
|
||||
body.id_modulo,
|
||||
@@ -400,18 +355,13 @@ export class PrestamoController {
|
||||
type: 'text',
|
||||
})
|
||||
prestamoIdPrestamo(@Request() req, @Query() query: IdPrestamoDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
const usuarioOperador: Operador | Usuario =
|
||||
req.user.operador || req.user.usuario;
|
||||
|
||||
if (
|
||||
operador &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
return this.prestamoService.findByIdController(parseInt(query.id_prestamo));
|
||||
if ('id_usuario' in usuarioOperador)
|
||||
this.validarUsuarioService.validarUsuario(usuarioOperador);
|
||||
else this.validarUsuarioService.validarAdminOperador(usuarioOperador);
|
||||
return this.prestamoService.findByIdController(parseInt(query.id_prestamo));
|
||||
}
|
||||
|
||||
@Serealize(PrestamoOutputDto)
|
||||
@@ -430,10 +380,7 @@ export class PrestamoController {
|
||||
prestamoIdUsuario(@Request() req, @Query() query: IdUsuarioDto) {
|
||||
const usuario: Usuario = req.user.usuario;
|
||||
|
||||
if (!usuario)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.prestamoService.findByIdUsuario(parseInt(query.id_usuario));
|
||||
}
|
||||
|
||||
@@ -461,14 +408,7 @@ export class PrestamoController {
|
||||
) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.findByNumeroInventario(
|
||||
parseInt(query.id_institucion),
|
||||
query.numero_inventario,
|
||||
@@ -495,14 +435,7 @@ export class PrestamoController {
|
||||
regresarIdPrestamo(@Request() req, @Body() body: RegresarIdPrestamoDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.regresarIdPrestamo(
|
||||
body.id_operador,
|
||||
body.id_prestamo,
|
||||
@@ -534,14 +467,7 @@ export class PrestamoController {
|
||||
) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.prestamoService.regresarNumeroInventario(
|
||||
body.id_operador,
|
||||
body.numero_inventario,
|
||||
|
||||
@@ -17,6 +17,7 @@ import { MultaModule } from '../multa/multa.module';
|
||||
import { PasscodeModule } from '../passcode/passcode.module';
|
||||
import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
import { UsuarioModule } from '../usuario/usuario.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -34,6 +35,7 @@ import { UsuarioModule } from '../usuario/usuario.module';
|
||||
TypeOrmModule.forFeature([Prestamo]),
|
||||
TipoUsuarioModule,
|
||||
UsuarioModule,
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [PrestamoController],
|
||||
providers: [AppGateway, PrestamoService],
|
||||
|
||||
@@ -288,6 +288,8 @@ export class PrestamoService {
|
||||
async findAll(filtros: {
|
||||
pagina: string;
|
||||
activo?: string | boolean;
|
||||
cancelado_operador?: string;
|
||||
cancelado_usuario?: string;
|
||||
carrito?: string;
|
||||
equipo?: string;
|
||||
fechaFin?: string;
|
||||
@@ -344,8 +346,10 @@ export class PrestamoService {
|
||||
.innerJoinAndSelect('m.institucion', 'i')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.orderBy('p.id_prestamo', 'DESC')
|
||||
.orderBy(
|
||||
'p.id_prestamo',
|
||||
filtros.activo && typeof filtros.activo === 'boolean' ? 'ASC' : 'DESC',
|
||||
)
|
||||
.addOrderBy('i.institucion')
|
||||
.addOrderBy('m.modulo')
|
||||
.addOrderBy('tc.tipo_carrito')
|
||||
@@ -362,6 +366,22 @@ export class PrestamoService {
|
||||
activo: filtros.activo === 'true',
|
||||
});
|
||||
}
|
||||
if (filtros.cancelado_operador)
|
||||
query.andWhere('p.cancelado_operador = :cancelado_operador', {
|
||||
cancelado_operador: filtros.cancelado_operador === 'true',
|
||||
});
|
||||
if (filtros.cancelado_usuario)
|
||||
query.andWhere('p.cancelado_usuario = :cancelado_usuario', {
|
||||
cancelado_usuario: filtros.cancelado_usuario === 'true',
|
||||
});
|
||||
if (filtros.fechaInicio)
|
||||
query.andWhere('p.fecha_inicio >= :fechaInicio', {
|
||||
fechaInicio: filtros.fechaInicio,
|
||||
});
|
||||
if (filtros.fechaFin)
|
||||
query.andWhere('p.fecha_inicio <= :fechaFin', {
|
||||
fechaFin: filtros.fechaFin,
|
||||
});
|
||||
if (filtros.id_prestamo)
|
||||
query.andWhere('p.id_prestamo LIKE :id_prestamo', {
|
||||
id_prestamo: `%${filtros.id_prestamo}%`,
|
||||
@@ -451,7 +471,6 @@ export class PrestamoService {
|
||||
.innerJoinAndSelect('m.institucion', 'i')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.orderBy('p.id_prestamo', 'DESC')
|
||||
.skip((pagina - 1) * 25)
|
||||
.take(25)
|
||||
@@ -476,7 +495,6 @@ export class PrestamoService {
|
||||
.innerJoinAndSelect('is.institucionCarrera', 'ic')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.innerJoinAndSelect('m.institucion', 'i')
|
||||
.where('p.id_prestamo = :id_prestamo', {
|
||||
id_prestamo,
|
||||
@@ -589,7 +607,6 @@ export class PrestamoService {
|
||||
.innerJoinAndSelect('m.institucion', 'i')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.where('p.activo = 1')
|
||||
.getOne(),
|
||||
)
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
import {
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Request,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { Controller, Get, Request, UseGuards } from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { StatusService } from './status.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { StatusOutputDto } from './dto/output/status.dto';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
|
||||
@Controller('status')
|
||||
@ApiTags('status')
|
||||
export class StatusController {
|
||||
constructor(private statusService: StatusService) {}
|
||||
constructor(
|
||||
private statusService: StatusService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Serealize(StatusOutputDto)
|
||||
@Get()
|
||||
@@ -25,15 +23,7 @@ export class StatusController {
|
||||
get(@Request() req) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para acceder a esta información.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.statusService.findAll();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { StatusController } from './status.controller';
|
||||
import { StatusService } from './status.service';
|
||||
import { Status } from './entity/status.entity';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([Status]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [StatusController],
|
||||
providers: [StatusService],
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import {
|
||||
Body,
|
||||
ConflictException,
|
||||
Controller,
|
||||
Get,
|
||||
Post,
|
||||
@@ -11,6 +10,7 @@ import { AuthGuard } from '@nestjs/passport';
|
||||
import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { TipoUsuarioService } from './tipo-usuario.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { CreateTipoUsuarioDto } from './dto/input/create.dto';
|
||||
import { TipoUsuarioOutputDto } from './dto/output/tipo-usuario.dto';
|
||||
@@ -18,7 +18,10 @@ import { TipoUsuarioOutputDto } from './dto/output/tipo-usuario.dto';
|
||||
@Controller('tipo-usuario')
|
||||
@ApiTags('tipo-usuario')
|
||||
export class TipoUsuarioController {
|
||||
constructor(private tipoUsuarioService: TipoUsuarioService) {}
|
||||
constructor(
|
||||
private tipoUsuarioService: TipoUsuarioService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post()
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@@ -31,10 +34,7 @@ export class TipoUsuarioController {
|
||||
create(@Request() req, @Body() body: CreateTipoUsuarioDto) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ConflictException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.tipoUsuarioService.create(body.tipo_usuario);
|
||||
}
|
||||
|
||||
@@ -48,10 +48,7 @@ export class TipoUsuarioController {
|
||||
get(@Request() req) {
|
||||
const superAdmin: Operador = req.user.operador;
|
||||
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
throw new ConflictException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarSuperAdmin(superAdmin);
|
||||
return this.tipoUsuarioService.findAll();
|
||||
}
|
||||
|
||||
@@ -66,15 +63,7 @@ export class TipoUsuarioController {
|
||||
operador(@Request() req) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ConflictException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.tipoUsuarioService.findAll('operador');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { TipoUsuarioController } from './tipo-usuario.controller';
|
||||
import { TipoUsuarioService } from './tipo-usuario.service';
|
||||
import { TipoUsuario } from './entity/tipo-usuario.entity';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([TipoUsuario]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [TipoUsuarioController],
|
||||
providers: [TipoUsuarioService],
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
Post,
|
||||
Query,
|
||||
Response,
|
||||
Request,
|
||||
UploadedFile,
|
||||
UseGuards,
|
||||
UseInterceptors,
|
||||
@@ -13,23 +14,31 @@ import { AuthGuard } from '@nestjs/passport';
|
||||
import { FileInterceptor } from '@nestjs/platform-express';
|
||||
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
|
||||
import { UploadFileService } from './upload-file.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { IdInstitucionDto } from '../dto/id-institucion.dto';
|
||||
|
||||
@Controller('upload-file')
|
||||
@ApiTags('upload-file')
|
||||
export class UploadFileController {
|
||||
constructor(private uploadFileService: UploadFileService) {}
|
||||
constructor(
|
||||
private uploadFileService: UploadFileService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post('carga-masiva-equipos')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@UseInterceptors(FileInterceptor('csv'))
|
||||
@ApiBearerAuth('jwt')
|
||||
cargaMasivaEquipos(
|
||||
@Request() req,
|
||||
@UploadedFile() file: Express.Multer.File,
|
||||
@Query() query: IdInstitucionDto,
|
||||
) {
|
||||
const admin: Operador = req.user.operador;
|
||||
const path = file ? `${file.destination}/${file.filename}` : null;
|
||||
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
if (!file) throw new BadRequestException('No se mandó ningún archivo.');
|
||||
return this.uploadFileService.createEquipos(
|
||||
path,
|
||||
@@ -42,11 +51,14 @@ export class UploadFileController {
|
||||
@UseInterceptors(FileInterceptor('csv'))
|
||||
@ApiBearerAuth('jwt')
|
||||
cargaMasivaUsuarios(
|
||||
@Request() req,
|
||||
@UploadedFile() file: Express.Multer.File,
|
||||
@Query() query: IdInstitucionDto,
|
||||
) {
|
||||
const admin: Operador = req.user.operador;
|
||||
const path = file ? `${file.destination}/${file.filename}` : null;
|
||||
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
if (!file) throw new BadRequestException('No se mandó ningún archivo.');
|
||||
return this.uploadFileService.createUsuarios(
|
||||
path,
|
||||
@@ -57,7 +69,14 @@ export class UploadFileController {
|
||||
@Get('download-logo')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiBearerAuth('jwt')
|
||||
downloadLogo(@Response() res, @Query() query: IdInstitucionDto) {
|
||||
downloadLogo(
|
||||
@Request() req,
|
||||
@Response() res,
|
||||
@Query() query: IdInstitucionDto,
|
||||
) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.uploadFileService
|
||||
.downloadLogo(parseInt(query.id_institucion))
|
||||
.then((logo) => res.download(logo));
|
||||
@@ -66,14 +85,20 @@ export class UploadFileController {
|
||||
@Get('download-plantilla-equipos')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiBearerAuth('jwt')
|
||||
downloadPlantillaEquipos(@Response() res) {
|
||||
downloadPlantillaEquipos(@Request() req, @Response() res) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return res.download('./upload/plantilla_equipos.csv');
|
||||
}
|
||||
|
||||
@Get('download-plantilla-usuarios')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiBearerAuth('jwt')
|
||||
downloadPlantillaUsuarios(@Response() res) {
|
||||
downloadPlantillaUsuarios(@Request() req, @Response() res) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return res.download('./upload/plantilla_alumnos.csv');
|
||||
}
|
||||
|
||||
@@ -82,9 +107,13 @@ export class UploadFileController {
|
||||
@ApiBearerAuth('jwt')
|
||||
@UseInterceptors(FileInterceptor('logo'))
|
||||
uploadLogo(
|
||||
@Request() req,
|
||||
@UploadedFile() file: Express.Multer.File,
|
||||
@Query() query: IdInstitucionDto,
|
||||
) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.uploadFileService.uploadLogo(
|
||||
file,
|
||||
parseInt(query.id_institucion),
|
||||
|
||||
@@ -19,6 +19,7 @@ import { ModeloModule } from '../modelo/modelo.module';
|
||||
import { ModuloModule } from '../modulo/modulo.module';
|
||||
import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
import { UsuarioModule } from '../usuario/usuario.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -49,6 +50,7 @@ import { UsuarioModule } from '../usuario/usuario.module';
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TipoUsuarioModule,
|
||||
UsuarioModule,
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [UploadFileController],
|
||||
providers: [AppGateway, UploadFileService],
|
||||
|
||||
@@ -131,7 +131,8 @@ export class UploadFileService {
|
||||
errores: string[],
|
||||
equiposNuevos: Equipo[],
|
||||
) {
|
||||
let error = this.errorBase(index);
|
||||
const errorAux = this.errorBase(index);
|
||||
let error = errorAux;
|
||||
|
||||
if (
|
||||
!dataEquipo.carrito ||
|
||||
@@ -145,23 +146,38 @@ export class UploadFileService {
|
||||
!dataEquipo.tipo
|
||||
) {
|
||||
if (!dataEquipo.carrito) error += ' falta del campo carrito';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.entradas) error += ' falta del campo entradas';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.equipo) error += ' falta del campo equipo';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.marca) error += ' falta del campo marca';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.modelo) error += ' falta del campo modelo';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.modulo) error += ' falta del campo modulo';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.numero_inventario)
|
||||
if (!dataEquipo.entradas) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo entradas';
|
||||
}
|
||||
if (!dataEquipo.equipo) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo equipo';
|
||||
}
|
||||
if (!dataEquipo.marca) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo marca';
|
||||
}
|
||||
if (!dataEquipo.modelo) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo modelo';
|
||||
}
|
||||
if (!dataEquipo.modulo) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo modulo';
|
||||
}
|
||||
if (!dataEquipo.numero_inventario) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo numero_inventario';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.numero_serie) error += ' falta del campo numero_serie';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!dataEquipo.tipo) error += ' falta del campo tipo';
|
||||
}
|
||||
if (!dataEquipo.numero_serie) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo numero_serie';
|
||||
}
|
||||
if (!dataEquipo.tipo) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' falta del campo tipo';
|
||||
}
|
||||
errores.push(error + '.');
|
||||
return;
|
||||
}
|
||||
@@ -195,138 +211,158 @@ export class UploadFileService {
|
||||
false,
|
||||
)
|
||||
: null;
|
||||
// let equipo = carrito
|
||||
// ? await this.equipoService.findEquipoByEquipo(
|
||||
// carrito,
|
||||
// dataEquipo.equipo,
|
||||
// false,
|
||||
// )
|
||||
// : null;
|
||||
let equipo = carrito
|
||||
? await this.equipoService.findEquipoByEquipo(
|
||||
carrito,
|
||||
? await this.equipoService.informacionEquipoByEquipo(
|
||||
carrito.id_carrito,
|
||||
dataEquipo.equipo,
|
||||
false,
|
||||
)
|
||||
: null;
|
||||
|
||||
if (!tipoCarrito || !marca || !modelo || !modulo || !carrito) {
|
||||
if (!tipoCarrito) error += ' no existe este tipo de carrito';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!marca) error += ' no existe esta marca';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!modelo) error += ' no existe este modelo';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!modulo) error += ' no existe este módulo';
|
||||
if (error != this.errorBase(index)) error += ',';
|
||||
if (!carrito) error += ' no existe este carrito';
|
||||
if (!marca) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' no existe esta marca';
|
||||
}
|
||||
if (!modelo) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' no existe este modelo';
|
||||
}
|
||||
if (!modulo) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' no existe este módulo';
|
||||
}
|
||||
if (!carrito) {
|
||||
if (error != errorAux) error += ',';
|
||||
error += ' no existe este carrito';
|
||||
}
|
||||
errores.push(error + '.');
|
||||
return;
|
||||
}
|
||||
|
||||
if (equipo) {
|
||||
errores.push(
|
||||
`${error} ya existe un equipo de cómputo con el sobrenombre: ${equipo.equipo} en el carrito: ${equipo.carrito.carrito}.`,
|
||||
`${error} ya existe un equipo de cómputo con el sobrenombre: ${equipo.equipo} en el carrito: ${equipo.carrito}.`,
|
||||
// `${error} ya existe un equipo de cómputo con el sobrenombre: ${equipo.equipo} en el carrito: ${equipo.carrito.carrito}.`,
|
||||
);
|
||||
return;
|
||||
} else {
|
||||
equipo = await this.equipoService.findByNumeroInventario(
|
||||
institucion,
|
||||
// equipo = await this.equipoService.findByNumeroInventario(
|
||||
// institucion,
|
||||
// dataEquipo.numero_inventario,
|
||||
// false,
|
||||
// );
|
||||
equipo = await this.equipoService.informacionEquipoNumeroInventario(
|
||||
institucion.id_institucion,
|
||||
dataEquipo.numero_inventario,
|
||||
false,
|
||||
);
|
||||
|
||||
if (equipo) {
|
||||
errores.push(
|
||||
`${error} ya existe un equipo con ese número de inventario en esta institución.`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
equipo = await this.equipoService.create(
|
||||
carrito,
|
||||
dataEquipo.equipo,
|
||||
dataEquipo.numero_inventario,
|
||||
dataEquipo.numero_serie,
|
||||
marca,
|
||||
modelo,
|
||||
);
|
||||
await this.equipoService
|
||||
.create(
|
||||
carrito,
|
||||
dataEquipo.equipo,
|
||||
dataEquipo.numero_inventario,
|
||||
dataEquipo.numero_serie,
|
||||
marca,
|
||||
modelo,
|
||||
)
|
||||
.then(async (equipo) => {
|
||||
const entradas = dataEquipo.entradas.split(',');
|
||||
const programas = dataEquipo.programas
|
||||
? dataEquipo.programas.split(',')
|
||||
: [];
|
||||
|
||||
const entradas = dataEquipo.entradas.split(',');
|
||||
const programas = dataEquipo.programas
|
||||
? dataEquipo.programas.split(',')
|
||||
: [];
|
||||
equipo.programas = [];
|
||||
equipo.tiposEntradas = [];
|
||||
for (let j = 0; j < entradas.length; j++) {
|
||||
const tipoEntrada =
|
||||
await this.institucionTipoEntradaService.findTipoEntradaByTipoEntrada(
|
||||
entradas[j].trim(),
|
||||
false,
|
||||
);
|
||||
const existeEquipoTipoEntrada = tipoEntrada
|
||||
? await this.equipoTipoEntradaService.informacionEquipoTipoEntrada(
|
||||
equipo.id_equipo,
|
||||
tipoEntrada.id_tipo_entrada,
|
||||
)
|
||||
: null;
|
||||
|
||||
equipo.programas = [];
|
||||
equipo.tiposEntradas = [];
|
||||
for (let j = 0; j < entradas.length; j++) {
|
||||
const tipoEntrada =
|
||||
await this.institucionTipoEntradaService.findTipoEntradaByTipoEntrada(
|
||||
entradas[j].trim(),
|
||||
false,
|
||||
);
|
||||
const existeEquipoTipoEntrada = tipoEntrada
|
||||
? await this.equipoTipoEntradaService.findEquipoTipoEntradaByEquipoTipoEntrada(
|
||||
equipo,
|
||||
tipoEntrada,
|
||||
false,
|
||||
)
|
||||
: null;
|
||||
if (!tipoEntrada || existeEquipoTipoEntrada) {
|
||||
if (!tipoEntrada)
|
||||
errores.push(
|
||||
`No se asignó el conector: ${
|
||||
entradas[j]
|
||||
}, al equipo de la linea ${
|
||||
index + 2
|
||||
} porque no existe este conector.`,
|
||||
);
|
||||
if (existeEquipoTipoEntrada)
|
||||
errores.push(
|
||||
`El conector: ${
|
||||
entradas[j]
|
||||
}, ya fue asignado al equipo de la linea ${index + 2}.`,
|
||||
);
|
||||
continue;
|
||||
}
|
||||
await this.equipoTipoEntradaService
|
||||
.createCargaMasiva(equipo, tipoEntrada)
|
||||
.then((res) => {
|
||||
equipo.tiposEntradas.push(res.equipoTipoEntrada);
|
||||
mensajes.push(res.message);
|
||||
});
|
||||
}
|
||||
for (let j = 0; j < programas.length; j++) {
|
||||
const programa =
|
||||
await this.institucionProgramaService.findProgramaByPrograma(
|
||||
programas[j].trim(),
|
||||
false,
|
||||
);
|
||||
const existeEquipoPrograma = programa
|
||||
? await this.equipoProgramaService.informacionEquipoPrograma(
|
||||
equipo.id_equipo,
|
||||
programa.id_programa,
|
||||
)
|
||||
: null;
|
||||
|
||||
if (!tipoEntrada || existeEquipoTipoEntrada) {
|
||||
if (!tipoEntrada)
|
||||
errores.push(
|
||||
`No se asignó el conector: ${
|
||||
entradas[j]
|
||||
}, al equipo de la linea ${
|
||||
index + 2
|
||||
} porque no existe este conector.`,
|
||||
);
|
||||
if (existeEquipoTipoEntrada)
|
||||
errores.push(
|
||||
`El conector: ${
|
||||
entradas[j]
|
||||
}, ya fue asignado al equipo de la linea ${index + 2}.`,
|
||||
);
|
||||
continue;
|
||||
}
|
||||
await this.equipoTipoEntradaService
|
||||
.create(equipo, tipoEntrada)
|
||||
.then((res) => {
|
||||
equipo.tiposEntradas.push(res.equipoTipoEntrada);
|
||||
mensajes.push(res.message);
|
||||
});
|
||||
}
|
||||
for (let j = 0; j < programas.length; j++) {
|
||||
const programa =
|
||||
await this.institucionProgramaService.findProgramaByPrograma(
|
||||
programas[j].trim(),
|
||||
false,
|
||||
);
|
||||
const existeEquipoPrograma = programa
|
||||
? await this.equipoProgramaService.findEquipoProgramaByEquipoPrograma(
|
||||
equipo,
|
||||
programa,
|
||||
false,
|
||||
)
|
||||
: null;
|
||||
|
||||
if (!programa || existeEquipoPrograma) {
|
||||
if (!programa)
|
||||
errores.push(
|
||||
`No se asignó el software: ${
|
||||
programas[j]
|
||||
}, al equipo de la linea ${
|
||||
index + 2
|
||||
} porque no existe este software.`,
|
||||
);
|
||||
if (existeEquipoPrograma)
|
||||
errores.push(
|
||||
`El programa: ${
|
||||
programas[j]
|
||||
}, ya lo tiene asignado el equipo de la linea ${index + 2}.`,
|
||||
);
|
||||
continue;
|
||||
}
|
||||
await this.equipoProgramaService
|
||||
.create(equipo, programa)
|
||||
.then((res) => {
|
||||
equipo.programas.push(res.equipoPrograma);
|
||||
mensajes.push(res.message);
|
||||
});
|
||||
}
|
||||
equiposNuevos.push(equipo);
|
||||
if (!programa || existeEquipoPrograma) {
|
||||
if (!programa)
|
||||
errores.push(
|
||||
`No se asignó el software: ${
|
||||
programas[j]
|
||||
}, al equipo de la linea ${
|
||||
index + 2
|
||||
} porque no existe este software.`,
|
||||
);
|
||||
if (existeEquipoPrograma)
|
||||
errores.push(
|
||||
`El programa: ${
|
||||
programas[j]
|
||||
}, ya lo tiene asignado el equipo de la linea ${index + 2}.`,
|
||||
);
|
||||
continue;
|
||||
}
|
||||
await this.equipoProgramaService
|
||||
.createCargaMasiva(equipo, programa)
|
||||
.then((res) => {
|
||||
equipo.programas.push(res.equipoPrograma);
|
||||
mensajes.push(res.message);
|
||||
});
|
||||
}
|
||||
equiposNuevos.push(equipo);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { InstitucionCarrera } from '../../../institucion-carrera/entity/institucion-carrera.entity';
|
||||
import { InstitucionUsuario } from '../../../institucion-usuario/entity/institucion-usuario.entity';
|
||||
import { Usuario } from '../usuario.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
dataSource
|
||||
.createQueryBuilder()
|
||||
.select('u.id_usuario', 'id_usuario')
|
||||
.addSelect('u.id_tipo_usuario', 'id_tipo_usuario')
|
||||
.addSelect('u.nombre', 'nombre')
|
||||
.addSelect('u.password', 'password')
|
||||
.addSelect('u.usuario', 'usuario')
|
||||
.addSelect('iu.activo', 'activo')
|
||||
.addSelect('iu.id_institucion_carrera', 'id_institucion_carrera')
|
||||
.addSelect('iu.id_institucion_usuario', 'id_institucion_usuario')
|
||||
.addSelect('iu.multa', 'multa')
|
||||
.addSelect('ic.id_carrera', 'id_carrera')
|
||||
.addSelect('ic.id_institucion', 'id_institucion')
|
||||
.from(Usuario, 'u')
|
||||
.innerJoin(InstitucionUsuario, 'iu', 'iu.id_usuario = u.id_usuario')
|
||||
.innerJoin(
|
||||
InstitucionCarrera,
|
||||
'ic',
|
||||
'ic.id_institucion_carrera = iu.id_institucion_carrera',
|
||||
),
|
||||
})
|
||||
export class InformacionUsuarioView {
|
||||
@ViewColumn()
|
||||
id_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
activo: boolean;
|
||||
|
||||
@ViewColumn()
|
||||
id_carrera: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_carrera: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_tipo_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
multa: boolean;
|
||||
|
||||
@ViewColumn()
|
||||
nombre: string;
|
||||
|
||||
@ViewColumn()
|
||||
password: string;
|
||||
|
||||
@ViewColumn()
|
||||
usuario: string;
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Post,
|
||||
Put,
|
||||
@@ -20,6 +19,7 @@ import {
|
||||
import { Recaptcha } from '@nestlab/google-recaptcha';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { UsuarioService } from './usuario.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { RegistrarUsuarioInputDto } from './dto/input/registrar.dto';
|
||||
import { UpdateUsuarioInputDto } from './dto/input/update.dto';
|
||||
@@ -31,10 +31,13 @@ import { UsuariosOutputDto } from './dto/output/usuarios.dto';
|
||||
@Controller('usuario')
|
||||
@ApiTags('usuario')
|
||||
export class UsuarioController {
|
||||
constructor(private usuarioService: UsuarioService) {}
|
||||
constructor(
|
||||
private usuarioService: UsuarioService,
|
||||
private validarUsuarioService: ValidarUsuarioService,
|
||||
) {}
|
||||
|
||||
@Post('registrar')
|
||||
// @Recaptcha()
|
||||
@Recaptcha()
|
||||
@ApiOperation({
|
||||
description: 'Enpoint que realiza el registro de un usuario.',
|
||||
})
|
||||
@@ -77,14 +80,7 @@ export class UsuarioController {
|
||||
update(@Request() req, @Body() body: UpdateUsuarioInputDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(admin);
|
||||
return this.usuarioService.update(body);
|
||||
}
|
||||
|
||||
@@ -101,14 +97,7 @@ export class UsuarioController {
|
||||
passwordResset(@Request() req, @Body() body: UpdateUsuarioInputDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(admin);
|
||||
return this.usuarioService.passwordReset(body.id_usuario);
|
||||
}
|
||||
|
||||
@@ -127,14 +116,7 @@ export class UsuarioController {
|
||||
usuario(@Request() req, @Query() query: UsuarioInputDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarAdminOperador(admin);
|
||||
return this.usuarioService.findByUsuario(query.usuario, true, true);
|
||||
}
|
||||
|
||||
@@ -184,15 +166,7 @@ export class UsuarioController {
|
||||
usuarios(@Request() req, @Query() query: UsuariosInputDto) {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
this.validarUsuarioService.validarOperador(operador);
|
||||
return this.usuarioService.findAll(query);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { UsuarioController } from './usuario.controller';
|
||||
import { UsuarioService } from './usuario.service';
|
||||
import { Usuario } from './entity/usuario.entity';
|
||||
import { InformacionUsuarioView } from './entity/views/informacion-usuario.view';
|
||||
import { BcryptModule } from '../bcrypt/bcrypt.module';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { InstitucionCarreraModule } from '../institucion-carrera/institucion-carrera.module';
|
||||
import { InstitucionUsuarioModule } from '../institucion-usuario/institucion-usuario.module';
|
||||
import { NodemailerModule } from '../nodemailer/nodemailer.module';
|
||||
import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -20,7 +22,8 @@ import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
NodemailerModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TipoUsuarioModule,
|
||||
TypeOrmModule.forFeature([Usuario]),
|
||||
TypeOrmModule.forFeature([Usuario, InformacionUsuarioView]),
|
||||
ValidarUsuarioModule,
|
||||
],
|
||||
controllers: [UsuarioController],
|
||||
providers: [UsuarioService],
|
||||
|
||||
@@ -8,6 +8,7 @@ import { Repository } from 'typeorm';
|
||||
import { InstitucionCarrera } from '../institucion-carrera/entity/institucion-carrera.entity';
|
||||
import { TipoUsuario } from '../tipo-usuario/entity/tipo-usuario.entity';
|
||||
import { Usuario } from './entity/usuario.entity';
|
||||
import { InformacionUsuarioView } from './entity/views/informacion-usuario.view';
|
||||
import { BcryptService } from '../bcrypt/bcrypt.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { InstitucionCarreraService } from '../institucion-carrera/institucion-carrera.service';
|
||||
@@ -19,6 +20,8 @@ import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service';
|
||||
export class UsuarioService {
|
||||
constructor(
|
||||
@InjectRepository(Usuario) private repository: Repository<Usuario>,
|
||||
@InjectRepository(InformacionUsuarioView)
|
||||
private informacionUsuarioView: Repository<InformacionUsuarioView>,
|
||||
private bcryptService: BcryptService,
|
||||
private institucionService: InstitucionService,
|
||||
private institucionCarreraService: InstitucionCarreraService,
|
||||
@@ -128,7 +131,7 @@ export class UsuarioService {
|
||||
});
|
||||
}
|
||||
|
||||
findByUsuario(
|
||||
async findByUsuario(
|
||||
usuario: string,
|
||||
validarNoExiste = true,
|
||||
password = false,
|
||||
@@ -154,6 +157,43 @@ export class UsuarioService {
|
||||
});
|
||||
}
|
||||
|
||||
informacionUsuarioByUsuario(usuario: string) {
|
||||
return this.informacionUsuarioView
|
||||
.find({ where: { usuario } })
|
||||
.then((data) => {
|
||||
const instituciones: {
|
||||
id_institucion_usuario: number;
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: number;
|
||||
institucion: { id_institucion: number };
|
||||
carrera: { id_carrera: number };
|
||||
};
|
||||
}[] = [];
|
||||
|
||||
if (data.length === 0) return { usuario: null, password: null };
|
||||
for (let i = 0; i < data.length; i++)
|
||||
if (data[i].activo && !data[i].multa)
|
||||
instituciones.push({
|
||||
id_institucion_usuario: data[i].id_institucion_usuario,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: data[i].id_institucion_carrera,
|
||||
institucion: { id_institucion: data[i].id_institucion },
|
||||
carrera: { id_carrera: data[i].id_carrera },
|
||||
},
|
||||
});
|
||||
return {
|
||||
usuario: {
|
||||
id_usuario: data[0].id_usuario,
|
||||
nombre: data[0].nombre,
|
||||
usuario: data[0].usuario,
|
||||
instituciones,
|
||||
tipoUsuario: { id_tipo_usuario: data[0].id_tipo_usuario },
|
||||
},
|
||||
password: data[0].password,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
passwordReset(id_usuario: number) {
|
||||
const password = this.bcryptService.generarPassword();
|
||||
|
||||
@@ -164,7 +204,7 @@ export class UsuarioService {
|
||||
})
|
||||
.then((usuario) =>
|
||||
this.nodemailerService.sendEmail({
|
||||
email: `${usuario.usuario}@pcpuma.acatlan.unam.mx`,
|
||||
email: usuario.correo,
|
||||
subject: 'Credenciales Pc Puma',
|
||||
html: this.nodemailerService.correoPasswordUsuario(password),
|
||||
}),
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { ValidarUsuarioService } from './validar-usuario.service';
|
||||
|
||||
@Module({
|
||||
providers: [ValidarUsuarioService],
|
||||
exports: [ValidarUsuarioService],
|
||||
})
|
||||
export class ValidarUsuarioModule {}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { ValidarUsuarioService } from './validar-usuario.service';
|
||||
|
||||
describe('ValidarUsuarioService', () => {
|
||||
let service: ValidarUsuarioService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [ValidarUsuarioService],
|
||||
}).compile();
|
||||
|
||||
service = module.get<ValidarUsuarioService>(ValidarUsuarioService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,53 @@
|
||||
import { ForbiddenException, Injectable } from '@nestjs/common';
|
||||
import { Operador } from 'src/operador/entity/operador.entity';
|
||||
import { Usuario } from 'src/usuario/entity/usuario.entity';
|
||||
|
||||
@Injectable()
|
||||
export class ValidarUsuarioService {
|
||||
validarUsuario(usuario: Usuario) {
|
||||
if (!usuario) this.sinPermisos();
|
||||
}
|
||||
|
||||
validarAdmin(admin: Operador) {
|
||||
if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) this.sinPermisos();
|
||||
}
|
||||
|
||||
validarAdminOperador(admin: Operador) {
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
this.sinPermisos();
|
||||
}
|
||||
|
||||
validarOperador(operador: Operador) {
|
||||
if (
|
||||
!operador ||
|
||||
(operador.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 4)
|
||||
)
|
||||
this.sinPermisos();
|
||||
}
|
||||
|
||||
validarSuperAdmin(superAdmin: Operador) {
|
||||
if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2)
|
||||
this.sinPermisos();
|
||||
}
|
||||
|
||||
validarSuperAdminAdmin(admin: Operador) {
|
||||
if (
|
||||
!admin ||
|
||||
(admin.tipoUsuario.id_tipo_usuario != 2 &&
|
||||
admin.tipoUsuario.id_tipo_usuario != 3)
|
||||
)
|
||||
this.sinPermisos();
|
||||
}
|
||||
|
||||
sinPermisos() {
|
||||
throw new ForbiddenException(
|
||||
'No tienes los permisos necesarios para realizar esta acción.',
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
numero_cuenta,nombres,apellido_p,apellido_m,carrera,tipo_usuario,rfc
|
||||
316313528,LEMUEL HELON,MARQUEZ,ROSAS,MATEMATICAS APLICADAS Y COMPUTACION,Alumno,
|
||||
316019251,MARCO ANTONIO,ROMERO,VAZQUEZ,ACTUARIA,Alumno,
|
||||
316304326,JEREMY,CARRERA,SERRANO,ARQUITECTURA,Alumno,
|
||||
419085500,ANDRES HERNAN,SAAVEDRA,TREJO,,Profesor,KDIE993388EOX
|
||||
numero_cuenta,nombres,apellido_p,apellido_m,carrera,tipo_usuario,rfc,correo
|
||||
316313528,LEMUEL HELON,MARQUEZ,ROSAS,MATEMATICAS APLICADAS Y COMPUTACION,Alumno,,
|
||||
316019251,MARCO ANTONIO,ROMERO,VAZQUEZ,ACTUARIA,Alumno,,
|
||||
316304326,JEREMY,CARRERA,SERRANO,ARQUITECTURA,Alumno,,
|
||||
419085500,ANDRES HERNAN,SAAVEDRA,TREJO,,Profesor,KDIE993388EOX,
|
||||
|
||||
|
Reference in New Issue
Block a user