|
|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
+use App\Http\Resources\PaymentSplitResource;
|
|
|
use App\Http\Resources\ProviderWithdrawalResource;
|
|
|
use App\Services\ProviderWithdrawalService;
|
|
|
use Illuminate\Http\JsonResponse;
|
|
|
@@ -14,27 +15,39 @@ class ProviderWithdrawalController extends Controller
|
|
|
private readonly ProviderWithdrawalService $service,
|
|
|
) {}
|
|
|
|
|
|
- public function balance(): JsonResponse
|
|
|
+ private function resolveProvider()
|
|
|
{
|
|
|
$provider = Auth::user()->provider;
|
|
|
|
|
|
if (! $provider) {
|
|
|
- return $this->errorResponse('Apenas prestadores podem acessar este recurso.', 403);
|
|
|
+ abort(403, 'Apenas prestadores podem acessar este recurso.');
|
|
|
}
|
|
|
|
|
|
+ return $provider;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function balance(): JsonResponse
|
|
|
+ {
|
|
|
+ $provider = $this->resolveProvider();
|
|
|
+
|
|
|
return $this->successResponse(payload: [
|
|
|
'available' => $this->service->getAvailableBalance($provider),
|
|
|
'pending' => $this->service->getPendingBalance($provider),
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
- public function index(): JsonResponse
|
|
|
+ public function splits(): JsonResponse
|
|
|
{
|
|
|
- $provider = Auth::user()->provider;
|
|
|
+ $provider = $this->resolveProvider();
|
|
|
|
|
|
- if (! $provider) {
|
|
|
- return $this->errorResponse('Apenas prestadores podem acessar este recurso.', 403);
|
|
|
- }
|
|
|
+ $splits = $this->service->getPaymentSplits($provider);
|
|
|
+
|
|
|
+ return $this->successResponse(payload: PaymentSplitResource::collection($splits));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function index(): JsonResponse
|
|
|
+ {
|
|
|
+ $provider = $this->resolveProvider();
|
|
|
|
|
|
$items = $this->service->getWithdrawals($provider);
|
|
|
|
|
|
@@ -43,11 +56,7 @@ class ProviderWithdrawalController extends Controller
|
|
|
|
|
|
public function store(Request $request): JsonResponse
|
|
|
{
|
|
|
- $provider = Auth::user()->provider;
|
|
|
-
|
|
|
- if (! $provider) {
|
|
|
- return $this->errorResponse('Apenas prestadores podem solicitar saque.', 403);
|
|
|
- }
|
|
|
+ $provider = $this->resolveProvider();
|
|
|
|
|
|
$withdrawal = $this->service->requestWithdrawal($provider);
|
|
|
|
|
|
@@ -60,11 +69,7 @@ class ProviderWithdrawalController extends Controller
|
|
|
|
|
|
public function show(int $id): JsonResponse
|
|
|
{
|
|
|
- $provider = Auth::user()->provider;
|
|
|
-
|
|
|
- if (! $provider) {
|
|
|
- return $this->errorResponse('Apenas prestadores podem acessar este recurso.', 403);
|
|
|
- }
|
|
|
+ $provider = $this->resolveProvider();
|
|
|
|
|
|
$withdrawal = $this->service->getWithdrawal($id, $provider);
|
|
|
|