feat: Implement Commission and Network Statistics Pages with DTOs and Services

- Added CommissionDashboardPage and CommissionHistoryPage for displaying commission payouts and history.
- Implemented WeeklyBalancePage to show weekly balance details.
- Created NetworkStatisticsPage to display network statistics and tree structure.
- Developed corresponding services (CommissionService, NetworkMembershipService) for data retrieval.
- Introduced DTOs for Commission and Network data structures (CommissionPayoutDto, WeeklyBalanceDto, NetworkStatisticsDto).
- Added mock data generation for testing purposes in services.
- Enhanced UI with MudBlazor components for better user experience.
This commit is contained in:
masoodafar-web
2025-12-04 17:29:16 +03:30
parent a8e6693c70
commit 95c6bf5efa
25 changed files with 1882 additions and 26 deletions
+24 -20
View File
@@ -10,23 +10,27 @@
</MudStack>
<MudGrid Spacing="2">
<MudItem xs="12" sm="6">
<MudItem xs="12" sm="6" md="4">
<MudPaper Elevation="2" Class="pa-4 rounded-lg">
<MudText Typo="Typo.subtitle2" Class="mud-text-secondary">موجودی اعتباری</MudText>
<MudText Typo="Typo.h4" Color="Color.Primary">@_balances.Credit</MudText>
</MudPaper>
</MudItem>
<MudItem xs="12" sm="6">
<MudPaper Elevation="2" Class="pa-4 rounded-lg">
<MudText Typo="Typo.subtitle2" Class="mud-text-secondary">موجودی تخفیف باشگاه</MudText>
<MudText Typo="Typo.h4" Color="Color.Primary">@_balances.Discount</MudText>
<MudText Typo="Typo.caption" Class="mud-text-secondary">در انتظار اتصال CMS برای مقدار واقعی</MudText>
<MudItem xs="12" sm="6" md="4">
<MudPaper Elevation="2" Class="pa-4 rounded-lg" Style="background-color: var(--mud-palette-warning-lighten);">
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
<MudIcon Icon="@Icons.Material.Filled.Discount" Color="Color.Warning" Size="Size.Large" />
<MudStack Spacing="0">
<MudText Typo="Typo.subtitle2" Style="color: var(--mud-palette-warning-darken);">موجودی تخفیف باشگاه</MudText>
<MudText Typo="Typo.h4" Style="color: var(--mud-palette-warning-darken);"><strong>@_balances.Discount</strong></MudText>
</MudStack>
</MudStack>
</MudPaper>
</MudItem>
<MudItem xs="12" sm="6">
<MudItem xs="12" sm="6" md="4">
<MudPaper Elevation="2" Class="pa-4 rounded-lg">
<MudText Typo="Typo.subtitle2" Class="mud-text-secondary">موجودی شبکه</MudText>
<MudText Typo="Typo.h4" Color="Color.Primary">@_balances.Network</MudText>
<MudText Typo="Typo.h4" Color="Color.Success">@_balances.Network</MudText>
</MudPaper>
</MudItem>
</MudGrid>
@@ -39,9 +43,9 @@
Variant="Variant.Outlined"
Type="MudBlazor.InputType.Number"
Required="true" />
<MudRadioGroup @bind-SelectedOption="_withdrawMethod" Row="true">
<MudRadio Option="@WithdrawalMethodClient.Cash" Label="برداشت نقدی (نیاز به شبا)" />
<MudRadio Option="@WithdrawalMethodClient.Diamond" Label="الماس/غیرنقدی" />
<MudRadioGroup T="WithdrawalMethodClient" @bind-SelectedOption="_withdrawMethod" Row="true">
<MudRadio T="WithdrawalMethodClient" Option="@WithdrawalMethodClient.Cash" Label="برداشت نقدی (نیاز به شبا)" />
<MudRadio T="WithdrawalMethodClient" Option="@WithdrawalMethodClient.Diamond" Label="الماس/غیرنقدی" />
</MudRadioGroup>
<MudTextField @bind-Value="_withdrawIban"
Label="شماره شبا"
@@ -73,16 +77,16 @@
Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.Search" />
<MudSelect T="string" @bind-Value="_filterType" Label="نوع تراکنش" Variant="Variant.Outlined">
<MudSelectItem Value="all">همه</MudSelectItem>
<MudSelectItem Value="in">ورودی (شارژ)</MudSelectItem>
<MudSelectItem Value="out">خروجی (برداشت/خرید)</MudSelectItem>
<MudSelectItem T="string" Value="@("all")">همه</MudSelectItem>
<MudSelectItem T="string" Value="@("in")">ورودی (شارژ)</MudSelectItem>
<MudSelectItem T="string" Value="@("out")">خروجی (برداشت/خرید)</MudSelectItem>
</MudSelect>
<MudSelect T="string" @bind-Value="_withdrawStatusFilter" Label="وضعیت برداشت" Variant="Variant.Outlined">
<MudSelectItem Value="all">همه</MudSelectItem>
<MudSelectItem Value="pending">Pending</MudSelectItem>
<MudSelectItem Value="requested">Requested</MudSelectItem>
<MudSelectItem Value="withdrawn">Withdrawn</MudSelectItem>
<MudSelectItem Value="cancelled">Cancelled</MudSelectItem>
<MudSelectItem T="string" Value="@("all")">همه</MudSelectItem>
<MudSelectItem T="string" Value="@("pending")">Pending</MudSelectItem>
<MudSelectItem T="string" Value="@("requested")">Requested</MudSelectItem>
<MudSelectItem T="string" Value="@("withdrawn")">Withdrawn</MudSelectItem>
<MudSelectItem T="string" Value="@("cancelled")">Cancelled</MudSelectItem>
</MudSelect>
<MudButton Variant="Variant.Outlined" OnClick="ApplyFilters" StartIcon="@Icons.Material.Filled.FilterList">اعمال فیلتر</MudButton>
</MudStack>
@@ -138,7 +142,7 @@
<MudTd>@context.WeekNumber</MudTd>
<MudTd>@FormatPrice(context.Amount)</MudTd>
<MudTd>
<MudChip Color="@(ResolveStatusColor(context.Status))" Variant="Variant.Outlined" Size="Size.Small">
<MudChip T="string" Color="@(ResolveStatusColor(context.Status))" Variant="Variant.Outlined" Size="Size.Small">
@ResolveStatusText(context.Status)
</MudChip>
</MudTd>