"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findByCompany = findByCompany; exports.findByReservation = findByReservation; exports.findByAmanpay = findByAmanpay; exports.findByPaypal = findByPaypal; exports.findByPaypalForCompany = findByPaypalForCompany; exports.findPaymentOrThrow = findPaymentOrThrow; exports.findReservationOrThrow = findReservationOrThrow; exports.findReservation = findReservation; exports.markPaymentSucceeded = markPaymentSucceeded; exports.markPaymentFailed = markPaymentFailed; exports.incrementReservationPaid = incrementReservationPaid; exports.createPayment = createPayment; exports.updatePaypalCapture = updatePaypalCapture; exports.setReservationPaidAmount = setReservationPaidAmount; exports.setReservationRefunded = setReservationRefunded; exports.setPaymentRefunded = setPaymentRefunded; const prisma_1 = require("../../lib/prisma"); function findByCompany(companyId) { return prisma_1.prisma.rentalPayment.findMany({ where: { companyId }, include: { reservation: { include: { customer: true, vehicle: true } } }, orderBy: { createdAt: 'desc' }, take: 100, }); } function findByReservation(reservationId, companyId) { return prisma_1.prisma.rentalPayment.findMany({ where: { reservationId, companyId }, orderBy: { createdAt: 'desc' } }); } function findByAmanpay(transactionId) { return prisma_1.prisma.rentalPayment.findFirst({ where: { amanpayTransactionId: transactionId } }); } function findByPaypal(captureId) { return prisma_1.prisma.rentalPayment.findFirst({ where: { paypalCaptureId: captureId } }); } function findByPaypalForCompany(paypalOrderId, companyId) { return prisma_1.prisma.rentalPayment.findFirstOrThrow({ where: { paypalCaptureId: paypalOrderId, companyId } }); } function findPaymentOrThrow(paymentId, companyId, reservationId) { return prisma_1.prisma.rentalPayment.findFirstOrThrow({ where: { id: paymentId, companyId, reservationId } }); } function findReservationOrThrow(id, companyId) { return prisma_1.prisma.reservation.findFirstOrThrow({ where: { id, companyId }, include: { vehicle: true, customer: true }, }); } function findReservation(id, companyId) { return prisma_1.prisma.reservation.findFirstOrThrow({ where: { id, companyId } }); } function markPaymentSucceeded(id) { return prisma_1.prisma.rentalPayment.update({ where: { id }, data: { status: 'SUCCEEDED', paidAt: new Date() } }); } function markPaymentFailed(query) { return prisma_1.prisma.rentalPayment.updateMany({ where: query, data: { status: 'FAILED' } }); } function incrementReservationPaid(reservationId, amount) { return prisma_1.prisma.reservation.update({ where: { id: reservationId }, data: { paymentStatus: 'PAID', paidAmount: { increment: amount } } }); } function createPayment(data) { return prisma_1.prisma.rentalPayment.create({ data: data }); } function updatePaypalCapture(id, captureId) { return prisma_1.prisma.rentalPayment.update({ where: { id }, data: { status: 'SUCCEEDED', paidAt: new Date(), paypalCaptureId: captureId } }); } function setReservationPaidAmount(reservationId, paidAmount, paymentStatus) { return prisma_1.prisma.reservation.update({ where: { id: reservationId }, data: { paidAmount, paymentStatus: paymentStatus } }); } function setReservationRefunded(reservationId) { return prisma_1.prisma.reservation.update({ where: { id: reservationId }, data: { paymentStatus: 'REFUNDED' } }); } function setPaymentRefunded(id, partial) { return prisma_1.prisma.rentalPayment.update({ where: { id }, data: { status: partial ? 'PARTIALLY_REFUNDED' : 'REFUNDED' } }); } //# sourceMappingURL=payment.repo.js.map