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;