Просмотр исходного кода

refactor: remove campos nao necessarios de payment_splits

Gustavo Mantovani 2 недель назад
Родитель
Сommit
b5c5faf8e8

+ 22 - 17
app/Http/Controllers/ProviderWithdrawalController.php

@@ -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);
 

+ 50 - 0
database/migrations/2026_05_26_190957_remove_legacy_gateway_columns_from_payment_splits_table.php

@@ -0,0 +1,50 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up(): void
+    {
+        Schema::table('payment_splits', function (Blueprint $table) {
+            $table->dropIndex('payment_transfers_gateway_entity_reference_index');
+            $table->dropIndex('payment_transfers_gateway_operation_reference_index');
+            $table->dropIndex('payment_transfers_gateway_parent_reference_index');
+
+            $table->dropColumn([
+                'gateway_entity_reference',
+                'gateway_entity_label',
+                'gateway_operation_reference',
+                'gateway_operation_label',
+                'gateway_parent_reference',
+                'gateway_parent_label',
+                'failed_at',
+                'failure_code',
+                'failure_message',
+                'gateway_payload',
+            ]);
+        });
+    }
+
+    public function down(): void
+    {
+        Schema::table('payment_splits', function (Blueprint $table) {
+            $table->string('gateway_entity_reference')->nullable();
+            $table->string('gateway_entity_label')->nullable();
+            $table->string('gateway_operation_reference')->nullable();
+            $table->string('gateway_operation_label')->nullable();
+            $table->string('gateway_parent_reference')->nullable();
+            $table->string('gateway_parent_label')->nullable();
+            $table->timestamp('failed_at')->nullable();
+            $table->string('failure_code')->nullable();
+            $table->text('failure_message')->nullable();
+            $table->json('gateway_payload')->nullable();
+
+            $table->index('gateway_entity_reference');
+            $table->index('gateway_operation_reference');
+            $table->index('gateway_parent_reference');
+        });
+    }
+};