PaymentTransaction Get data from it
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user