refactor(integration): streamline integration management by removing IntegrationInstanceController and updating related requests and services

This commit is contained in:
2026-09-04 16:00:19 -03:00
parent 85edea0661
commit 99fe94fa6a
11 changed files with 75 additions and 196 deletions

View File

@@ -4,10 +4,7 @@ namespace App\Domains\Integration\Controllers;
use App\Domains\Client\Models\Client;
use App\Domains\Integration\Models\Integration;
use App\Domains\Integration\Models\IntegrationInstance;
use App\Domains\Integration\Requests\AssociateIntegrationInstanceRequest;
use App\Domains\Integration\Requests\StoreClientIntegrationRequest;
use App\Domains\Integration\Resources\IntegrationAssociationResource;
use App\Domains\Integration\Requests\ConfigureIntegrationRequest;
use App\Domains\Integration\Services\ClientIntegrationService;
use App\Domains\Integration\Services\IntegrationAssociationService;
use App\Http\Controllers\Controller;
@@ -39,7 +36,7 @@ class ClientIntegrationController extends Controller
}
public function store(
StoreClientIntegrationRequest $request,
ConfigureIntegrationRequest $request,
Client $client,
string $integrationCode,
): JsonResponse {
@@ -66,13 +63,6 @@ class ClientIntegrationController extends Controller
}
}
public function associate(AssociateIntegrationInstanceRequest $request, Client $client, string $integrationCode, IntegrationAssociationService $service)
{
return new IntegrationAssociationResource($service->associate(
$client, $integrationCode, IntegrationInstance::findOrFail($request->validated('integration_instance_id')),
));
}
public function destroy(Client $client, string $integrationCode, IntegrationAssociationService $service)
{
$service->detach($client, $integrationCode);

View File

@@ -1,42 +0,0 @@
<?php
namespace App\Domains\Integration\Controllers;
use App\Domains\Integration\Models\IntegrationInstance;
use App\Domains\Integration\Requests\StoreIntegrationInstanceRequest;
use App\Domains\Integration\Resources\IntegrationInstanceResource;
use App\Domains\Integration\Services\IntegrationInstanceService;
use App\Http\Controllers\Controller;
class IntegrationInstanceController extends Controller
{
public function __construct(private readonly IntegrationInstanceService $service) {}
public function index()
{
return IntegrationInstanceResource::collection(IntegrationInstance::query()->orderBy('id')->paginate());
}
public function store(StoreIntegrationInstanceRequest $request)
{
return (new IntegrationInstanceResource($this->service->create($request->validated())))
->response()->setStatusCode(201);
}
public function show(IntegrationInstance $integrationInstance)
{
return new IntegrationInstanceResource($integrationInstance);
}
public function update(StoreIntegrationInstanceRequest $request, IntegrationInstance $integrationInstance)
{
return new IntegrationInstanceResource($this->service->update($integrationInstance, $request->validated()));
}
public function destroy(IntegrationInstance $integrationInstance)
{
$this->service->delete($integrationInstance);
return response()->noContent();
}
}

View File

@@ -2,8 +2,8 @@
namespace App\Domains\Integration\Controllers;
use App\Domains\Integration\Models\IntegrationInstance;
use App\Domains\Integration\Requests\AssociateIntegrationInstanceRequest;
use App\Domains\Integration\Models\Integration;
use App\Domains\Integration\Requests\ConfigureIntegrationRequest;
use App\Domains\Integration\Resources\IntegrationAssociationResource;
use App\Domains\Integration\Services\IntegrationAssociationService;
use App\Domains\Tenant\Models\WebsiteType;
@@ -23,10 +23,14 @@ class WebsiteTypeIntegrationController extends Controller
return new IntegrationAssociationResource($websiteType->integrations()->with('integrationInstance')->where('integration_code', $integrationCode)->firstOrFail());
}
public function store(AssociateIntegrationInstanceRequest $request, WebsiteType $websiteType, string $integrationCode)
public function store(ConfigureIntegrationRequest $request, WebsiteType $websiteType, string $integrationCode)
{
return new IntegrationAssociationResource($this->service->associate(
$websiteType, $integrationCode, IntegrationInstance::findOrFail($request->validated('integration_instance_id')),
$integration = Integration::query()->where('integration_code', $integrationCode)->firstOrFail();
return new IntegrationAssociationResource($this->service->configure(
$websiteType,
$integration,
$request->validated('integration_data'),
));
}