6db83ccd90
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 4m55s
- Discount store pages (products, cart, orders, order detail) - Blog pages and services - Payment gateway callback page - AppImage component, EmptyState, LoadingState, PageHeader - DiscountCartService, DiscountOrderService, DiscountProductService - BlogCategoryService, BlogPostService, SitePageService, ImageCacheService - PhoneVerifyForm component - Profile Hub page - UI/UX improvements across all pages - landing.js for homepage - Config and routing updates
161 lines
8.9 KiB
Plaintext
161 lines
8.9 KiB
Plaintext
@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>
|