@using FrontOffice.Main.Utilities
@inject PackageService PackageService
@inject ISnackbar Snackbar
@if (_selectedPackage != null)
{
انتخاب روش پرداخت
}
else
{
انتخاب پکیج
}
@if (_isLoading)
{
در حال بارگذاری پکیجها...
}
else if (_selectedPackage != null)
{
@* ── Step 2: Payment method selection ── *@
@* Selected Package Summary *@
@_selectedPackage.Title
@_selectedPackage.FormattedPrice
روش پرداخت خود را انتخاب کنید:
@* Direct Payment — always available *@
SelectPaymentMethod(PaymentMethodType.DirectPayment)">
پرداخت مستقیم
پرداخت آنی از طریق درگاه بانکی
@* Daya Loan — only for base package AND first purchase cycle *@
@if (_selectedPackage.SupportsDayaPurchase && PurchaseCycleCount == 0)
{
SelectPaymentMethod(PaymentMethodType.DayaLoan)">
اعتبار الماسی دایا
تأمین اعتبار از طریق خرید توکن الماس
}
else if (!_selectedPackage.SupportsDayaPurchase)
{
اعتبار الماسی دایا فقط برای پکیج پایه قابل استفاده است.
}
else if (PurchaseCycleCount > 0)
{
از دور دوم به بعد، خرید پکیج فقط از طریق درگاه بانکی امکانپذیر است.
}
}
else
{
@* ── Step 1: Package tile grid ── *@
پکیج مورد نظر خود را انتخاب کنید:
@foreach (var pkg in _packages)
{
SelectPackage(pkg)">
@if (pkg.IsBasePackage)
{
پایه
}
@pkg.Title
@pkg.FormattedPrice
@if (!string.IsNullOrWhiteSpace(pkg.Description))
{
@((MarkupString)pkg.Description)
}
@* Key features *@
@if (pkg.MagicWalletMultiplier > 0)
{
ضریب جادویی: @pkg.MagicWalletMultiplier.ToString("F1")x
}
@if (pkg.DiscountMultiplier > 0)
{
ضریب اعتبار: @pkg.DiscountMultiplier.ToString("F1")x
}
@if (pkg.SupportsDayaPurchase)
{
قابل خرید با دایا
}
}
}
بستن
@code {
[CascadingParameter] private IMudDialogInstance MudDialog { get; set; } = default!;
/// Number of previous purchase cycles — controls Daya eligibility
[Parameter] public int PurchaseCycleCount { get; set; }
private List _packages = new();
private PackageDto? _selectedPackage;
private bool _isLoading = true;
protected override async Task OnInitializedAsync()
{
_isLoading = true;
try
{
_packages = await PackageService.GetAllPackagesAsync();
}
catch (Exception ex)
{
Snackbar.Add("خطا در بارگذاری پکیجها", MudBlazor.Severity.Error);
}
finally
{
_isLoading = false;
}
}
private void SelectPackage(PackageDto package)
{
_selectedPackage = package;
}
private void BackToList()
{
_selectedPackage = null;
}
private void SelectPaymentMethod(PaymentMethodType method)
{
var result = new PackagePurchaseResult(_selectedPackage!, method);
MudDialog.Close(DialogResult.Ok(result));
}
private void Cancel() => MudDialog.Cancel();
private static string GetTileStyle(PackageDto pkg)
{
return pkg.IsBasePackage
? "border:2px solid var(--mud-palette-primary); background:rgba(99,102,241,.04); cursor:pointer;"
: "border:2px solid var(--mud-palette-lines-default); background:var(--mud-palette-surface); cursor:pointer;";
}
private static string GetAvatarStyle(PackageDto pkg)
{
return pkg.IsBasePackage
? "background:rgba(99,102,241,.15); color:#6366f1;"
: "background:rgba(16,185,129,.12); color:#10b981;";
}
public enum PaymentMethodType { DirectPayment, DayaLoan }
public record PackagePurchaseResult(PackageDto Package, PaymentMethodType Method);
}