fix: remove hardcoded 56M amounts — dynamic package pricing
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 2m52s

- ActivationSection: load base package price via PackageService on init
- ClubMembershipContractDialog: dynamic package name/price in contract text
This commit is contained in:
masoodafar-web
2026-02-27 02:41:24 +03:30
parent 3bffc13ffd
commit 816dcb70d1
2 changed files with 34 additions and 4 deletions
@@ -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} تومان";
}
}
@@ -9,6 +9,7 @@
@inject AuthService AuthService
@inject ISnackbar Snackbar
@inject NavigationManager Navigation
@inject PackageService PackageService
<MudDialog DisableSidePadding="true">
<DialogContent>
@@ -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 @@
<p>۱-۳. پاداش معرفی: مبلغی که به ازای هر معرفی موفق به کاربر تعلق می‌گیرد.</p>
<p><strong>ماده ۲ - شرایط عضویت</strong></p>
<p>۲-۱. کاربر با پرداخت مبلغ ۵۶ میلیون تومان (پکیج پایه)، امکان عضویت در باشگاه مشتریان را خواهد داشت.</p>
<p>۲-۱. کاربر با پرداخت مبلغ {_packageDisplayPrice} ({_packageDisplayName})، امکان عضویت در باشگاه مشتریان را خواهد داشت.</p>
<p>۲-۲. پس از امضای این قرارداد، لینک دعوت کاربر فعال خواهد شد.</p>
<p>۲-۳. کاربر می‌تواند حداکثر ۲ نفر را مستقیماً دعوت کند (یک نفر در تیم اول و یک نفر در تیم دوم).</p>