@attribute [Route(RouteConstants.Profile.WithdrawalRequests)]

<PageTitle>درخواست‌های برداشت</PageTitle>

<MudContainer MaxWidth="MaxWidth.Large" Class="py-6">
    <MudStack Spacing="3">
        <PageHeader Title="درخواست‌های برداشت" BackHref="@RouteConstants.Profile.Wallet" />

        <!-- فرم درخواست برداشت جدید -->
        <MudPaper Elevation="2" Class="pa-4 rounded-lg">
            <MudText Typo="Typo.h6" Class="mb-3">ثبت درخواست برداشت جدید</MudText>
            
            @if (!_availablePayouts.Any())
            {
                <MudAlert Severity="Severity.Info" Variant="Variant.Outlined" Class="mb-3">
                    <MudText>در حال حاضر واریزی برای برداشت وجود ندارد.</MudText>
                </MudAlert>
            }
            else
            {
                <MudStack Spacing="2">
                    <MudSelect T="CommissionPayoutDto" @bind-Value="_selectedPayout"
                               Label="انتخاب واریز"
                               Variant="Variant.Outlined"
                               AnchorOrigin="Origin.BottomLeft"
                               Required="true"
                               ToStringFunc="@(p => p != null ? $"{p.WeekDisplayName} - {p.AmountFormatted}" : "")">
                        @foreach (var payout in _availablePayouts)
                        {
                            <MudSelectItem T="CommissionPayoutDto" Value="@payout">
                                <MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center" Class="w-100">
                                    <MudText>@payout.WeekDisplayName</MudText>
                                    <MudChip T="string" Color="Color.Success" Size="Size.Small" Variant="Variant.Filled">
                                        @payout.AmountFormatted
                                    </MudChip>
                                </MudStack>
                            </MudSelectItem>
                        }
                    </MudSelect>
                    
                    @if (_selectedPayout != null)
                    {
                        <MudAlert Severity="Severity.Success" Variant="Variant.Text" Dense="true">
                            مبلغ قابل برداشت: <strong>@_selectedPayout.AmountFormatted</strong>
                        </MudAlert>
                    }
                    
                    <MudRadioGroup T="WithdrawalMethodClient" @bind-Value="_withdrawMethod" Row="true">
                        <MudRadio T="WithdrawalMethodClient" Value="@WithdrawalMethodClient.Cash" Color="Color.Primary">
                            برداشت نقدی (نیاز به شبا)
                        </MudRadio>
                        <MudRadio T="WithdrawalMethodClient" Disabled="true" Value="@WithdrawalMethodClient.Diamond" Color="Color.Secondary">
                            الماس/غیرنقدی
                        </MudRadio>
                    </MudRadioGroup>
                    
                    <MudTextField @bind-Value="_withdrawIban"
                                  Label="شماره شبا"
                                  Variant="Variant.Outlined"
                                  Disabled="_withdrawMethod == WithdrawalMethodClient.Diamond"
                                  Placeholder="IRxxxxxxxxxxxx"
                                  Adornment="Adornment.End"
                                  AdornmentText="IR" />
                    
                    <MudText Typo="Typo.caption" Class="mud-text-secondary">
                        حداقل مبلغ برداشت: @FormatPrice(_minWithdrawalAmount)
                    </MudText>
                    
                    <MudButton Disabled="@(_isSubmittingWithdrawal || _selectedPayout == null)"
                               Variant="Variant.Filled"
                               Color="Color.Primary"
                               StartIcon="@Icons.Material.Filled.Outbound"
                               OnClick="SubmitWithdrawal">
                        @(_isSubmittingWithdrawal ? "در حال ثبت..." : "ثبت درخواست برداشت")
                    </MudButton>
                </MudStack>
            }
        </MudPaper>

        <!-- فیلتر وضعیت -->
        <MudPaper Elevation="2" Class="pa-4 rounded-lg">
            <MudStack Row="true" Spacing="2" AlignItems="AlignItems.End">
                <MudSelect T="string" @bind-Value="_statusFilter" Label="فیلتر وضعیت" Variant="Variant.Outlined" Style="min-width: 180px;">
                    <MudSelectItem T="string" Value="@("all")">همه</MudSelectItem>
                    <MudSelectItem T="string" Value="@("pending")">در انتظار</MudSelectItem>
                    <MudSelectItem T="string" Value="@("requested")">درخواست شده</MudSelectItem>
                    <MudSelectItem T="string" Value="@("withdrawn")">برداشت شده</MudSelectItem>
                    <MudSelectItem T="string" Value="@("cancelled")">لغو شده</MudSelectItem>
                </MudSelect>
                <MudButton Variant="Variant.Outlined" OnClick="ApplyFilter" StartIcon="@Icons.Material.Filled.FilterList">اعمال فیلتر</MudButton>
            </MudStack>
        </MudPaper>

        <!-- لیست درخواست‌های برداشت -->
        <MudPaper Elevation="2" Class="pa-4 rounded-lg">
            <MudText Typo="Typo.h6" Class="mb-3">لیست درخواست‌ها</MudText>
            
            @if (_isLoading)
            {
                <LoadingState />
            }
            else if (!_withdrawals.Any())
            {
                <MudAlert Severity="Severity.Info" Variant="Variant.Outlined">
                    هنوز درخواست برداشتی ثبت نشده است.
                </MudAlert>
            }
            else
            {
                <!-- نمایش دسکتاپ -->
                <MudHidden Breakpoint="Breakpoint.MdAndUp" Invert="true">
                    <MudTable Items="_withdrawals" Dense="true" Hover="true" Striped="true">
                        <HeaderContent>
                            <MudTh>هفته</MudTh>
                            <MudTh>مبلغ</MudTh>
                            <MudTh>وضعیت</MudTh>
                            <MudTh>روش برداشت</MudTh>
                            <MudTh>تاریخ ثبت</MudTh>
                        </HeaderContent>
                        <RowTemplate>
                            <MudTd DataLabel="هفته">@context.WeekDisplayName</MudTd>
                            <MudTd DataLabel="مبلغ">@FormatPrice(context.Amount)</MudTd>
                            <MudTd DataLabel="وضعیت">
                                <MudChip T="string" Color="@(ResolveStatusColor(context.Status))" Variant="Variant.Filled" Size="Size.Small">
                                    @ResolveStatusText(context.Status)
                                </MudChip>
                            </MudTd>
                            <MudTd DataLabel="روش">@ResolveMethodText(context.Method)</MudTd>
                            <MudTd DataLabel="تاریخ">@context.Created</MudTd>
                        </RowTemplate>
                    </MudTable>
                </MudHidden>

                <!-- نمایش موبایل -->
                <MudHidden Breakpoint="Breakpoint.MdAndUp">
                    <MudStack Spacing="2">
                        @foreach (var wd in _withdrawals)
                        {
                            <MudPaper Class="pa-3 rounded-lg" Outlined="true">
                                <MudStack Spacing="1">
                                    <MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center">
                                        <MudText Typo="Typo.subtitle2">@wd.WeekDisplayName</MudText>
                                        <MudChip T="string" Color="@(ResolveStatusColor(wd.Status))" Variant="Variant.Filled" Size="Size.Small">
                                            @ResolveStatusText(wd.Status)
                                        </MudChip>
                                    </MudStack>
                                    <MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center">
                                        <MudText Typo="Typo.h6" Color="Color.Primary">@FormatPrice(wd.Amount)</MudText>
                                        <MudText Typo="Typo.caption" Class="mud-text-secondary">@ResolveMethodText(wd.Method)</MudText>
                                    </MudStack>
                                    <MudText Typo="Typo.caption" Class="mud-text-secondary">@wd.Created</MudText>
                                </MudStack>
                            </MudPaper>
                        }
                    </MudStack>
                </MudHidden>
            }
        </MudPaper>
    </MudStack>
</MudContainer>
