import { Injectable } 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'; @Injectable() export class OperationsService { constructor( private readonly transaccionService: TransaccionService, private readonly pagoKioscoService: PagoKioscoService, private readonly personaService: PersonaService, private readonly pagoPatronatoService: PagoPatronatoService, ) {} async depositKiosco( { cantidad, idKiosco, transaccion }, idPersona: number, token: string, ) { const today = new Date().toString(); const transaction = { nombreTransaccion: transaccion, idPersona, fecha: today, tipoTransaccion: 2, }; const responseTransaccion = this.transaccionService.create(transaction); const newSaldo = this.personaService.updateSaldo(idPersona, cantidad); const pagoKiosco = { idTransaccion: (await responseTransaccion).idTransaccion, monto: cantidad, fecha: today, idKiosco, pagoPatronatoCreado: false, }; const pagoK = this.pagoKioscoService.create(pagoKiosco); const pagoP = this.pagoPatronatoService.findById( (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}`, }, }, ); if (res.status !== 200) { throw new Error('Error al registrar crédito en API externa'); } return newSaldo; } }