diff --git a/src/payments/services/payment-enrollment-validator.service.ts b/src/payments/services/payment-enrollment-validator.service.ts new file mode 100644 index 00000000..a3a48eb1 --- /dev/null +++ b/src/payments/services/payment-enrollment-validator.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Payment } from '../entities/payment.entity'; + +@Injectable() +export class PaymentEnrollmentValidatorService { + constructor( + @InjectRepository(Payment) + private readonly paymentRepo: Repository, + ) {} + + async validateEnrollmentExists(enrollmentId: string): Promise { + if (!enrollmentId) return true; + const result = await this.paymentRepo.query('SELECT id FROM enrollments WHERE id = $1', [ + enrollmentId, + ]); + return result.length > 0; + } + + async findOrphanedPayments(): Promise { + return this.paymentRepo.query( + 'SELECT p.* FROM payments p LEFT JOIN enrollments e ON e.id = p."enrollmentId" WHERE p."enrollmentId" IS NOT NULL AND e.id IS NULL', + ); + } +}