using Microsoft.AspNetCore.Components; using DateTimeConverterCL; using FrontOffice.Main.Utilities; namespace FrontOffice.Main.Pages.DiscountStore; public partial class OrderDetail { [Parameter] public long Id { get; set; } [SupplyParameterFromQuery(Name = "payment")] public string? PaymentResult { get; set; } [Inject] private DiscountOrderService DiscountOrderService { get; set; } = default!; [Inject] private VATService VAT { get; set; } = default!; private DiscountOrderDetail? _order; private bool _loading = true; private string? _paymentMessage; private MudBlazor.Severity _paymentSeverity; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { await VAT.LoadAsync(); StateHasChanged(); } } /// مبلغ قبل از مالیات (جمع کل - اعتبار) private long PreVatGateway => _order is null ? 0 : (_order.TotalPrice - _order.DiscountBalanceUsed); /// مالیات بر ارزش افزوده private long OrderVatAmount => VAT.CalculateVAT(PreVatGateway); protected override async Task OnInitializedAsync() { // نمایش پیام نتیجه پرداخت (بعد از بازگشت از درگاه) if (!string.IsNullOrEmpty(PaymentResult)) { switch (PaymentResult.ToLower()) { case "success": _paymentMessage = "پرداخت با موفقیت انجام شد! سفارش شما ثبت نهایی شد."; _paymentSeverity = MudBlazor.Severity.Success; break; case "failed": _paymentMessage = "پرداخت ناموفق بود. مبلغ رزرو شده آزاد خواهد شد."; _paymentSeverity = MudBlazor.Severity.Error; break; case "error": _paymentMessage = "خطایی در پردازش پرداخت رخ داد. لطفاً با پشتیبانی تماس بگیرید."; _paymentSeverity = MudBlazor.Severity.Warning; break; } } await LoadOrderAsync(); } private async Task LoadOrderAsync() { _loading = true; try { _order = await DiscountOrderService.GetOrderByIdAsync(Id); } catch { Snackbar.Add("خطا در بارگذاری سفارش", MudBlazor.Severity.Error); } finally { _loading = false; } } private static string FormatPrice(long price) => $"{price:N0} تومان"; private static string FormatDate(DateTime date) { try { return date.ToLocalTime().MiladiToJalaliWithTime(); } catch { return date.ToString("yyyy/MM/dd"); } } }