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();