diff --git a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor
index 611ecab..d55b8bc 100644
--- a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor
+++ b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor
@@ -35,6 +35,40 @@
}
+ @if (_authLoaded && !_isClubMemberActive)
+ {
+
+
+
+ برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.
+
+
+ @if (!_hasPurchasedPackage)
+ {
+
+ مشاهده پکیجها
+
+ }
+ else
+ {
+
+ امضای قرارداد باشگاه
+
+ }
+
+ بازگشت به کیف پول
+
+
+
+
+ }
+ else if (_authLoaded)
+ {
@@ -122,5 +156,6 @@
+ }
diff --git a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs
index 4237af7..816aada 100644
--- a/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs
+++ b/src/FrontOffice.Main/Pages/Profile/ChargeCreditWallet.razor.cs
@@ -7,10 +7,15 @@ namespace FrontOffice.Main.Pages.Profile;
public partial class ChargeCreditWallet : ComponentBase
{
+ [Inject] private AuthService AuthService { get; set; } = default!;
+
private bool _isProcessing;
private long _chargeAmount;
private string? _paymentResult;
private string? _pendingReturnUrl;
+ private bool _isClubMemberActive;
+ private bool _hasPurchasedPackage;
+ private bool _authLoaded;
private readonly long[] _presetAmounts = { 500_000, 1_000_000, 5_000_000, 10_000_000, 20_000_000, 50_000_000 };
@@ -23,7 +28,7 @@ public partial class ChargeCreditWallet : ComponentBase
[SupplyParameterFromQuery(Name = "returnUrl")]
public string? ReturnUrlQueryParam { get; set; }
- protected override void OnInitialized()
+ protected override async Task OnInitializedAsync()
{
_paymentResult = PaymentQueryParam;
@@ -32,11 +37,27 @@ public partial class ChargeCreditWallet : ComponentBase
if (CreditChargeNavigation.IsValidReturnUrl(ReturnUrlQueryParam))
_pendingReturnUrl = ReturnUrlQueryParam;
+
+ try
+ {
+ var userInfo = await AuthService.GetUserAuthInfo();
+ _isClubMemberActive = userInfo.IsClubMemberActive;
+ _hasPurchasedPackage = userInfo.HasPurchasedPackage;
+ }
+ catch
+ {
+ _isClubMemberActive = false;
+ _hasPurchasedPackage = false;
+ }
+ finally
+ {
+ _authLoaded = true;
+ }
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
- if (firstRender && !string.IsNullOrEmpty(_pendingReturnUrl))
+ if (firstRender && !string.IsNullOrEmpty(_pendingReturnUrl) && _isClubMemberActive)
{
await CreditChargeNavigation.SaveReturnUrlAsync(JSRuntime, _pendingReturnUrl);
}
@@ -46,6 +67,14 @@ public partial class ChargeCreditWallet : ComponentBase
private async Task StartCreditCharge()
{
+ if (!_isClubMemberActive)
+ {
+ Snackbar.Add(
+ "برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.",
+ Severity.Warning);
+ return;
+ }
+
if (_chargeAmount <= 0 || _isProcessing) return;
_isProcessing = true;
diff --git a/src/FrontOffice.Main/Pages/Profile/Wallet.razor b/src/FrontOffice.Main/Pages/Profile/Wallet.razor
index 6670c39..d52d737 100644
--- a/src/FrontOffice.Main/Pages/Profile/Wallet.razor
+++ b/src/FrontOffice.Main/Pages/Profile/Wallet.razor
@@ -39,15 +39,55 @@
-
- شارژ کیفپول اصلی
-
+ @if (_isClubMemberActive)
+ {
+
+ شارژ کیفپول اصلی
+
+ }
+ else
+ {
+
+
+
+ شارژ کیفپول اصلی
+
+
+ برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.
+
+
+ @if (!_hasPurchasedPackage)
+ {
+
+ مشاهده پکیجها
+
+ }
+ else
+ {
+
+ امضای قرارداد باشگاه
+
+ }
+
+
+
+ }
_txs = new();
private string? _filterReferenceId;
private string _filterType = "all";
+ private bool _isClubMemberActive;
+ private bool _hasPurchasedPackage;
protected override async Task OnInitializedAsync()
{
+ try
+ {
+ var userInfo = await AuthService.GetUserAuthInfo();
+ _isClubMemberActive = userInfo.IsClubMemberActive;
+ _hasPurchasedPackage = userInfo.HasPurchasedPackage;
+ }
+ catch
+ {
+ _isClubMemberActive = false;
+ _hasPurchasedPackage = false;
+ }
+
var b = await WalletService.GetBalancesAsync();
_balances = (FormatPrice(b.CreditBalance), FormatPrice(b.DiscountBalance), FormatPrice(b.NetworkBalance));
_txs = await WalletService.GetTransactionsAsync();
diff --git a/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs b/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs
index 19805ec..d199997 100644
--- a/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs
+++ b/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs
@@ -125,11 +125,26 @@ public partial class CheckoutSummary : ComponentBase
return false;
var shortfall = totalRequired - walletBalance;
+ var allowCharge = false;
+ var hasPurchasedPackage = false;
+ try
+ {
+ var userInfo = await AuthService.GetUserAuthInfo();
+ allowCharge = userInfo.IsClubMemberActive;
+ hasPurchasedPackage = userInfo.HasPurchasedPackage;
+ }
+ catch
+ {
+ allowCharge = false;
+ }
+
var parameters = new DialogParameters
{
{ x => x.CurrentBalance, walletBalance },
{ x => x.RequiredAmount, totalRequired },
- { x => x.ShortfallAmount, shortfall }
+ { x => x.ShortfallAmount, shortfall },
+ { x => x.AllowChargeCredit, allowCharge },
+ { x => x.HasPurchasedPackage, hasPurchasedPackage }
};
var dialog = await DialogService.ShowAsync(
@@ -143,7 +158,7 @@ public partial class CheckoutSummary : ComponentBase
});
var result = await dialog.Result;
- if (result is { Canceled: false } && result.Data is long chargeShortfall)
+ if (allowCharge && result is { Canceled: false } && result.Data is long chargeShortfall)
{
var chargeAmount = CreditChargeNavigation.NormalizeChargeAmount(chargeShortfall);
Navigation.NavigateTo(CreditChargeNavigation.BuildChargeUrl(
diff --git a/src/FrontOffice.Main/Shared/InsufficientCreditDialog.razor b/src/FrontOffice.Main/Shared/InsufficientCreditDialog.razor
index da14999..b55951d 100644
--- a/src/FrontOffice.Main/Shared/InsufficientCreditDialog.razor
+++ b/src/FrontOffice.Main/Shared/InsufficientCreditDialog.razor
@@ -1,3 +1,5 @@
+@using FrontOffice.Main.Utilities
+
@@ -7,9 +9,19 @@
-
- برای تکمیل این سفارش، موجودی اصلی شما کافی نیست. میتوانید کیف پول را شارژ کنید و سپس سفارش را ثبت کنید.
-
+ @if (AllowChargeCredit)
+ {
+
+ برای تکمیل این سفارش، موجودی اصلی شما کافی نیست. میتوانید کیف پول را شارژ کنید و سپس سفارش را ثبت کنید.
+
+ }
+ else
+ {
+
+ برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.
+
+ }
+
@@ -31,12 +43,33 @@
بستن
-
- شارژ حساب اصلی
-
+ @if (AllowChargeCredit)
+ {
+
+ شارژ حساب اصلی
+
+ }
+ else if (!HasPurchasedPackage)
+ {
+
+ مشاهده پکیجها
+
+ }
+ else
+ {
+
+ امضای قرارداد باشگاه
+
+ }
@@ -53,9 +86,28 @@
[Parameter]
public long ShortfallAmount { get; set; }
+ /// اگر false باشد، به صفحه شارژ هدایت نمیشود.
+ [Parameter]
+ public bool AllowChargeCredit { get; set; } = true;
+
+ [Parameter]
+ public bool HasPurchasedPackage { get; set; }
+
private void Cancel() => MudDialog.Cancel();
private void GoToCharge() => MudDialog.Close(DialogResult.Ok(ShortfallAmount));
+ private void GoToPackages()
+ {
+ MudDialog.Cancel();
+ Navigation.NavigateTo(RouteConstants.Package.List);
+ }
+
+ private void GoToClubMembership()
+ {
+ MudDialog.Cancel();
+ Navigation.NavigateTo(RouteConstants.Club.Membership);
+ }
+
private static string FormatPrice(long price) => string.Format("{0:N0} تومان", price);
}