diff --git a/src/main.ts b/src/main.ts index 0e19a92..5d3465e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,6 +8,6 @@ async function bootstrap() { app.useGlobalPipes(new ValidationPipe()); await app.listen(process.env.PORT ?? 3000); - console.log(`successfully connected at the port ${process.env.PORT}`); + console.log(`successfully connected at the port ${process.env.PORT ?? 3000}`); } bootstrap(); diff --git a/src/operations/operations.controller.ts b/src/operations/operations.controller.ts index 8b4472b..e24c863 100644 --- a/src/operations/operations.controller.ts +++ b/src/operations/operations.controller.ts @@ -11,7 +11,6 @@ export class OperationsController { @Post('abonoKiosco') depositKiosco(@Body() abonoKiosco: abonoKioscoDto, @Req() req) { const idPersona = req.user.idPersona; - const token = req.headers.authorization?.split(' ')[1]; - return this.operationsService.depositKiosco(abonoKiosco, idPersona, token); + return this.operationsService.depositKiosco(abonoKiosco, idPersona); } } diff --git a/src/operations/operations.service.ts b/src/operations/operations.service.ts index a8a7c4b..9852054 100644 --- a/src/operations/operations.service.ts +++ b/src/operations/operations.service.ts @@ -1,8 +1,6 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, InternalServerErrorException } from '@nestjs/common'; import axios from 'axios'; -import { AbonoTicketService } from 'src/abono-ticket/abono-ticket.service'; import { PagoKioscoService } from 'src/pago-kiosco/pago-kiosco.service'; -import { PagoPatronato } from 'src/pago-patronato/entities/pago-patronato.entity'; import { PagoPatronatoService } from 'src/pago-patronato/pago-patronato.service'; import { PersonaService } from 'src/persona/persona.service'; import { TransaccionService } from 'src/transaccion/transaccion.service'; @@ -16,11 +14,39 @@ export class OperationsService { private readonly pagoPatronatoService: PagoPatronatoService, ) {} - async depositKiosco( - { cantidad, idKiosco, transaccion }, - idPersona: number, - token: string, - ) { + async login() { + try { + const response = await axios.post(`${process.env.API_AT_URL}/user`, { + usuario: process.env.USER, + password: process.env.PASS, + }); + + return response.data.access_token; + } catch (error) { + throw new InternalServerErrorException( + 'Error al autenticar con API externa', + ); + } + } + + async addCredit(token: string, data: any) { + try { + const response = await axios.post( + `${process.env.API_AT_URL}/operations/receipt`, + data, + { + headers: { Authorization: `Bearer ${token}` }, + }, + ); + return response.data; + } catch (error) { + throw new InternalServerErrorException( + 'Error al registrar crédito en API externa', + ); + } + } + + async depositKiosco({ cantidad, idKiosco, transaccion }, idPersona: number) { const today = new Date().toString(); const transaction = { @@ -48,24 +74,14 @@ export class OperationsService { (await pagoK).idPagoKiosco, ); - const res = await axios.post( - `${process.env.API_AT_URL}/operations/receipt`, - { - id_cuenta: idPersona, - monto: cantidad, - fecha_recibo: today, - folio_recibo: (await pagoP)?.folio, - }, - { - headers: { - Authorization: `Bearer ${token}`, - }, - }, - ); + const token = await this.login(); - if (res.status !== 200) { - throw new Error('Error al registrar crédito en API externa'); - } + await this.addCredit(token, { + id_cuenta: idPersona, + monto: cantidad, + fecha_recibo: today, + folio_recibo: (await pagoP)?.folio, + }); return newSaldo; }