@using BackOffice.Services.DiscountOrder

<MudDialog>
    <TitleContent>
        <MudText Typo="Typo.h6">
            <MudIcon Icon="@Icons.Material.Filled.ShoppingCart" Class="ml-2" />
            جزئیات سفارش #@Order.OrderNumber
        </MudText>
    </TitleContent>
    <DialogContent>
        <MudGrid>
            <!-- اطلاعات کاربر -->
            <MudItem xs="12">
                <MudPaper Class="pa-4" Elevation="1">
                    <MudText Typo="Typo.h6" GutterBottom="true">اطلاعات سفارش</MudText>
                    <MudGrid>
                        <MudItem xs="6">
                            <MudText Typo="Typo.body2" Color="Color.Secondary">شماره سفارش:</MudText>
                            <MudText Typo="Typo.body1"><strong>@Order.OrderNumber</strong></MudText>
                        </MudItem>
                        <MudItem xs="6">
                            <MudText Typo="Typo.body2" Color="Color.Secondary">شناسه کاربر:</MudText>
                            <MudText Typo="Typo.body1">@Order.UserId</MudText>
                        </MudItem>
                    </MudGrid>
                </MudPaper>
            </MudItem>

            <!-- Timeline وضعیت -->
            <MudItem xs="12">
                <MudPaper Class="pa-4" Elevation="1">
                    <MudText Typo="Typo.subtitle2" GutterBottom="true">Timeline وضعیت</MudText>
                    <MudStack Row="true" Spacing="3" AlignItems="AlignItems.Center" Justify="Justify.Center">
                        @foreach (var step in _timelineSteps)
                        {
                            <MudStack Spacing="0" AlignItems="AlignItems.Center">
                                <MudAvatar Color="@GetStepColor(step.State)" Size="Size.Small">
                                    @step.Icon
                                </MudAvatar>
                                <MudText Typo="Typo.caption">@step.Title</MudText>
                            </MudStack>
                        }
                    </MudStack>
                </MudPaper>
            </MudItem>

            <!-- وضعیت سفارش -->
            <MudItem xs="12" sm="6">
                <MudPaper Class="pa-4" Elevation="1">
                    <MudText Typo="Typo.h6" GutterBottom="true">وضعیت سفارش</MudText>
                    <MudChip T="string" Color="@GetStatusColor(Order.Status)" Size="Size.Large">
                        @GetStatusText(Order.Status)
                    </MudChip>
                    @if (Order.Created.HasValue)
                    {
                        <MudText Typo="Typo.body2" Class="mt-2">
                            تاریخ ثبت: @Order.Created.Value.MiladiToJalaliWithTime()
                        </MudText>
                    }
                </MudPaper>
            </MudItem>

            <!-- وضعیت پرداخت -->
            <MudItem xs="12" sm="6">
                <MudPaper Class="pa-4" Elevation="1">
                    <MudText Typo="Typo.h6" GutterBottom="true">وضعیت پرداخت</MudText>
                    @if (Order.PaymentCompleted)
                    {
                        <MudChip T="string" Color="Color.Success" Size="Size.Large" Icon="@Icons.Material.Filled.CheckCircle">
                            پرداخت شده
                        </MudChip>
                        @if (!string.IsNullOrEmpty(Order.TransactionId))
                        {
                            <MudText Typo="Typo.body2" Class="mt-2">
                                کد تراکنش: @Order.TransactionId
                            </MudText>
                        }
                    }
                    else
                    {
                        <MudChip T="string" Color="Color.Warning" Size="Size.Large" Icon="@Icons.Material.Filled.Schedule">
                            در انتظار پرداخت
                        </MudChip>
                    }
                </MudPaper>
            </MudItem>

            <!-- آدرس ارسال -->
            @if (Order.Address != null)
            {
                <MudItem xs="12">
                    <MudPaper Class="pa-4" Elevation="1">
                        <MudText Typo="Typo.h6" GutterBottom="true">
                            <MudIcon Icon="@Icons.Material.Filled.LocationOn" Size="Size.Small" />
                            آدرس ارسال
                        </MudText>
                        <MudText Typo="Typo.body1"><strong>@Order.Address.Title</strong></MudText>
                        <MudText Typo="Typo.body2">@Order.Address.Address</MudText>
                        <MudText Typo="Typo.body2">کد پستی: @Order.Address.PostalCode</MudText>
                        @if (!string.IsNullOrEmpty(Order.Address.Phone))
                        {
                            <MudText Typo="Typo.body2">تلفن: @Order.Address.Phone</MudText>
                        }
                    </MudPaper>
                </MudItem>
            }

            <!-- آیتم‌های سفارش -->
            <MudItem xs="12">
                <MudPaper Class="pa-4" Elevation="1">
                    <MudText Typo="Typo.h6" GutterBottom="true">آیتم‌های سفارش</MudText>
                    <MudTable Items="@Order.Items" Hover="true" Dense="true" Elevation="0">
                        <HeaderContent>
                            <MudTh>محصول</MudTh>
                            <MudTh>تعداد</MudTh>
                            <MudTh>قیمت واحد</MudTh>
                            <MudTh>تخفیف</MudTh>
                            <MudTh>قیمت نهایی</MudTh>
                        </HeaderContent>
                        <RowTemplate>
                            <MudTd>
                                <MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
                                    @if (!string.IsNullOrWhiteSpace(context.ThumbnailPath))
                                    {
                                        <MudImage Src="@context.ThumbnailPath" Width="40" Height="40"
                                                  ObjectFit="ObjectFit.Cover" Class="rounded" />
                                    }
                                    <MudText>@context.ProductTitle</MudText>
                                </MudStack>
                            </MudTd>
                            <MudTd>@context.Count</MudTd>
                            <MudTd>@context.UnitPrice.ToString("N0") تومان</MudTd>
                            <MudTd>
                                <MudChip T="string" Size="Size.Small" Color="Color.Success">@context.MaxDiscountPercent%</MudChip>
                            </MudTd>
                            <MudTd><strong>@context.FinalPrice.ToString("N0") تومان</strong></MudTd>
                        </RowTemplate>
                    </MudTable>
                </MudPaper>
            </MudItem>

            <!-- خلاصه مالی -->
            <MudItem xs="12">
                <MudPaper Class="pa-4" Elevation="2">
                    <MudText Typo="Typo.h6" GutterBottom="true">خلاصه مالی</MudText>
                    <MudGrid>
                        <MudItem xs="6">
                            <MudText Color="Color.Secondary">مبلغ کل:</MudText>
                        </MudItem>
                        <MudItem xs="6" Class="text-left">
                            <MudText>@Order.TotalPrice.ToString("N0") تومان</MudText>
                        </MudItem>

                        <MudItem xs="6">
                            <MudText Color="Color.Success">از کیف پول اعتباری:</MudText>
                        </MudItem>
                        <MudItem xs="6" Class="text-left">
                            <MudText Color="Color.Success">@Order.DiscountBalanceUsed.ToString("N0") تومان</MudText>
                        </MudItem>

                        <MudItem xs="12"><MudDivider /></MudItem>

                        <MudItem xs="6">
                            <MudText Typo="Typo.h6">مبلغ پرداختی از درگاه:</MudText>
                        </MudItem>
                        <MudItem xs="6" Class="text-left">
                            <MudText Typo="Typo.h6" Color="Color.Primary">
                                <strong>@Order.GatewayAmount.ToString("N0") تومان</strong>
                            </MudText>
                        </MudItem>
                    </MudGrid>
                </MudPaper>
            </MudItem>

            <!-- ویرایش وضعیت ارسال -->
            <MudItem xs="12">
                <MudPaper Class="pa-4" Elevation="1">
                    <MudText Typo="Typo.subtitle2" GutterBottom="true">مدیریت وضعیت ارسال</MudText>
                    <MudDivider Class="mb-3" />
                    <MudGrid>
                        <MudItem xs="12" sm="6">
                            <MudSelect T="OrderStatus"
                                       Label="وضعیت ارسال"
                                       Dense="true"
                                       Variant="Variant.Outlined"
                                       @bind-Value="_newStatus">
                                <MudSelectItem T="OrderStatus" Value="@OrderStatus.Pending">در انتظار پرداخت</MudSelectItem>
                                <MudSelectItem T="OrderStatus" Value="@OrderStatus.Paid">پرداخت شده</MudSelectItem>
                                <MudSelectItem T="OrderStatus" Value="@OrderStatus.Processing">در حال آماده‌سازی</MudSelectItem>
                                <MudSelectItem T="OrderStatus" Value="@OrderStatus.Shipped">ارسال شده</MudSelectItem>
                                <MudSelectItem T="OrderStatus" Value="@OrderStatus.Delivered">تحویل داده شده</MudSelectItem>
                                <MudSelectItem T="OrderStatus" Value="@OrderStatus.Cancelled">لغو شده</MudSelectItem>
                                <MudSelectItem T="OrderStatus" Value="@OrderStatus.Returned">مرجوع شده</MudSelectItem>
                            </MudSelect>
                        </MudItem>
                        <MudItem xs="12" sm="6">
                            <MudTextField T="string"
                                          Label="کد رهگیری"
                                          Variant="Variant.Outlined"
                                          Dense="true"
                                          @bind-Value="_trackingCode" />
                        </MudItem>
                        <MudItem xs="12">
                            <MudTextField T="string"
                                          Label="یادداشت ادمین"
                                          Variant="Variant.Outlined"
                                          Dense="true"
                                          Lines="3"
                                          HelperText="دلیل تغییر وضعیت یا توضیحات اضافی"
                                          @bind-Value="_adminNotes" />
                        </MudItem>
                    </MudGrid>

                    @if (_newStatus == OrderStatus.Cancelled || _newStatus == OrderStatus.Returned)
                    {
                        <MudAlert Severity="Severity.Warning" Class="mt-2">
                            توجه: در صورت لغو یا مرجوعی سفارش، موجودی محصولات به انبار بازگردانده می‌شود.
                        </MudAlert>
                    }
                    @if (_newStatus == OrderStatus.Shipped)
                    {
                        <MudAlert Severity="Severity.Info" Class="mt-2">
                            پس از تغییر وضعیت به "ارسال شده"، اطلاع‌رسانی به کاربر ارسال خواهد شد.
                        </MudAlert>
                    }
                </MudPaper>
            </MudItem>

            <!-- یادداشت‌ها -->
            @if (!string.IsNullOrEmpty(Order.Notes) || !string.IsNullOrEmpty(Order.AdminNotes))
            {
                <MudItem xs="12">
                    <MudPaper Class="pa-4" Elevation="1">
                        @if (!string.IsNullOrEmpty(Order.Notes))
                        {
                            <MudText Typo="Typo.h6" GutterBottom="true">
                                <MudIcon Icon="@Icons.Material.Filled.Comment" Size="Size.Small" />
                                یادداشت کاربر
                            </MudText>
                            <MudText Typo="Typo.body1" Class="mb-4">@Order.Notes</MudText>
                        }
                        @if (!string.IsNullOrEmpty(Order.AdminNotes))
                        {
                            <MudText Typo="Typo.h6" GutterBottom="true">
                                <MudIcon Icon="@Icons.Material.Filled.Note" Size="Size.Small" />
                                یادداشت ادمین
                            </MudText>
                            <MudText Typo="Typo.body1">@Order.AdminNotes</MudText>
                        }
                    </MudPaper>
                </MudItem>
            }
        </MudGrid>
    </DialogContent>
    <DialogActions>
        <MudButton Variant="Variant.Outlined" Color="Color.Default" OnClick="Close">
            بستن
        </MudButton>
        <MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="SaveAsync" Disabled="_isSaving">
            @if (_isSaving)
            {
                <MudProgressCircular Size="Size.Small" Indeterminate="true" Class="ml-2" />
            }
            ثبت تغییرات
        </MudButton>
    </DialogActions>
</MudDialog>
