PaymentTransaction Get data from it

This commit is contained in:
MahanCh
2025-08-07 15:09:50 +03:30
parent 563fe563c0
commit f374ff3012

View File

@@ -55,33 +55,69 @@ public class PaymentTransactionRepository : RepositoryBase<long, PaymentTransact
query = query.Where(x => x.Status == searchModel.StatusEnum);
}
var paymentTransactionsData = await query
.AsNoTracking()
.Skip(searchModel.PageIndex)
.Take(30)
.ToListAsync();
// 1. گرفتن تراکنش‌ها
var paymentTransactionsData = await query
.AsNoTracking()
.Skip(searchModel.PageIndex)
.Take(30)
.ToListAsync();
var result = paymentTransactionsData
.OrderByDescending(x=>x.CreationDate).Select(x => new GetPaymentTransactionListViewModel
// 2. استخراج prefix و suffix از کارت‌های ماسک‌شده
var maskedCardInfos = paymentTransactionsData
.Select(x => new
{
MaskedCard = x.CardNumber,
Prefix = x.CardNumber.Substring(0, 4),
Suffix = x.CardNumber.Substring(x.CardNumber.Length - 4)
})
.Distinct()
.ToList();
// 3. گرفتن شماره کارت‌های واقعی
var matchedBankAccounts = await _companyContext.ContractingPartyBankAccounts
.Where(account => maskedCardInfos.Any(mask =>
account.CardNumber.StartsWith(mask.Prefix) &&
account.CardNumber.EndsWith(mask.Suffix)
))
.ToListAsync();
// 4. ساختن خروجی
var result = paymentTransactionsData
.OrderByDescending(x => x.CreationDate)
.Select(x =>
{
var prefix = x.CardNumber.Substring(0, 4);
var suffix = x.CardNumber.Substring(x.CardNumber.Length - 4);
// پیدا کردن شماره کارت کامل و اطلاعات بانک و صاحب حساب
var matchedAccount = matchedBankAccounts
.FirstOrDefault(account =>
account.CardNumber.StartsWith(prefix) &&
account.CardNumber.EndsWith(suffix));
return new GetPaymentTransactionListViewModel
{
Id = x.id,
ContractingPartyName = x.ContractingPartyName,
BankName = x.BankName,
CardNumber = matchedAccount?.CardNumber ?? x.CardNumber,
Status = x.Status switch
{
Id = x.id,
ContractingPartyName = x.ContractingPartyName,
BankName = x.BankName,
CardNumber = x.CardNumber,
Status = x.Status switch
{
PaymentTransactionStatus.Failed => "ناموفق",
PaymentTransactionStatus.Success => "موفق",
_ => "نامشخص"
},
StatusEnum = x.Status,
Amount = x.Amount,
TransactionId = x.TransactionId,
PaymentDate = x.TransactionDate.ToFarsi(),
PaymentTime = $"{x.TransactionDate:HH:mm}"
}).ToList();
PaymentTransactionStatus.Failed => "ناموفق",
PaymentTransactionStatus.Success => "موفق",
_ => "نامشخص"
},
StatusEnum = x.Status,
Amount = x.Amount,
TransactionId = x.TransactionId,
PaymentDate = x.TransactionDate.ToFarsi(),
PaymentTime = $"{x.TransactionDate:HH:mm}"
};
})
.ToList();
return result;
return result;
}