From 07a66825b83b3c63ecc960f4e893d28d594b227f Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Mon, 19 Dec 2022 17:33:39 -0600 Subject: [PATCH] carrito motivo service final --- .../carrito-motivo.controller.ts | 40 ++++++++------- src/carrito-motivo/carrito-motivo.module.ts | 2 +- src/carrito-motivo/carrito-motivo.service.ts | 50 +++++++++++++------ 3 files changed, 56 insertions(+), 36 deletions(-) diff --git a/src/carrito-motivo/carrito-motivo.controller.ts b/src/carrito-motivo/carrito-motivo.controller.ts index 2c11647..2008983 100644 --- a/src/carrito-motivo/carrito-motivo.controller.ts +++ b/src/carrito-motivo/carrito-motivo.controller.ts @@ -45,29 +45,31 @@ export class CarritoMotivoController { this.validarUsuarioService.validarAdminOperador(operador); return this.carritoMotivoService.findAllByIdCarrito( + operador, parseInt(query.id_carrito), parseInt(query.pagina), ); } - // @Serealize(CarritoMotivoOutputDto) - // @Get('reporte') - // @UseGuards(AuthGuard('jwt')) - // @ApiOperation({ - // description: 'Reporte de los cambios de status de un carrito.', - // }) - // @ApiBearerAuth('jwt') - // @ApiQuery({ - // description: 'Id del carrito.', - // name: 'id_carrito', - // type: 'string', - // }) - // reporte(@Request() req, @Query() query: CarritoDto) { - // const operador: Operador = req.user.operador; + @Serealize(CarritoMotivoOutputDto) + @Get('reporte') + @UseGuards(AuthGuard('jwt')) + @ApiOperation({ + description: 'Reporte de todos los cambios de status de un carrito.', + }) + @ApiBearerAuth('jwt') + @ApiQuery({ + description: 'Id del carrito.', + name: 'id_carrito', + type: 'string', + }) + reporte(@Request() req, @Query() query: CarritoDto) { + const admin: Operador = req.user.operador; - // this.validarUsuarioService.validarAdminOperador(operador); - // return this.carritoMotivoService.findAllByIdCarrito( - // parseInt(query.id_carrito), - // ); - // } + this.validarUsuarioService.validarAdmin(admin); + return this.carritoMotivoService.findAllByIdCarrito( + admin, + parseInt(query.id_carrito), + ); + } } diff --git a/src/carrito-motivo/carrito-motivo.module.ts b/src/carrito-motivo/carrito-motivo.module.ts index aaaf5ab..b288770 100644 --- a/src/carrito-motivo/carrito-motivo.module.ts +++ b/src/carrito-motivo/carrito-motivo.module.ts @@ -10,8 +10,8 @@ import { StatusModule } from '../status/status.module'; @Module({ imports: [ forwardRef(() => CarritoModule), - StatusModule, PassportModule.register({ defaultStrategy: 'jwt' }), + StatusModule, TypeOrmModule.forFeature([CarritoMotivo]), ], controllers: [CarritoMotivoController], diff --git a/src/carrito-motivo/carrito-motivo.service.ts b/src/carrito-motivo/carrito-motivo.service.ts index c0c2563..ebb7687 100644 --- a/src/carrito-motivo/carrito-motivo.service.ts +++ b/src/carrito-motivo/carrito-motivo.service.ts @@ -1,7 +1,12 @@ import * as moment from 'moment'; -import { forwardRef, Inject, Injectable } from '@nestjs/common'; +import { + ForbiddenException, + forwardRef, + Inject, + Injectable, +} from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; +import { FindManyOptions, Repository } from 'typeorm'; import { Carrito } from '../carrito/entity/carrito.entity'; import { CarritoMotivo } from './entity/carrito-motivo.entity'; import { Operador } from '../operador/entity/operador.entity'; @@ -22,27 +27,40 @@ export class CarritoMotivoService { status: boolean, motivo: string, laboratorioMovil: boolean, - ) { - // Creo y gurado registro + ): Promise { + // Cramos y guardamos registro return this.repository.save( this.repository.create({ - carrito, fecha_creacion: moment().toDate(), - motivo, - operador, - status, laboratorioMovil, + motivo, + status, + carrito, + operador, }), ); } - findAllByIdCarrito(id_carrito: number, pagina: number) { - return this.carritoService.findById(id_carrito).then((carrito) => - this.repository.findAndCount({ - where: { carrito }, - skip: (pagina - 1) * 25, - take: 25, - }), - ); + async findAllByIdCarrito( + operador: Operador, + id_carrito: number, + pagina?: number, + ): Promise { + const carrito = await this.carritoService.findById(id_carrito); + const options: FindManyOptions = { where: { carrito } }; + + if ( + carrito.modulo.institucion.id_institucion != + operador.institucion.id_institucion + ) + throw new ForbiddenException( + 'No puedes acceder a esta información porque no le pertenece a tu institución.', + ); + // Si se mandó página significa que quiere paginación + if (pagina) { + options.skip = (pagina - 1) * 25; + options.take = 25; + return this.repository.findAndCount(options); + } else return this.repository.find(options); } }