From 816dcb70d1dce3228d12751f2947e3cb94060684 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Fri, 27 Feb 2026 02:41:24 +0330 Subject: [PATCH] =?UTF-8?q?fix:=20remove=20hardcoded=2056M=20amounts=20?= =?UTF-8?q?=E2=80=94=20dynamic=20package=20pricing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ActivationSection: load base package price via PackageService on init - ClubMembershipContractDialog: dynamic package name/price in contract text --- .../Components/ActivationSection.razor.cs | 18 ++++++++++++++--- .../Shared/ClubMembershipContractDialog.razor | 20 ++++++++++++++++++- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/FrontOffice.Main/Pages/Club/Components/ActivationSection.razor.cs b/src/FrontOffice.Main/Pages/Club/Components/ActivationSection.razor.cs index 6e60a63..496f247 100644 --- a/src/FrontOffice.Main/Pages/Club/Components/ActivationSection.razor.cs +++ b/src/FrontOffice.Main/Pages/Club/Components/ActivationSection.razor.cs @@ -10,6 +10,7 @@ public partial class ActivationSection : ComponentBase [Inject] private ClubMembershipService ClubService { get; set; } = default!; [Inject] private AuthService AuthService { get; set; } = default!; [Inject] private UserContract.UserContractClient UserContract { get; set; } = default!; + [Inject] private PackageService PackageService { get; set; } = default!; [Parameter] public EventCallback OnActivationSuccess { get; set; } @@ -21,6 +22,18 @@ public partial class ActivationSection : ComponentBase private long _packageId = 1; private int _durationMonths = 1; private string? _activationCode; + private long _basePackagePrice; + + protected override async Task OnInitializedAsync() + { + try + { + var packages = await PackageService.GetAllPackagesAsync(); + var basePackage = packages.FirstOrDefault(p => p.IsBasePackage) ?? packages.FirstOrDefault(); + _basePackagePrice = basePackage?.Price ?? 0; + } + catch { /* fallback to 0 */ } + } private async Task HandleActivateAsync() { @@ -75,9 +88,8 @@ public partial class ActivationSection : ComponentBase private string GetEstimatedCost() { - // فرمول تقریبی: 56M per month (base amount from BFF implementation) - var baseAmount = 56_000_000; - var total = baseAmount * _durationMonths; + if (_basePackagePrice <= 0) return "در حال بارگذاری..."; + var total = _basePackagePrice * _durationMonths; return $"{total:N0} تومان"; } } diff --git a/src/FrontOffice.Main/Shared/ClubMembershipContractDialog.razor b/src/FrontOffice.Main/Shared/ClubMembershipContractDialog.razor index 9fb7cf7..0315eb8 100644 --- a/src/FrontOffice.Main/Shared/ClubMembershipContractDialog.razor +++ b/src/FrontOffice.Main/Shared/ClubMembershipContractDialog.razor @@ -9,6 +9,7 @@ @inject AuthService AuthService @inject ISnackbar Snackbar @inject NavigationManager Navigation +@inject PackageService PackageService @@ -123,6 +124,23 @@ private readonly Guid _signGuid = Guid.NewGuid(); private System.Timers.Timer? _timer; private const string TokenStorageKey = "auth:token"; + private string _packageDisplayName = "پکیج پایه"; + private string _packageDisplayPrice = "۵۶ میلیون تومان"; + + protected override async Task OnInitializedAsync() + { + try + { + var packages = await PackageService.GetAllPackagesAsync(); + var basePackage = packages.FirstOrDefault(p => p.IsBasePackage) ?? packages.FirstOrDefault(); + if (basePackage != null) + { + _packageDisplayName = basePackage.Title; + _packageDisplayPrice = $"{basePackage.Price / 10:N0} تومان"; + } + } + catch { /* fallback to defaults */ } + } // این Modal غیرقابل بسته شدن است - Options در ShowAsync تنظیم می‌شوند @@ -242,7 +260,7 @@

۱-۳. پاداش معرفی: مبلغی که به ازای هر معرفی موفق به کاربر تعلق می‌گیرد.

ماده ۲ - شرایط عضویت

-

۲-۱. کاربر با پرداخت مبلغ ۵۶ میلیون تومان (پکیج پایه)، امکان عضویت در باشگاه مشتریان را خواهد داشت.

+

۲-۱. کاربر با پرداخت مبلغ {_packageDisplayPrice} ({_packageDisplayName})، امکان عضویت در باشگاه مشتریان را خواهد داشت.

۲-۲. پس از امضای این قرارداد، لینک دعوت کاربر فعال خواهد شد.

۲-۳. کاربر می‌تواند حداکثر ۲ نفر را مستقیماً دعوت کند (یک نفر در تیم اول و یک نفر در تیم دوم).