using FrontOffice.Main.Utilities; using Microsoft.AspNetCore.Components; using MudBlazor; namespace FrontOffice.Main.Pages.Profile; public partial class ChargeDiscountWallet : ComponentBase { private bool _isProcessing; private long _chargeAmount; private string? _paymentResult; private readonly long[] _presetAmounts = { 500_000, 1_000_000, 5_000_000, 10_000_000, 20_000_000, 50_000_000 }; [SupplyParameterFromQuery(Name = "payment")] public string? PaymentQueryParam { get; set; } protected override void OnInitialized() { _paymentResult = PaymentQueryParam; } private async Task StartDiscountCharge() { if (_chargeAmount <= 0 || _isProcessing) return; _isProcessing = true; StateHasChanged(); try { // مبلغ به تومان — CMS خودش موقع ارسال به درگاه ×۱۰ می‌کنه var (success, gatewayUrl, error) = await WalletService.InitiateDiscountChargeAsync(_chargeAmount); if (success && !string.IsNullOrEmpty(gatewayUrl)) { Navigation.NavigateTo(gatewayUrl, forceLoad: true); } else { Snackbar.Add(error ?? "خطا در ایجاد درخواست پرداخت", Severity.Error); } } catch (Exception ex) { Snackbar.Add($"خطا: {ex.Message}", Severity.Error); } finally { _isProcessing = false; StateHasChanged(); } } private static string FormatToman(long toman) => string.Format("{0:N0} تومان", toman); }