From 6123e4796888827e7ef65b0678882ad8e9ff8f53 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sat, 8 Aug 2026 22:22:03 +0330 Subject: [PATCH] feat(wallet): enhance ChargeCreditWallet and Wallet components with magic wallet functionality - Added logic to handle redirection and alerts for users with a magic wallet status in the ChargeCreditWallet component. - Updated the Wallet component to conditionally render buttons and alerts based on the user's magic wallet status. - Implemented a method to check the magic wallet status and provide user feedback regarding wallet charging options. These changes improve user experience by clearly guiding users on the appropriate wallet charging methods based on their current wallet status. --- docs/CHANGELOG.md | 1 + .../Pages/Profile/ChargeCreditWallet.razor | 18 ++++++++- .../Pages/Profile/ChargeCreditWallet.razor.cs | 39 ++++++++++++++++++- .../Pages/Profile/Wallet.razor | 38 +++++++++++++----- .../Pages/Profile/Wallet.razor.cs | 11 ++++++ 5 files changed, 95 insertions(+), 12 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 18c6348..88d2fa8 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,3 +1,4 @@ # Docs moved to totalDoc See [totalDoc/INDEX.md](../../totalDoc/INDEX.md) for all documentation. + \ No newline at end of file diff --git a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor index d55b8bc..eaab334 100644 --- a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor +++ b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor @@ -35,7 +35,23 @@ } - @if (_authLoaded && !_isClubMemberActive) + @if (_authLoaded && _redirectingToMagic) + { + + + + + کیف پول شما در حالت جادویی است. در حال انتقال به صفحه شارژ کیف پول جادویی... + + + رفتن به شارژ کیف جادویی + + + + } + else if (_authLoaded && !_isClubMemberActive) { diff --git a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs index 816aada..bac834d 100644 --- a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs +++ b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs @@ -16,6 +16,7 @@ public partial class ChargeCreditWallet : ComponentBase private bool _isClubMemberActive; private bool _hasPurchasedPackage; private bool _authLoaded; + private bool _redirectingToMagic; private readonly long[] _presetAmounts = { 500_000, 1_000_000, 5_000_000, 10_000_000, 20_000_000, 50_000_000 }; @@ -53,11 +54,15 @@ public partial class ChargeCreditWallet : ComponentBase { _authLoaded = true; } + + // اگر کیف پول جادویی فعال است، فرم شارژ ۱:۱ نشان داده نشود + if (_isClubMemberActive && await TryRedirectIfMagicWalletAsync()) + return; } protected override async Task OnAfterRenderAsync(bool firstRender) { - if (firstRender && !string.IsNullOrEmpty(_pendingReturnUrl) && _isClubMemberActive) + if (firstRender && !string.IsNullOrEmpty(_pendingReturnUrl) && _isClubMemberActive && !_redirectingToMagic) { await CreditChargeNavigation.SaveReturnUrlAsync(JSRuntime, _pendingReturnUrl); } @@ -75,6 +80,9 @@ public partial class ChargeCreditWallet : ComponentBase return; } + if (await TryRedirectIfMagicWalletAsync()) + return; + if (_chargeAmount <= 0 || _isProcessing) return; _isProcessing = true; @@ -113,6 +121,35 @@ public partial class ChargeCreditWallet : ComponentBase } } + /// + /// اگر WalletMode جادویی باشد، پیام می‌دهد و به صفحه شارژ کیف جادویی هدایت می‌کند. + /// + private async Task TryRedirectIfMagicWalletAsync() + { + try + { + var status = await WalletService.GetMagicWalletStatusAsync(); + if (status.WalletMode != 1) + return false; + + var multiplier = status.MagicMultiplier > 0 ? status.MagicMultiplier : 2.5; + var multiplierText = multiplier.ToString("0.#"); + + _redirectingToMagic = true; + Snackbar.Add( + $"کیف پول شما در حالت جادویی است. شارژ از این صفحه موجودی را چندبرابر نمی‌کند. برای دریافت ضریب جادویی (×{multiplierText}) به صفحه شارژ کیف پول جادویی هدایت می‌شوید.", + Severity.Info); + + Navigation.NavigateTo(RouteConstants.Profile.MagicWallet); + return true; + } + catch + { + // در صورت خطا در خواندن وضعیت، مانع شارژ عادی نشو + return false; + } + } + private async Task ContinueShoppingAsync() { var returnUrl = await CreditChargeNavigation.GetReturnUrlAsync(JSRuntime); diff --git a/src/FrontOffice.Main/Pages/Profile/Wallet.razor b/src/FrontOffice.Main/Pages/Profile/Wallet.razor index d52d737..e13abee 100644 --- a/src/FrontOffice.Main/Pages/Profile/Wallet.razor +++ b/src/FrontOffice.Main/Pages/Profile/Wallet.razor @@ -38,18 +38,36 @@ درخواست‌های برداشت - + @if (_isClubMemberActive) { - - شارژ کیف‌پول اصلی - + @if (_isMagicWallet) + { + + شارژ کیف‌پول جادویی + + + کیف پول شما در حالت جادویی است؛ شارژ از مسیر جادویی با ضریب چندبرابر اعمال می‌شود. + + } + else + { + + شارژ کیف‌پول اصلی + + } } else { diff --git a/src/FrontOffice.Main/Pages/Profile/Wallet.razor.cs b/src/FrontOffice.Main/Pages/Profile/Wallet.razor.cs index 04f9c96..f20a00c 100644 --- a/src/FrontOffice.Main/Pages/Profile/Wallet.razor.cs +++ b/src/FrontOffice.Main/Pages/Profile/Wallet.razor.cs @@ -14,6 +14,7 @@ public partial class Wallet : ComponentBase private string _filterType = "all"; private bool _isClubMemberActive; private bool _hasPurchasedPackage; + private bool _isMagicWallet; protected override async Task OnInitializedAsync() { @@ -29,6 +30,16 @@ public partial class Wallet : ComponentBase _hasPurchasedPackage = false; } + try + { + var magicStatus = await WalletService.GetMagicWalletStatusAsync(); + _isMagicWallet = magicStatus.WalletMode == 1; + } + catch + { + _isMagicWallet = false; + } + var b = await WalletService.GetBalancesAsync(); _balances = (FormatPrice(b.CreditBalance), FormatPrice(b.DiscountBalance), FormatPrice(b.NetworkBalance)); _txs = await WalletService.GetTransactionsAsync();