From ef4d20bfb728460d8e19bb41ce2cb54412d7c9e5 Mon Sep 17 00:00:00 2001 From: IO420 <320154041@pcpuma.acatlan.unam.mx> Date: Mon, 20 Oct 2025 14:13:16 -0600 Subject: [PATCH] added operations and EP abonoKiosco --- src/app.module.ts | 2 + src/operations/dto/create-operation.dto.ts | 9 +++++ src/operations/operations.controller.spec.ts | 20 ++++++++++ src/operations/operations.controller.ts | 16 ++++++++ src/operations/operations.module.ts | 13 ++++++ src/operations/operations.service.spec.ts | 18 +++++++++ src/operations/operations.service.ts | 40 +++++++++++++++++++ src/pago-kiosco/dto/create-pago-kiosco.dto.ts | 19 ++++++++- src/pago-kiosco/dto/update-pago-kiosco.dto.ts | 4 -- src/pago-kiosco/pago-kiosco.controller.ts | 1 - src/pago-kiosco/pago-kiosco.module.ts | 1 + src/pago-kiosco/pago-kiosco.service.ts | 1 - src/persona/persona.controller.ts | 1 - src/persona/persona.module.ts | 1 + src/persona/persona.service.ts | 6 +-- src/transaccion/transaccion.module.ts | 1 + src/transaccion/transaccion.service.ts | 5 +-- 17 files changed, 144 insertions(+), 14 deletions(-) create mode 100644 src/operations/dto/create-operation.dto.ts create mode 100644 src/operations/operations.controller.spec.ts create mode 100644 src/operations/operations.controller.ts create mode 100644 src/operations/operations.module.ts create mode 100644 src/operations/operations.service.spec.ts create mode 100644 src/operations/operations.service.ts delete mode 100644 src/pago-kiosco/dto/update-pago-kiosco.dto.ts diff --git a/src/app.module.ts b/src/app.module.ts index 2b190fa..3a34895 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -8,6 +8,7 @@ import { TransaccionModule } from './transaccion/transaccion.module'; import { AbonoTicketModule } from './abono-ticket/abono-ticket.module'; import { PagoKioscoModule } from './pago-kiosco/pago-kiosco.module'; import { KioscoModule } from './kiosco/kiosco.module'; +import { OperationsModule } from './operations/operations.module'; @Module({ imports: [ @@ -34,6 +35,7 @@ import { KioscoModule } from './kiosco/kiosco.module'; AbonoTicketModule, PagoKioscoModule, KioscoModule, + OperationsModule, ], controllers: [AppController], providers: [AppService], diff --git a/src/operations/dto/create-operation.dto.ts b/src/operations/dto/create-operation.dto.ts new file mode 100644 index 0000000..7fc5281 --- /dev/null +++ b/src/operations/dto/create-operation.dto.ts @@ -0,0 +1,9 @@ +import { IsNumber } from 'class-validator'; + +export class abonoKioscoDto { + @IsNumber() + monto: number; + + @IsNumber() + idKiosco: number; +} diff --git a/src/operations/operations.controller.spec.ts b/src/operations/operations.controller.spec.ts new file mode 100644 index 0000000..bbf50ba --- /dev/null +++ b/src/operations/operations.controller.spec.ts @@ -0,0 +1,20 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { OperationsController } from './operations.controller'; +import { OperationsService } from './operations.service'; + +describe('OperationsController', () => { + let controller: OperationsController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [OperationsController], + providers: [OperationsService], + }).compile(); + + controller = module.get(OperationsController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/src/operations/operations.controller.ts b/src/operations/operations.controller.ts new file mode 100644 index 0000000..e24c863 --- /dev/null +++ b/src/operations/operations.controller.ts @@ -0,0 +1,16 @@ +import { Controller, Post, Body, UseGuards, Req } from '@nestjs/common'; +import { OperationsService } from './operations.service'; +import { abonoKioscoDto } from './dto/create-operation.dto'; +import { JwtAuthGuard } from 'src/persona/jwt.guard'; + +@Controller('operations') +export class OperationsController { + constructor(private readonly operationsService: OperationsService) {} + + @UseGuards(JwtAuthGuard) + @Post('abonoKiosco') + depositKiosco(@Body() abonoKiosco: abonoKioscoDto, @Req() req) { + const idPersona = req.user.idPersona; + return this.operationsService.depositKiosco(abonoKiosco, idPersona); + } +} diff --git a/src/operations/operations.module.ts b/src/operations/operations.module.ts new file mode 100644 index 0000000..8352d2a --- /dev/null +++ b/src/operations/operations.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; +import { OperationsService } from './operations.service'; +import { OperationsController } from './operations.controller'; +import { TransaccionModule } from 'src/transaccion/transaccion.module'; +import { PagoKioscoModule } from 'src/pago-kiosco/pago-kiosco.module'; +import { PersonaModule } from 'src/persona/persona.module'; + +@Module({ + imports: [TransaccionModule, PagoKioscoModule, PersonaModule], + controllers: [OperationsController], + providers: [OperationsService], +}) +export class OperationsModule {} diff --git a/src/operations/operations.service.spec.ts b/src/operations/operations.service.spec.ts new file mode 100644 index 0000000..c54624c --- /dev/null +++ b/src/operations/operations.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { OperationsService } from './operations.service'; + +describe('OperationsService', () => { + let service: OperationsService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [OperationsService], + }).compile(); + + service = module.get(OperationsService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/src/operations/operations.service.ts b/src/operations/operations.service.ts new file mode 100644 index 0000000..e117e2f --- /dev/null +++ b/src/operations/operations.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@nestjs/common'; +import { PagoKioscoService } from 'src/pago-kiosco/pago-kiosco.service'; +import { PersonaService } from 'src/persona/persona.service'; +import { TransaccionService } from 'src/transaccion/transaccion.service'; + +@Injectable() +export class OperationsService { + constructor( + private readonly transaccionService: TransaccionService, + private readonly pagoKioscoService: PagoKioscoService, + private readonly personaService: PersonaService, + ) {} + + async depositKiosco({ monto, idKiosco }, idPersona: number) { + const today = new Date().toString(); + + const transaccion = { + idNombreTransaccion: 1, + idPersona, + fecha: today, + tipoTransaccion: 2, + }; + + const responseTransaccion = this.transaccionService.create(transaccion); + + const pagoKiosco = { + idTransaccion: (await responseTransaccion).idTransaccion, + monto, + fecha: today, + idKiosco, + pagoPatronatoCreado: false, + }; + + this.pagoKioscoService.create(pagoKiosco); + + const newSaldo = this.personaService.updateSaldo(idPersona, monto); + + return newSaldo; + } +} diff --git a/src/pago-kiosco/dto/create-pago-kiosco.dto.ts b/src/pago-kiosco/dto/create-pago-kiosco.dto.ts index a25ce20..4d6fe68 100644 --- a/src/pago-kiosco/dto/create-pago-kiosco.dto.ts +++ b/src/pago-kiosco/dto/create-pago-kiosco.dto.ts @@ -1 +1,18 @@ -export class CreatePagoKioscoDto {} +import { IsBoolean, IsDateString, IsNumber } from 'class-validator'; + +export class CreatePagoKioscoDto { + @IsNumber() + idTransaccion: number; + + @IsNumber() + monto: number; + + @IsDateString() + fecha: string; + + @IsNumber() + idKiosco: number; + + @IsBoolean() + pagoPatronatoCreado: boolean; +} diff --git a/src/pago-kiosco/dto/update-pago-kiosco.dto.ts b/src/pago-kiosco/dto/update-pago-kiosco.dto.ts deleted file mode 100644 index fedbaa3..0000000 --- a/src/pago-kiosco/dto/update-pago-kiosco.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreatePagoKioscoDto } from './create-pago-kiosco.dto'; - -export class UpdatePagoKioscoDto extends PartialType(CreatePagoKioscoDto) {} diff --git a/src/pago-kiosco/pago-kiosco.controller.ts b/src/pago-kiosco/pago-kiosco.controller.ts index c606c12..2fa6337 100644 --- a/src/pago-kiosco/pago-kiosco.controller.ts +++ b/src/pago-kiosco/pago-kiosco.controller.ts @@ -9,7 +9,6 @@ import { } from '@nestjs/common'; import { PagoKioscoService } from './pago-kiosco.service'; import { CreatePagoKioscoDto } from './dto/create-pago-kiosco.dto'; -import { UpdatePagoKioscoDto } from './dto/update-pago-kiosco.dto'; @Controller('pago-kiosco') export class PagoKioscoController { diff --git a/src/pago-kiosco/pago-kiosco.module.ts b/src/pago-kiosco/pago-kiosco.module.ts index 4b18170..38c27e3 100644 --- a/src/pago-kiosco/pago-kiosco.module.ts +++ b/src/pago-kiosco/pago-kiosco.module.ts @@ -8,5 +8,6 @@ import { PagoKiosco } from './entities/pago-kiosco.entity'; imports: [TypeOrmModule.forFeature([PagoKiosco])], controllers: [PagoKioscoController], providers: [PagoKioscoService], + exports: [PagoKioscoService], }) export class PagoKioscoModule {} diff --git a/src/pago-kiosco/pago-kiosco.service.ts b/src/pago-kiosco/pago-kiosco.service.ts index 8bcca7d..3ba9dfc 100644 --- a/src/pago-kiosco/pago-kiosco.service.ts +++ b/src/pago-kiosco/pago-kiosco.service.ts @@ -1,6 +1,5 @@ import { Injectable } from '@nestjs/common'; import { CreatePagoKioscoDto } from './dto/create-pago-kiosco.dto'; -import { UpdatePagoKioscoDto } from './dto/update-pago-kiosco.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { PagoKiosco } from './entities/pago-kiosco.entity'; import { Repository } from 'typeorm'; diff --git a/src/persona/persona.controller.ts b/src/persona/persona.controller.ts index 4ad2ee0..ded93c5 100644 --- a/src/persona/persona.controller.ts +++ b/src/persona/persona.controller.ts @@ -62,7 +62,6 @@ export class PersonaController { @Get('saldo') async saldo(@Req() req) { const idPersona = req.user.idPersona; - return this.personaService.saldo(idPersona); } } diff --git a/src/persona/persona.module.ts b/src/persona/persona.module.ts index 40703ad..87168b0 100644 --- a/src/persona/persona.module.ts +++ b/src/persona/persona.module.ts @@ -27,5 +27,6 @@ import { JwtStrategy } from './jwt.strategy'; ], controllers: [PersonaController], providers: [PersonaService, GoogleStrategy, JwtStrategy], + exports: [PersonaService], }) export class PersonaModule {} diff --git a/src/persona/persona.service.ts b/src/persona/persona.service.ts index 7341930..98f2cc5 100644 --- a/src/persona/persona.service.ts +++ b/src/persona/persona.service.ts @@ -99,11 +99,11 @@ export class PersonaService { async updateSaldo(idPersona: number, monto: number) { const persona = await this.findById(idPersona); - const nuevoSaldo = (persona.cantidadCuenta || 0) + monto; + const newSaldo = (persona.cantidadCuenta || 0) + monto; await this.personaRepository.update(idPersona, { - cantidadCuenta: nuevoSaldo, + cantidadCuenta: newSaldo, }); - return { statusCode: 200, message: `tu saldo es ${nuevoSaldo}` }; + return newSaldo; } } //IO diff --git a/src/transaccion/transaccion.module.ts b/src/transaccion/transaccion.module.ts index bca7b7a..6651ad3 100644 --- a/src/transaccion/transaccion.module.ts +++ b/src/transaccion/transaccion.module.ts @@ -8,5 +8,6 @@ import { Transaccion } from './entities/transaccion.entity'; imports: [TypeOrmModule.forFeature([Transaccion])], controllers: [TransaccionController], providers: [TransaccionService], + exports: [TransaccionService], }) export class TransaccionModule {} diff --git a/src/transaccion/transaccion.service.ts b/src/transaccion/transaccion.service.ts index 2438fc4..f3f7bae 100644 --- a/src/transaccion/transaccion.service.ts +++ b/src/transaccion/transaccion.service.ts @@ -15,10 +15,9 @@ export class TransaccionService { return await this.transaccionRepository.find(); } - async create(createTransaccion: CreateTransaccionDto) { + async create(createTransaccion: CreateTransaccionDto): Promise { const create = this.transaccionRepository.create(createTransaccion); - await this.transaccionRepository.save(create); - return 'success'; + return await this.transaccionRepository.save(create); } } //IO