From c17ad68c304b6a9a07b38ad1443617352b57aacc Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Mon, 18 May 2026 00:36:30 +0330 Subject: [PATCH] feat(commission/payouts): add bulk wallet credit button for pending payouts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UserPayouts.razor: add 'واریز به کیف پول' button in toolbar, enabled only when a week is selected; shows loading spinner while processing - UserPayouts.razor.cs: implement BulkCreditWallets — confirms with dialog, calls BulkCreditPayoutsAsync, shows credited count + amount in snackbar - BackOffice.csproj: bump Foursat.CMSMicroservice.Protobuf to 0.0.198 Co-authored-by: Cursor --- src/BackOffice/BackOffice.csproj | 2 +- .../Pages/Commission/UserPayouts.razor | 15 +++++++ .../Pages/Commission/UserPayouts.razor.cs | 45 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/BackOffice/BackOffice.csproj b/src/BackOffice/BackOffice.csproj index 842dfc3..c027d77 100644 --- a/src/BackOffice/BackOffice.csproj +++ b/src/BackOffice/BackOffice.csproj @@ -138,7 +138,7 @@ - + diff --git a/src/BackOffice/Pages/Commission/UserPayouts.razor b/src/BackOffice/Pages/Commission/UserPayouts.razor index 2d3349e..a0ddf6b 100644 --- a/src/BackOffice/Pages/Commission/UserPayouts.razor +++ b/src/BackOffice/Pages/Commission/UserPayouts.razor @@ -49,6 +49,21 @@ StartIcon="@Icons.Material.Filled.Search"> جستجو + + @if (_isCreditingWallets) + { + + در حال واریز... + } + else + { + واریز به کیف پول + } + diff --git a/src/BackOffice/Pages/Commission/UserPayouts.razor.cs b/src/BackOffice/Pages/Commission/UserPayouts.razor.cs index 5ea0975..a125b41 100644 --- a/src/BackOffice/Pages/Commission/UserPayouts.razor.cs +++ b/src/BackOffice/Pages/Commission/UserPayouts.razor.cs @@ -18,6 +18,7 @@ public partial class UserPayouts private long? _filterWeekDefinitionId; private int? _filterStatus; private long? _filterPackageId; + private bool _isCreditingWallets; private async Task> ServerReload(GridState state) { @@ -147,6 +148,50 @@ public partial class UserPayouts } } + private async Task BulkCreditWallets() + { + if (!_filterWeekDefinitionId.HasValue) + { + Snackbar.Add("لطفاً ابتدا یک هفته انتخاب کنید", Severity.Warning); + return; + } + + var confirmed = await DialogService.ShowMessageBox( + "واریز دسته‌جمعی به کیف پول", + $"آیا از واریز کمیسیون همه پرداخت‌های «در انتظار» هفته انتخاب‌شده به کیف پول کاربران مطمئن هستید؟ این عملیات برگشت‌پذیر نیست.", + yesText: "بله، واریز کن", cancelText: "لغو"); + + if (confirmed != true) + return; + + _isCreditingWallets = true; + StateHasChanged(); + + try + { + var result = await CommissionContract.BulkCreditPayoutsAsync(new BulkCreditPayoutsRequest + { + WeekDefinitionId = _filterWeekDefinitionId.Value + }); + + if (result.CreditedCount == 0) + Snackbar.Add("هیچ پرداخت در انتظاری برای این هفته یافت نشد", Severity.Info); + else + Snackbar.Add(result.Message, Severity.Success); + + await ApplyFilter(); + } + catch (Exception ex) + { + Snackbar.Add($"خطا در واریز: {ex.Message}", Severity.Error); + } + finally + { + _isCreditingWallets = false; + StateHasChanged(); + } + } + private async Task RejectWithdrawal(UserCommissionPayoutModel payout) { var reason = await DialogService.ShowMessageBox(