Files
radicall/app/Http/Controllers/Admin/WithdrawRequestController.php

78 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Enums\WithdrawRequestStatusEnum;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\WithdrawRejectRequest;
use App\Http\Resources\Admin\WithdrawRequestResource;
use App\Models\WithdrawRequest;
use App\Services\Wallet\WalletService;
use App\Services\Wallet\WithdrawRequestService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Inertia\Inertia;
class WithdrawRequestController extends Controller
{
protected WithdrawRequestService $withdrawRequestService;
protected WalletService $walletService;
public function __construct(WithdrawRequestService $withdrawRequestService, WalletService $walletService)
{
$this->withdrawRequestService = $withdrawRequestService;
$this->walletService = $walletService;
}
public function index(Request $request)
{
$lists = WithdrawRequest::with(['user', 'bankCard', 'reviewedBy'])
->when(isset($request->search), function ($query) use ($request) {
$query->whereHas('user', function ($userQuery) use ($request) {
$userQuery->where('fullname', 'LIKE', "%{$request->search}%")
->orWhere('phone', 'LIKE', "%{$request->search}%")
->orWhere('email', 'LIKE', "%{$request->search}%");
});
})
->when(isset($request->status) && $request->status != 'همه وضعیت ها', function ($query) use ($request) {
$query->where('status', $request->status);
})
->latest()
->paginate(20)
->withQueryString()
->onEachSide(1);
$pending = WithdrawRequest::where('status', WithdrawRequestStatusEnum::Pending->value);
return Inertia::admin('WithdrawRequests/index', [
'withdrawRequests' => WithdrawRequestResource::collection($lists),
'stats' => [
'pending_count' => (clone $pending)->count(),
'pending_amount' => (int) (clone $pending)->sum('amount'),
'system_wallet_balance' => $this->walletService->system()->balance,
],
'search' => $request->search,
'status' => $request->status,
]);
}
public function approve(WithdrawRequest $withdrawRequest)
{
$this->withdrawRequestService->approve($withdrawRequest, Auth::user());
session()->flash('success', 'درخواست برداشت تایید شد و مبلغ به ولت سایت منتقل شد.');
return response(null, 200);
}
public function reject(WithdrawRejectRequest $request, WithdrawRequest $withdrawRequest)
{
$this->withdrawRequestService->reject($withdrawRequest, Auth::user(), $request->validated('note'));
session()->flash('success', 'درخواست برداشت رد شد.');
return response(null, 200);
}
}