endpoint equipos validados por token
This commit is contained in:
@@ -19,14 +19,6 @@ export class UpdateEquipoDto {
|
||||
@IsOptional()
|
||||
id_carrito?: number;
|
||||
|
||||
// @IsInt()
|
||||
// @IsOptional()
|
||||
// id_marca?: number;
|
||||
|
||||
// @IsInt()
|
||||
// @IsOptional()
|
||||
// id_modelo?: number;
|
||||
|
||||
@IsInt()
|
||||
@IsOptional()
|
||||
id_operador?: number;
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
import { Body, Controller, Get, Put, Query, UseGuards } from '@nestjs/common';
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
ForbiddenException,
|
||||
Get,
|
||||
Put,
|
||||
Query,
|
||||
Request,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import {
|
||||
ApiBearerAuth,
|
||||
@@ -9,6 +18,7 @@ import {
|
||||
} from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { EquipoService } from './equipo.service';
|
||||
import { Operador } from 'src/operador/entity/operador.entity';
|
||||
import { NumeroInventarioDto } from '../dto/numero-inventario.dto';
|
||||
import { EquiposDto } from './dto/input/equipos.dto';
|
||||
import { UpdateEquipoDto } from './dto/input/update.dto';
|
||||
@@ -38,11 +48,33 @@ export class EquipoController {
|
||||
name: 'numero_inventario',
|
||||
type: 'string',
|
||||
})
|
||||
equipo(@Query() query: NumeroInventarioDto) {
|
||||
return this.equipoService.findByNumeroInventario(
|
||||
parseInt(query.id_institucion),
|
||||
query.numero_inventario,
|
||||
);
|
||||
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.',
|
||||
);
|
||||
return this.equipoService
|
||||
.findByNumeroInventario(
|
||||
parseInt(query.id_institucion),
|
||||
query.numero_inventario,
|
||||
)
|
||||
.then((equipo) => {
|
||||
if (
|
||||
operador.tipoUsuario.id_tipo_usuario > 2 &&
|
||||
operador.institucion.id_institucion !=
|
||||
equipo.carrito.modulo.institucion.id_institucion
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No puedes acceder a esta información porque este equipo no pertenece a tu institución.',
|
||||
);
|
||||
return equipo;
|
||||
});
|
||||
}
|
||||
|
||||
@Serealize(EquiposOutputDto)
|
||||
@@ -124,8 +156,18 @@ export class EquipoController {
|
||||
type: 'string',
|
||||
required: false,
|
||||
})
|
||||
equipos(@Query() query: EquiposDto) {
|
||||
return this.equipoService.findAll(query);
|
||||
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.',
|
||||
);
|
||||
return this.equipoService.findAll(operador, query);
|
||||
}
|
||||
|
||||
@Put()
|
||||
@@ -143,8 +185,6 @@ export class EquipoController {
|
||||
id_equipo: 1,
|
||||
_equipo: true,
|
||||
_id_carrito: '',
|
||||
// _id_marca: '',
|
||||
// _id_modelo: '',
|
||||
_id_operador: 1,
|
||||
_id_status: 1,
|
||||
_motivo: '',
|
||||
@@ -152,9 +192,18 @@ export class EquipoController {
|
||||
},
|
||||
},
|
||||
})
|
||||
update(@Body() body: UpdateEquipoDto) {
|
||||
update(@Request() req, @Body() body: UpdateEquipoDto) {
|
||||
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.',
|
||||
);
|
||||
delete data.id_carrito;
|
||||
delete data.id_status;
|
||||
delete data.id_operador;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import {
|
||||
ConflictException,
|
||||
ForbiddenException,
|
||||
forwardRef,
|
||||
Inject,
|
||||
Injectable,
|
||||
@@ -76,20 +77,23 @@ export class EquipoService {
|
||||
.then((_) => equipoNuevo);
|
||||
}
|
||||
|
||||
async findAll(filtros: {
|
||||
pagina: string;
|
||||
carrito?: string;
|
||||
equipo?: string;
|
||||
id_carrito?: string;
|
||||
id_institucion?: string;
|
||||
id_marca?: string;
|
||||
id_modelo?: string;
|
||||
id_modulo?: string;
|
||||
id_programa?: string;
|
||||
id_status?: string;
|
||||
id_tipo_carrito?: string;
|
||||
id_tipo_entrada?: string;
|
||||
}) {
|
||||
async findAll(
|
||||
operador: Operador,
|
||||
filtros: {
|
||||
pagina: string;
|
||||
carrito?: string;
|
||||
equipo?: string;
|
||||
id_carrito?: string;
|
||||
id_institucion?: string;
|
||||
id_marca?: string;
|
||||
id_modelo?: string;
|
||||
id_modulo?: string;
|
||||
id_programa?: string;
|
||||
id_status?: string;
|
||||
id_tipo_carrito?: string;
|
||||
id_tipo_entrada?: string;
|
||||
},
|
||||
) {
|
||||
const carrito = filtros.id_carrito
|
||||
? await this.carritoService.findById(parseInt(filtros.id_carrito))
|
||||
: null;
|
||||
@@ -144,6 +148,31 @@ export class EquipoService {
|
||||
.take(15)
|
||||
.skip((parseInt(filtros.pagina) - 1) * 15);
|
||||
|
||||
if (modulo) {
|
||||
if (
|
||||
operador.tipoUsuario.id_tipo_usuario > 2 &&
|
||||
operador.institucion.id_institucion != modulo.institucion.id_institucion
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No puedes acceder a esta información porque este módulo no pertenece a tu institución.',
|
||||
);
|
||||
query.andWhere('m.id_modulo = :id_modulo', {
|
||||
id_modulo: modulo.id_modulo,
|
||||
});
|
||||
}
|
||||
if (carrito) {
|
||||
if (
|
||||
operador.tipoUsuario.id_tipo_usuario > 2 &&
|
||||
operador.institucion.id_institucion !=
|
||||
carrito.modulo.institucion.id_institucion
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No puedes acceder a esta información porque este carrito no pertenece a tu institución.',
|
||||
);
|
||||
query.andWhere('c.id_carrito = :id_carrito', {
|
||||
id_carrito: carrito.id_carrito,
|
||||
});
|
||||
}
|
||||
if (filtros.carrito)
|
||||
query.andWhere('c.carrito LIKE :carrito', {
|
||||
carrito: `%${filtros.carrito}%`,
|
||||
@@ -152,7 +181,7 @@ export class EquipoService {
|
||||
query.andWhere('e.equipo LIKE :equipo', {
|
||||
equipo: `%${filtros.equipo}%`,
|
||||
});
|
||||
if (institucion)
|
||||
if (institucion && operador.tipoUsuario.id_tipo_usuario === 2)
|
||||
query.andWhere('m.id_institucion = :id_institucion', {
|
||||
id_institucion: institucion.id_institucion,
|
||||
});
|
||||
@@ -164,14 +193,6 @@ export class EquipoService {
|
||||
query.andWhere('mo.id_modelo = :id_modelo', {
|
||||
id_modelo: modelo.id_modelo,
|
||||
});
|
||||
if (modulo)
|
||||
query.andWhere('m.id_modulo = :id_modulo', {
|
||||
id_modulo: modulo.id_modulo,
|
||||
});
|
||||
if (carrito)
|
||||
query.andWhere('c.id_carrito = :id_carrito', {
|
||||
id_carrito: carrito.id_carrito,
|
||||
});
|
||||
if (programa)
|
||||
query.andWhere('ps.id_programa = :id_programa', {
|
||||
id_programa: programa.id_programa,
|
||||
@@ -337,11 +358,10 @@ export class EquipoService {
|
||||
}
|
||||
|
||||
async update(
|
||||
// operador: Operador,
|
||||
attrs: Partial<Equipo>,
|
||||
id_carrito?: number,
|
||||
id_status?: number,
|
||||
// id_marca?: number,
|
||||
// id_modelo?: number,
|
||||
id_operador?: number | Operador,
|
||||
motivo?: string,
|
||||
) {
|
||||
@@ -353,16 +373,6 @@ export class EquipoService {
|
||||
? await this.operadorService.findById(id_operador)
|
||||
: id_operador
|
||||
: null;
|
||||
// const marca = id_marca
|
||||
// ? typeof id_marca === 'number'
|
||||
// ? await this.marcaService.findById(id_marca)
|
||||
// : id_marca
|
||||
// : null;
|
||||
// const operador = id_operador
|
||||
// ? typeof id_operador === 'number'
|
||||
// ? await this.operadorService.findById(id_operador)
|
||||
// : id_operador
|
||||
// : null;
|
||||
const status = id_status
|
||||
? await this.statusService.findById(id_status)
|
||||
: null;
|
||||
@@ -402,8 +412,6 @@ export class EquipoService {
|
||||
equipo.status = status;
|
||||
}
|
||||
if (carrito) equipo.carrito = carrito;
|
||||
// if (marca) equipo.marca = marca;
|
||||
// if (modelo) equipo.modelo = modelo;
|
||||
return this.repository.save(equipo);
|
||||
})
|
||||
.then((equipo) => ({
|
||||
|
||||
Reference in New Issue
Block a user