refactor(arch): enforce gateway compliance and remove service-wrapping gateways

This commit is contained in:
2026-03-13 11:31:33 +01:00
parent 082fa4c9a5
commit 892da0048d
96 changed files with 1117 additions and 1060 deletions

View File

@@ -4,58 +4,32 @@ namespace MintyPHP\Service\Import\Profile;
use MintyPHP\Repository\Org\DepartmentRepositoryInterface;
use MintyPHP\Repository\Tenant\TenantRepositoryInterface;
use MintyPHP\Service\Org\DepartmentService;
class DepartmentImportGateway
{
public function __construct(
private readonly DepartmentRepositoryInterface $departmentRepository,
private readonly TenantRepositoryInterface $tenantRepository,
private readonly DepartmentService $departmentService
private readonly TenantRepositoryInterface $tenantRepository
) {
}
public function findTenantByUuid(string $uuid): ?array
{
return $this->tenantRepository()->findByUuid($uuid);
return $this->tenantRepository->findByUuid($uuid);
}
public function findTenantById(int $id): ?array
{
return $this->tenantRepository()->find($id);
return $this->tenantRepository->find($id);
}
public function existsDepartmentCode(string $code): bool
{
return $this->departmentRepository()->existsByCode($code);
return $this->departmentRepository->existsByCode($code);
}
public function existsDepartmentByTenantAndDescription(int $tenantId, string $description): bool
{
return $this->departmentRepository()->existsByTenantAndDescription($tenantId, $description);
}
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public function createDepartmentFromAdmin(array $input, int $currentUserId): array
{
return $this->departmentService()->createFromAdmin($input, $currentUserId);
}
private function departmentRepository(): DepartmentRepositoryInterface
{
return $this->departmentRepository;
}
private function tenantRepository(): TenantRepositoryInterface
{
return $this->tenantRepository;
}
private function departmentService(): DepartmentService
{
return $this->departmentService;
return $this->departmentRepository->existsByTenantAndDescription($tenantId, $description);
}
}

View File

@@ -2,10 +2,14 @@
namespace MintyPHP\Service\Import\Profile;
use MintyPHP\Service\Org\DepartmentService;
class DepartmentImportProfile implements ImportProfileInterface
{
public function __construct(private readonly DepartmentImportGateway $gateway)
{
public function __construct(
private readonly DepartmentImportGateway $gateway,
private readonly DepartmentService $departmentService
) {
}
public function key(): string
@@ -139,7 +143,7 @@ class DepartmentImportProfile implements ImportProfileInterface
return ['status' => 'skipped', 'code' => 'department_exists'];
}
$result = $this->gateway->createDepartmentFromAdmin([
$result = $this->departmentService->createFromAdmin([
'description' => (string) ($normalized['description'] ?? ''),
'tenant_id' => (int) ($normalized['tenant_id'] ?? 0),
'code' => (string) ($normalized['code'] ?? ''),

View File

@@ -6,13 +6,11 @@ use MintyPHP\Repository\Access\RoleRepositoryInterface;
use MintyPHP\Repository\Org\DepartmentRepositoryInterface;
use MintyPHP\Repository\Tenant\TenantRepositoryInterface;
use MintyPHP\Repository\User\UserReadRepositoryInterface;
use MintyPHP\Service\User\UserAccountService;
class UserImportGateway
{
public function __construct(
private readonly UserReadRepositoryInterface $userReadRepository,
private readonly UserAccountService $userAccountService,
private readonly TenantRepositoryInterface $tenantRepository,
private readonly RoleRepositoryInterface $roleRepository,
private readonly DepartmentRepositoryInterface $departmentRepository,
@@ -53,13 +51,4 @@ class UserImportGateway
{
return $this->departmentRepository->find($id);
}
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public function createUserFromAdmin(array $input, int $currentUserId): array
{
return $this->userAccountService->createFromAdmin($input, $currentUserId);
}
}

View File

@@ -2,6 +2,8 @@
namespace MintyPHP\Service\Import\Profile;
use MintyPHP\Service\User\UserAccountService;
class UserImportProfile implements ImportProfileInterface
{
/**
@@ -9,8 +11,10 @@ class UserImportProfile implements ImportProfileInterface
*/
private ?array $allowedLocales = null;
public function __construct(private readonly UserImportGateway $gateway)
{
public function __construct(
private readonly UserImportGateway $gateway,
private readonly UserAccountService $userAccountService
) {
}
public function key(): string
@@ -203,7 +207,7 @@ class UserImportProfile implements ImportProfileInterface
$input['active'] = null;
}
$result = $this->gateway->createUserFromAdmin($input, (int) ($context['current_user_id'] ?? 0));
$result = $this->userAccountService->createFromAdmin($input, (int) ($context['current_user_id'] ?? 0));
if (!($result['ok'] ?? false)) {
$errors = $result['errors'] ?? [];
$message = is_array($errors) && isset($errors[0]) ? (string) $errors[0] : t('User can not be registered');