From 3c2a0edca88cbff695db6ae63be2509288c63a7e Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Fri, 24 Apr 2026 03:43:26 +0330 Subject: [PATCH] feat(commission/dashboard): add package selector for per-package calculation - Dashboard: added PackageSelect component to filter/trigger calculation per package - LoadPoolData: now sends PackageId in GetWeeklyCommissionPoolRequest - TriggerCalculation: now sends PackageId in TriggerWeeklyCalculationRequest - Pool Details: shows PackageTitle in table --- .../Pages/Commission/Dashboard.razor | 19 ++++++++++++- .../Pages/Commission/Dashboard.razor.cs | 28 ++++++++++++++++--- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/BackOffice/Pages/Commission/Dashboard.razor b/src/BackOffice/Pages/Commission/Dashboard.razor index f1f446b..74096d2 100644 --- a/src/BackOffice/Pages/Commission/Dashboard.razor +++ b/src/BackOffice/Pages/Commission/Dashboard.razor @@ -79,7 +79,7 @@ - + انتخاب هفته: @if (_allWeeks.Any()) @@ -159,6 +159,10 @@ { لیست هفته‌ها بارگذاری نشده } + + شناسه استخر: @_poolData.Id + + پکیج: + + @if (!string.IsNullOrEmpty(_poolData.PackageTitle)) + { + @_poolData.PackageTitle + } + else + { + - + } + + شماره هفته: @_currentWeekDisplayName diff --git a/src/BackOffice/Pages/Commission/Dashboard.razor.cs b/src/BackOffice/Pages/Commission/Dashboard.razor.cs index 1e667eb..4d753b3 100644 --- a/src/BackOffice/Pages/Commission/Dashboard.razor.cs +++ b/src/BackOffice/Pages/Commission/Dashboard.razor.cs @@ -3,6 +3,7 @@ using MudBlazor; using System.Globalization; using CMSMicroservice.Protobuf.Protos.Commission; using BackOffice.Services; +using Google.Protobuf.WellKnownTypes; namespace BackOffice.Pages.Commission; @@ -22,6 +23,9 @@ public partial class Dashboard private string _currentWeekDisplayText = string.Empty; // نمایش فارسی private GetWeeklyCommissionPoolResponse? _poolData; + // Package filter + private long? _selectedPackageId; + // Available weeks data private CMSMicroservice.Protobuf.Protos.Commission.GetAvailableWeeksResponse? _availableWeeks; private List _allWeeks = new(); @@ -91,6 +95,12 @@ public partial class Dashboard await LoadPoolData(); } + private async Task OnPackageChanged(long? packageId) + { + _selectedPackageId = packageId; + await LoadPoolData(); + } + private async Task LoadPoolData() { if (_currentWeekDefinitionId <= 0) @@ -106,7 +116,8 @@ public partial class Dashboard var request = new GetWeeklyCommissionPoolRequest { - WeekDefinitionId = _currentWeekDefinitionId + WeekDefinitionId = _currentWeekDefinitionId, + PackageId = _selectedPackageId.HasValue ? Int64Value.FromLong(_selectedPackageId.Value) : null }; _poolData = await CommissionContract.GetWeeklyCommissionPoolAsync(request); @@ -126,23 +137,32 @@ public partial class Dashboard private async Task TriggerCalculation() { + var packageInfo = _selectedPackageId.HasValue + ? $" (فقط پکیج #{_selectedPackageId})" + : " (همه پکیج‌ها)"; + var confirmed = await DialogService.ShowMessageBox( "تایید", - $"آیا از اجرای محاسبه دستی برای هفته {_currentWeekDisplayName} مطمئن هستید؟", + $"آیا از اجرای محاسبه دستی برای هفته {_currentWeekDisplayName}{packageInfo} مطمئن هستید؟", yesText: "بله", cancelText: "خیر"); if (confirmed == true) { try { - await CommissionContract.TriggerWeeklyCalculationAsync(new TriggerWeeklyCalculationRequest() + var req = new TriggerWeeklyCalculationRequest() { WeekDefinitionId = _currentWeekDefinitionId, ForceRecalculate = true, SkipBalances = false, SkipPayouts = false, SkipPool = false, - }); + }; + + if (_selectedPackageId.HasValue) + req.PackageId = Int64Value.FromLong(_selectedPackageId.Value); + + await CommissionContract.TriggerWeeklyCalculationAsync(req); Snackbar.Add("محاسبه با موفقیت آغاز شد. این عملیات ممکن است چند دقیقه طول بکشد.", Severity.Info); // Reload data after a delay