@* Merged into /discount-shop *@
@using BackOffice.Services.DiscountOrder
@using BackOffice.Pages.DiscountShop.Components
@using BackOffice.Common.BaseComponents
@using BackOffice.Pages.AutoComplete

<BackOffice.Common.BaseComponents.BasePageComponent @ref="_basePage" OnClearFilterClick="OnFilterCleared"
                                                    OnSubmitClick="OnFilterSubmit">
    <Filters>
        <MudItem xs="12" sm="6" md="3">
            <MudNumericField HideSpinButtons="true" T="long?" Clearable="true" Label="شناسه سفارش"
                             @bind-Value="@_orderIdFilter" Variant="Variant.Outlined" Margin="Margin.Dense"/>
        </MudItem>
        <MudItem xs="12" sm="6" md="3">
            <UserAutoComplete Label="جستجوی کاربر" @bind-SelectedUserId="@_userIdFilter" />
        </MudItem>
        <MudItem xs="12" sm="6" md="3">
            <MudTextField T="string" Clearable="true" Label="موبایل کاربر"
                         @bind-Value="@_userMobileFilter" Variant="Variant.Outlined" Margin="Margin.Dense"/>
        </MudItem>
        <MudItem xs="12" sm="6" md="3">
            <MudTextField T="string" Clearable="true" Label="کد رهگیری"
                         @bind-Value="@_trackingCodeFilter" Variant="Variant.Outlined" Margin="Margin.Dense"/>
        </MudItem>
        <MudItem xs="12" sm="6" md="3">
            <MudDatePicker T="DateTime?" Label="از تاریخ" @bind-Date="_fromDateFilter"
                           Variant="Variant.Outlined" Margin="Margin.Dense"/>
        </MudItem>
        <MudItem xs="12" sm="6" md="3">
            <MudDatePicker T="DateTime?" Label="تا تاریخ" @bind-Date="_toDateFilter"
                           Variant="Variant.Outlined" Margin="Margin.Dense"/>
        </MudItem>
        <MudItem xs="12" sm="6" md="3">
            <MudSelect T="int?" Clearable="true" Label="وضعیت پرداخت" Variant="Variant.Outlined"
                       Margin="Margin.Dense" @bind-Value="_paymentStatusFilter">
                <MudSelectItem T="int?" Value="@((int?)null)">همه</MudSelectItem>
                <MudSelectItem T="int?" Value="@(0)">در انتظار پرداخت</MudSelectItem>
                <MudSelectItem T="int?" Value="@(1)">پرداخت شده</MudSelectItem>
                <MudSelectItem T="int?" Value="@(2)">ناموفق</MudSelectItem>
                <MudSelectItem T="int?" Value="@(3)">بازپرداخت</MudSelectItem>
            </MudSelect>
        </MudItem>
        <MudItem xs="12" sm="6" md="3">
            <MudSelect T="OrderStatus?" Clearable="true" Label="وضعیت ارسال" Variant="Variant.Outlined"
                       Margin="Margin.Dense" @bind-Value="_statusFilter">
                <MudSelectItem T="OrderStatus?" Value="@((OrderStatus?)null)">همه</MudSelectItem>
                <MudSelectItem T="OrderStatus?" Value="@OrderStatus.Pending">در انتظار ارسال</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>
            </MudSelect>
        </MudItem>
    </Filters>
    <Content>
        <MudDataGrid T="DiscountOrderDto"
                     Items="@_orders"
                     Loading="@_loading"
                     Hover="true" @ref="_dataGrid" Height="calc(100vh - 240px)">
            <ColGroup>
                <col/>
                <col/>
                <col/>
                <col style="width: 58px;"/>
            </ColGroup>
            <ToolBarContent>
                <MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center" Style="width:100%">
                    <MudText>لیست سفارشات</MudText>
                    <MudButton Variant="Variant.Outlined"
                              Color="Color.Info"
                              OnClick="ExportToExcel"
                              StartIcon="@Icons.Material.Filled.FileDownload"
                              Size="Size.Small">
                        خروجی Excel
                    </MudButton>
                </MudStack>
            </ToolBarContent>
            <Columns>
                <PropertyColumn Property="x => x.Id" Title="شناسه"/>

                <TemplateColumn Title="نام کاربر">
                    <CellTemplate>
                        @if (context.Item.UserId > 0)
                        {
                            <MudLink Href="@($"/network/user-info/{context.Item.UserId}")" Underline="Underline.Hover" Color="Color.Primary">
                                @context.Item.UserFullName
                            </MudLink>
                        }
                        else
                        {
                            <MudText>@context.Item.UserFullName</MudText>
                        }
                    </CellTemplate>
                </TemplateColumn>

                <PropertyColumn Property="x => x.UserMobile" Title="موبایل"/>

                <TemplateColumn Title="مبلغ کل">
                    <CellTemplate>
                        <MudText>@context.Item.TotalPrice.ToString("N0") تومان</MudText>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="کیف پول اعتباری">
                    <CellTemplate>
                        <MudText Color="Color.Success">@context.Item.DiscountBalanceUsed.ToString("N0") تومان</MudText>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="پرداخت درگاه">
                    <CellTemplate>
                        <MudText Typo="Typo.body2">
                            <strong>@context.Item.GatewayAmount.ToString("N0") تومان</strong>
                        </MudText>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="تعداد آیتم">
                    <CellTemplate>
                        <MudChip T="string" Color="Color.Info" Size="Size.Small">@context.Item.ItemsCount آیتم</MudChip>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="وضعیت پرداخت">
                    <CellTemplate>
                        <MudChip T="string"
                                 Size="Size.Small"
                                 Color="@GetPaymentStatusColor(context.Item.PaymentStatusValue)">
                            @GetPaymentStatusText(context.Item.PaymentStatusValue)
                        </MudChip>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="تاریخ پرداخت" CellStyle="text-wrap: nowrap;" HeaderStyle="text-wrap: nowrap;">
                    <CellTemplate>
                        @(context.Item.PaymentDate?.MiladiToJalaliWithTime() ?? "-")
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="آدرس">
                    <CellTemplate>
                        <MudTooltip Text="@context.Item.ShippingAddress">
                            <MudText Typo="Typo.body2">
                                @(string.IsNullOrWhiteSpace(context.Item.ShippingAddress)
                                    ? "-"
                                    : (context.Item.ShippingAddress.Length > 30
                                        ? context.Item.ShippingAddress.Substring(0, 30) + "..."
                                        : context.Item.ShippingAddress))
                            </MudText>
                        </MudTooltip>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="وضعیت ارسال">
                    <CellTemplate>
                        <MudChip T="string"
                                 Size="Size.Small"
                                 Color="@GetStatusColor(context.Item.Status)">
                            @GetStatusText(context.Item.Status)
                        </MudChip>
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn Title="تاریخ ثبت" CellStyle="text-wrap: nowrap;" HeaderStyle="text-wrap: nowrap;">
                    <CellTemplate>
                        @(context.Item.Created?.MiladiToJalaliWithTime() ?? "—")
                    </CellTemplate>
                </TemplateColumn>

                <TemplateColumn StickyLeft="true" Title="عملیات" CellStyle="text-wrap: nowrap;"
                                HeaderStyle="text-wrap: nowrap;">
                    <CellTemplate>
                        <MudStack Row="true" AlignItems="AlignItems.Center">

                            <MudTooltip Text="جزئیات سفارش">
                                <MudIconButton Icon="@Icons.Material.Filled.Info"
                                               Size="Size.Small"
                                               ButtonType="ButtonType.Button"
                                               OnClick="@(() => OpenOrderDetails(context.Item.Id))"
                                              />
                            </MudTooltip>

                            <MudTooltip Text="تغییر وضعیت ارسال">
                                <MudIconButton Icon="@Icons.Material.Filled.LocalShipping"
                                               Size="Size.Small"
                                               Color="Color.Primary"
                                               ButtonType="ButtonType.Button"
                                               OnClick="@(() => OpenChangeStatusDialog(context.Item))"
                                              />
                            </MudTooltip>

                            <MudTooltip Text="لغو سفارش">
                                <MudIconButton Icon="@Icons.Material.Filled.Cancel" Size="Size.Small"
                                               Color="Color.Error"
                                               ButtonType="ButtonType.Button" OnClick="@(() => OnDelete(context.Item))"
                                              />
                            </MudTooltip>
                        </MudStack>
                    </CellTemplate>
                </TemplateColumn>
            </Columns>
            <NoRecordsContent>
                <MudAlert Severity="Severity.Info" Dense="true" Variant="Variant.Text" Class="my-4">موردی یافت نشد.</MudAlert>
            </NoRecordsContent>
            <PagerContent>
                <MudDataGridPager T="DiscountOrderDto" PageSizeOptions=@(new int[] { 20, 50, 100 })
                                  InfoFormat="سطر {first_item} تا {last_item} از {all_items}"
                                  RowsPerPageString="تعداد در صفحه"/>
            </PagerContent>
        </MudDataGrid>

    </Content>
</BackOffice.Common.BaseComponents.BasePageComponent>
