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(