93 lines
2.9 KiB
C#
93 lines
2.9 KiB
C#
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();
|
|
}
|
|
}
|
|
|
|
/// <summary>مبلغ قبل از مالیات (جمع کل - اعتبار)</summary>
|
|
private long PreVatGateway => _order is null ? 0 : (_order.TotalPrice - _order.DiscountBalanceUsed);
|
|
|
|
/// <summary>مالیات بر ارزش افزوده</summary>
|
|
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");
|
|
}
|
|
}
|
|
}
|