Files
api-monedero-electronico/src/operations/operations.service.ts
T
2025-10-22 18:01:59 -06:00

73 lines
2.0 KiB
TypeScript

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;
}
}