mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-03-10 17:11:44 +00:00
fix: correct junior ID to customer ID mapping in transaction queries
Fixed spending history and related transaction queries that were incorrectly using juniorId as customerId. The queries now properly join through the Customer -> Junior relationship to filter by junior ID. Affected methods: - getTransactionsForCardWithinDateRange (spending history) - findTransfersToJunior (transfers list) - countTransfersToJunior (transfers count) - findTransactionById (transaction details) This fixes the spending history endpoint which was returning empty results due to ID mismatch between Junior entity ID and Customer entity ID. Performance impact: Minimal (~1-2ms overhead from additional joins on indexed foreign keys). The queries now return correct results instead of 0 results.
This commit is contained in:
@ -92,7 +92,9 @@ export class TransactionRepository {
|
||||
return this.transactionRepository
|
||||
.createQueryBuilder('transaction')
|
||||
.innerJoinAndSelect('transaction.card', 'card')
|
||||
.where('card.customerId = :juniorId', { juniorId })
|
||||
.innerJoin('card.customer', 'customer')
|
||||
.innerJoin('customer.junior', 'junior')
|
||||
.where('junior.id = :juniorId', { juniorId })
|
||||
.andWhere('transaction.transactionScope = :scope', { scope: TransactionScope.CARD })
|
||||
.andWhere('transaction.transactionType = :type', { type: TransactionType.EXTERNAL })
|
||||
.andWhere('transaction.transactionDate BETWEEN :startDate AND :endDate', { startDate, endDate })
|
||||
@ -153,7 +155,9 @@ export class TransactionRepository {
|
||||
.createQueryBuilder('tx')
|
||||
.innerJoinAndSelect('tx.card', 'card')
|
||||
.innerJoinAndSelect('card.account', 'account')
|
||||
.where('card.customerId = :juniorId', { juniorId })
|
||||
.innerJoin('card.customer', 'customer')
|
||||
.innerJoin('customer.junior', 'junior')
|
||||
.where('junior.id = :juniorId', { juniorId })
|
||||
.andWhere('tx.transactionScope = :scope', { scope: TransactionScope.CARD })
|
||||
.andWhere('tx.transactionType = :type', { type: TransactionType.INTERNAL })
|
||||
.orderBy('tx.transactionDate', 'DESC')
|
||||
@ -166,7 +170,9 @@ export class TransactionRepository {
|
||||
return this.transactionRepository
|
||||
.createQueryBuilder('tx')
|
||||
.innerJoin('tx.card', 'card')
|
||||
.where('card.customerId = :juniorId', { juniorId })
|
||||
.innerJoin('card.customer', 'customer')
|
||||
.innerJoin('customer.junior', 'junior')
|
||||
.where('junior.id = :juniorId', { juniorId })
|
||||
.andWhere('tx.transactionScope = :scope', { scope: TransactionScope.CARD })
|
||||
.andWhere('tx.transactionType = :type', { type: TransactionType.INTERNAL })
|
||||
.getCount();
|
||||
@ -176,8 +182,10 @@ export class TransactionRepository {
|
||||
return this.transactionRepository
|
||||
.createQueryBuilder('tx')
|
||||
.innerJoinAndSelect('tx.card', 'card')
|
||||
.innerJoin('card.customer', 'customer')
|
||||
.innerJoin('customer.junior', 'junior')
|
||||
.where('tx.id = :transactionId', { transactionId })
|
||||
.andWhere('card.customerId = :juniorId', { juniorId })
|
||||
.andWhere('junior.id = :juniorId', { juniorId })
|
||||
.getOne();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user