From bbe783dc83ea169c2c186a4370d2f25add12a9ab Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sat, 27 Dec 2025 06:22:11 +0330 Subject: [PATCH] feat(UserPayouts): implement withdrawal approval and rejection functionality --- .../Pages/Commission/UserPayouts.razor | 14 ++++-- .../Pages/Commission/UserPayouts.razor.cs | 43 ++++++++++++++++--- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/BackOffice/Pages/Commission/UserPayouts.razor b/src/BackOffice/Pages/Commission/UserPayouts.razor index e08fd7e..aed0f23 100644 --- a/src/BackOffice/Pages/Commission/UserPayouts.razor +++ b/src/BackOffice/Pages/Commission/UserPayouts.razor @@ -109,13 +109,19 @@ Color="Color.Info" OnClick="@(() => ViewDetails(context.Item))" /> - @if (context.Item.Status == 0) + @if (context.Item.Status == 2) @* WithdrawRequested *@ { - - + + OnClick="@(() => ApproveWithdrawal(context.Item))" /> + + + } diff --git a/src/BackOffice/Pages/Commission/UserPayouts.razor.cs b/src/BackOffice/Pages/Commission/UserPayouts.razor.cs index 5c70181..51c4a91 100644 --- a/src/BackOffice/Pages/Commission/UserPayouts.razor.cs +++ b/src/BackOffice/Pages/Commission/UserPayouts.razor.cs @@ -112,24 +112,55 @@ public partial class UserPayouts }); } - private async Task ProcessWithdrawal(UserCommissionPayoutModel payout) + private async Task ApproveWithdrawal(UserCommissionPayoutModel payout) { var confirmed = await DialogService.ShowMessageBox( - "تایید پردازش برداشت", - $"آیا از پردازش برداشت برای کاربر {payout.UserName} (مبلغ: {payout.TotalAmount:N0} ریال) مطمئن هستید؟", + "تایید برداشت", + $"آیا از تایید برداشت برای کاربر {payout.UserName} (مبلغ: {payout.TotalAmount:N0} ریال) مطمئن هستید؟", yesText: "تایید", cancelText: "لغو"); if (confirmed == true) { try { - // TODO: Call ProcessWithdrawal API - Snackbar.Add("درخواست برداشت با موفقیت پردازش شد", Severity.Success); + await CommissionContract.ProcessWithdrawalAsync(new ProcessWithdrawalRequest + { + PayoutId = payout.Id, + IsApproved = true + }); + Snackbar.Add("درخواست برداشت با موفقیت تایید شد", Severity.Success); await ApplyFilter(); } catch (Exception ex) { - Snackbar.Add($"خطا در پردازش: {ex.Message}", Severity.Error); + Snackbar.Add($"خطا در تایید: {ex.Message}", Severity.Error); + } + } + } + + private async Task RejectWithdrawal(UserCommissionPayoutModel payout) + { + var reason = await DialogService.ShowMessageBox( + "رد برداشت", + $"آیا از رد برداشت برای کاربر {payout.UserName} مطمئن هستید؟", + yesText: "رد کردن", cancelText: "لغو"); + + if (reason == true) + { + try + { + await CommissionContract.ProcessWithdrawalAsync(new ProcessWithdrawalRequest + { + PayoutId = payout.Id, + IsApproved = false, + Reason = "رد شده توسط ادمین" + }); + Snackbar.Add("درخواست برداشت رد شد", Severity.Warning); + await ApplyFilter(); + } + catch (Exception ex) + { + Snackbar.Add($"خطا در رد: {ex.Message}", Severity.Error); } } }