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);
}
}
}