@page "/payment/transactions"
@using BackOffice.Common.BaseComponents

<BasePageComponent @ref="_basePage" OnSubmitClick="OnFilterSubmit" OnClearFilterClick="OnFilterCleared">
    <Filters>
        <MudItem xs="12" sm="6" md="4">
            <BackOffice.Common.BaseComponents.DateRangePicker @bind-From="_fromDate" @bind-To="_toDate" Label="بازه تاریخی" />
        </MudItem>
        <MudItem xs="12" sm="6" md="4">
            <MudSelect T="int?" Clearable="true" Label="وضعیت پرداخت" Variant="Variant.Outlined"
                       Margin="Margin.Dense" @bind-Value="_statusFilter">
                <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="4">
            <MudSelect T="int?" Clearable="true" Label="نوع تراکنش" Variant="Variant.Outlined"
                       Margin="Margin.Dense" @bind-Value="_typeFilter">
                <MudSelectItem T="int?" Value="@(0)">نامشخص</MudSelectItem>
                <MudSelectItem T="int?" Value="@(1)">خرید پکیج</MudSelectItem>
                <MudSelectItem T="int?" Value="@(2)">پرداخت دستی</MudSelectItem>
                <MudSelectItem T="int?" Value="@(3)">شارژ کیف‌پول</MudSelectItem>
                <MudSelectItem T="int?" Value="@(4)">بازگشت وجه</MudSelectItem>
            </MudSelect>
        </MudItem>
    </Filters>
    <Content>
        <MudDataGrid @ref="_dataGrid" T="TransactionModel"
                     ServerData="LoadData"
                     Hover="true" Dense="true"
                     Height="calc(100vh - 240px)">
            <Columns>
                <PropertyColumn Property="x => x.Id" Title="شناسه" />
                <PropertyColumn Property="x => x.RefId" Title="شماره مرجع" />
                <PropertyColumn Property="x => x.Amount" Title="مبلغ">
                    <CellTemplate>
                        @context.Item.Amount.ToString("N0")
                    </CellTemplate>
                </PropertyColumn>
                <TemplateColumn Title="وضعیت">
                    <CellTemplate>
                        <MudChip T="string"
                                 Size="Size.Small"
                                 Color="@GetStatusColor(context.Item.PaymentStatus)">
                            @GetStatusText(context.Item.PaymentStatus)
                        </MudChip>
                    </CellTemplate>
                </TemplateColumn>
                <TemplateColumn Title="تاریخ پرداخت">
                    <CellTemplate>
                        @context.Item.PaymentDate.ToLocalTime().MiladiToJalaliWithTime()
                    </CellTemplate>
                </TemplateColumn>
                <TemplateColumn Title="نوع">
                    <CellTemplate>
                        @GetTypeText(context.Item.Type)
                    </CellTemplate>
                </TemplateColumn>
                <TemplateColumn Title="عملیات">
                    <CellTemplate>
                        <MudTooltip Text="جزئیات">
                            <MudIconButton Icon="@Icons.Material.Filled.Info"
                                           Size="Size.Small"
                                           OnClick="@(() => OpenDetails(context.Item))" />
                        </MudTooltip>
                    </CellTemplate>
                </TemplateColumn>
            </Columns>
            <NoRecordsContent>
                <MudAlert Severity="Severity.Info" Dense="true" Variant="Variant.Text" Class="my-4">موردی یافت نشد.</MudAlert>
            </NoRecordsContent>
            <PagerContent>
                <MudDataGridPager T="TransactionModel" PageSizeOptions="@(new int[] { 20, 50, 100 })"
                                  InfoFormat="سطر {first_item} تا {last_item} از {all_items}"
                                  RowsPerPageString="تعداد در صفحه" />
            </PagerContent>
        </MudDataGrid>
    </Content>
</BasePageComponent>

