added operations and EP abonoKiosco

This commit is contained in:
2025-10-20 14:13:16 -06:00
parent 2dc90a4ac8
commit ef4d20bfb7
17 changed files with 144 additions and 14 deletions
+2
View File
@@ -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],
@@ -0,0 +1,9 @@
import { IsNumber } from 'class-validator';
export class abonoKioscoDto {
@IsNumber()
monto: number;
@IsNumber()
idKiosco: number;
}
@@ -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>(OperationsController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});
+16
View File
@@ -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);
}
}
+13
View File
@@ -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 {}
+18
View File
@@ -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>(OperationsService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});
+40
View File
@@ -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;
}
}
+18 -1
View File
@@ -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;
}
@@ -1,4 +0,0 @@
import { PartialType } from '@nestjs/mapped-types';
import { CreatePagoKioscoDto } from './create-pago-kiosco.dto';
export class UpdatePagoKioscoDto extends PartialType(CreatePagoKioscoDto) {}
@@ -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 {
+1
View File
@@ -8,5 +8,6 @@ import { PagoKiosco } from './entities/pago-kiosco.entity';
imports: [TypeOrmModule.forFeature([PagoKiosco])],
controllers: [PagoKioscoController],
providers: [PagoKioscoService],
exports: [PagoKioscoService],
})
export class PagoKioscoModule {}
-1
View File
@@ -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';
-1
View File
@@ -62,7 +62,6 @@ export class PersonaController {
@Get('saldo')
async saldo(@Req() req) {
const idPersona = req.user.idPersona;
return this.personaService.saldo(idPersona);
}
}
+1
View File
@@ -27,5 +27,6 @@ import { JwtStrategy } from './jwt.strategy';
],
controllers: [PersonaController],
providers: [PersonaService, GoogleStrategy, JwtStrategy],
exports: [PersonaService],
})
export class PersonaModule {}
+3 -3
View File
@@ -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
+1
View File
@@ -8,5 +8,6 @@ import { Transaccion } from './entities/transaccion.entity';
imports: [TypeOrmModule.forFeature([Transaccion])],
controllers: [TransaccionController],
providers: [TransaccionService],
exports: [TransaccionService],
})
export class TransaccionModule {}
+2 -3
View File
@@ -15,10 +15,9 @@ export class TransaccionService {
return await this.transaccionRepository.find();
}
async create(createTransaccion: CreateTransaccionDto) {
async create(createTransaccion: CreateTransaccionDto): Promise<Transaccion> {
const create = this.transaccionRepository.create(createTransaccion);
await this.transaccionRepository.save(create);
return 'success';
return await this.transaccionRepository.save(create);
}
}
//IO