78 lines
2.9 KiB
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);
|
|
}
|
|
}
|