carrito motivo service final

This commit is contained in:
xXpuma99Xx
2022-12-19 17:33:39 -06:00
parent 16200c5acb
commit 07a66825b8
3 changed files with 56 additions and 36 deletions
+21 -19
View File
@@ -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),
);
}
}
+1 -1
View File
@@ -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],
+34 -16
View File
@@ -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<CarritoMotivo> {
// 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<CarritoMotivo[] | [CarritoMotivo[], number]> {
const carrito = await this.carritoService.findById(id_carrito);
const options: FindManyOptions<CarritoMotivo> = { 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);
}
}