provider; if (! $provider) { return $this->errorResponse('Apenas prestadores podem acessar este recurso.', 403); } return $this->successResponse(payload: [ 'available' => $this->service->getAvailableBalance($provider), 'pending' => $this->service->getPendingBalance($provider), ]); } public function index(): JsonResponse { $provider = Auth::user()->provider; if (! $provider) { return $this->errorResponse('Apenas prestadores podem acessar este recurso.', 403); } $items = $this->service->getWithdrawals($provider); return $this->successResponse(payload: ProviderWithdrawalResource::collection($items)); } public function store(Request $request): JsonResponse { $provider = Auth::user()->provider; if (! $provider) { return $this->errorResponse('Apenas prestadores podem solicitar saque.', 403); } $withdrawal = $this->service->requestWithdrawal($provider); return $this->successResponse( payload: new ProviderWithdrawalResource($withdrawal), message: 'Saque solicitado com sucesso.', code: 201, ); } public function show(int $id): JsonResponse { $provider = Auth::user()->provider; if (! $provider) { return $this->errorResponse('Apenas prestadores podem acessar este recurso.', 403); } $withdrawal = $this->service->getWithdrawal($id, $provider); return $this->successResponse(payload: new ProviderWithdrawalResource($withdrawal)); } }