feat(UserPayouts): implement withdrawal approval and rejection functionality
Build and Deploy / build (push) Successful in 2m6s

This commit is contained in:
masoodafar-web
2025-12-27 06:22:11 +03:30
parent 6f5bfba0a5
commit bbe783dc83
2 changed files with 47 additions and 10 deletions
@@ -109,13 +109,19 @@
Color="Color.Info"
OnClick="@(() => ViewDetails(context.Item))" />
</MudTooltip>
@if (context.Item.Status == 0)
@if (context.Item.Status == 2) @* WithdrawRequested *@
{
<MudTooltip Text="پردازش برداشت">
<MudIconButton Icon="@Icons.Material.Filled.Payment"
<MudTooltip Text="تایید برداشت">
<MudIconButton Icon="@Icons.Material.Filled.CheckCircle"
Size="Size.Small"
Color="Color.Success"
OnClick="@(() => ProcessWithdrawal(context.Item))" />
OnClick="@(() => ApproveWithdrawal(context.Item))" />
</MudTooltip>
<MudTooltip Text="رد برداشت">
<MudIconButton Icon="@Icons.Material.Filled.Cancel"
Size="Size.Small"
Color="Color.Error"
OnClick="@(() => RejectWithdrawal(context.Item))" />
</MudTooltip>
}
</MudStack>
@@ -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);
}
}
}