diff --git a/src/BackOffice/BackOffice.csproj b/src/BackOffice/BackOffice.csproj
index 080f774..1c99ec8 100644
--- a/src/BackOffice/BackOffice.csproj
+++ b/src/BackOffice/BackOffice.csproj
@@ -143,7 +143,7 @@
-
+
diff --git a/src/BackOffice/Pages/Wallet/WalletManagementPage.razor b/src/BackOffice/Pages/Wallet/WalletManagementPage.razor
index 7b6fc1d..c6d32e0 100644
--- a/src/BackOffice/Pages/Wallet/WalletManagementPage.razor
+++ b/src/BackOffice/Pages/Wallet/WalletManagementPage.razor
@@ -1,9 +1,13 @@
@page "/wallets"
@attribute [Authorize(Roles = "Administrator")]
+@using BackOffice.Common.BaseComponents
+@using BackOffice.Pages.AutoComplete
+@using CMSMicroservice.Protobuf.Protos
@using CMSMicroservice.Protobuf.Protos.UserWallet
@using CMSMicroservice.Protobuf.Protos.UserWalletHistory
-@using BackOffice.Pages.AutoComplete
+@using DateTimeConverterCL
+@using Google.Protobuf.WellKnownTypes
@inject UserWalletContract.UserWalletContractClient WalletClient
@inject UserWalletHistoryContract.UserWalletHistoryContractClient ChangeLogClient
@@ -156,6 +160,90 @@
+
+ @* ── تب سوم: شارژ کیف جادویی ── *@
+
+
+
+
+
+
+ جستجو
+
+
+
+
+
+
+
+ @context.Item.UserName
+ ID: @context.Item.UserId
+
+
+
+
+
+ @context.Item.DepositAmount.ToString("N0")
+
+
+
+
+ @context.Item.Multiplier.ToString("0.0")
+
+
+
+
+ @context.Item.CreditedAmount.ToString("N0")
+
+
+
+
+ @(context.Item.RemainingCapacity != null
+ ? context.Item.RemainingCapacity.Value.ToString("N0")
+ : "—")
+
+
+
+
+ @((context.Item.PaymentDate ?? context.Item.Created)?
+ .ToDateTime().ToLocalTime().MiladiToJalaliWithTime() ?? "—")
+
+
+
+
+
+ @context.Item.TransactionId
+
+ @(string.IsNullOrWhiteSpace(context.Item.RefId) ? "—" : context.Item.RefId)
+
+
+
+
+
+
+ @context.Item.NewBalance.ToString("N0")
+
+
+
+
+ موردی یافت نشد.
+
+
+
+
+
+
@@ -163,6 +251,7 @@
private int _activeTab;
private MudDataGrid? _walletGrid;
private MudDataGrid? _logGrid;
+ private MudDataGrid? _magicGrid;
// Wallet filters
private long? _filterUserId;
@@ -171,6 +260,13 @@
private long? _logFilterUserId;
private bool? _logFilterIsIncrease;
+ // Magic charge filters
+ private long? _magicFilterUserId;
+ private long? _magicFilterTransactionId;
+ private string? _magicFilterRefId;
+ private DateTime? _magicFilterFrom;
+ private DateTime? _magicFilterTo;
+
private async Task> LoadWallets(GridState state)
{
try
@@ -238,6 +334,52 @@
if (_logGrid != null) await _logGrid.ReloadServerData();
}
+ private async Task> LoadMagicCharges(GridState state)
+ {
+ try
+ {
+ var request = new GetMagicWalletChargesRequest
+ {
+ PaginationState = new PaginationState
+ {
+ PageNumber = state.Page + 1,
+ PageSize = state.PageSize
+ },
+ Filter = new GetMagicWalletChargesFilter()
+ };
+
+ if (_magicFilterUserId.HasValue && _magicFilterUserId.Value > 0)
+ request.Filter.UserId = _magicFilterUserId.Value;
+ if (_magicFilterTransactionId.HasValue)
+ request.Filter.TransactionId = _magicFilterTransactionId.Value;
+ if (!string.IsNullOrWhiteSpace(_magicFilterRefId))
+ request.Filter.RefId = _magicFilterRefId.Trim();
+ if (_magicFilterFrom.HasValue)
+ request.Filter.CreatedFrom = Timestamp.FromDateTime(
+ DateTime.SpecifyKind(_magicFilterFrom.Value, DateTimeKind.Utc));
+ if (_magicFilterTo.HasValue)
+ request.Filter.CreatedTo = Timestamp.FromDateTime(
+ DateTime.SpecifyKind(_magicFilterTo.Value, DateTimeKind.Utc));
+
+ var result = await WalletClient.GetMagicWalletChargesAsync(request);
+ return new GridData
+ {
+ Items = result?.Models?.ToList() ?? new(),
+ TotalItems = (int)(result?.MetaData?.TotalCount ?? 0)
+ };
+ }
+ catch (Exception ex)
+ {
+ Snackbar.Add($"خطا: {ex.Message}", Severity.Error);
+ return new GridData();
+ }
+ }
+
+ private async Task ApplyMagicFilter()
+ {
+ if (_magicGrid != null) await _magicGrid.ReloadServerData();
+ }
+
private void ShowChangeLog(GetAllUserWalletByFilterResponseModel wallet)
{
_logFilterUserId = wallet.UserId;