2026-02-23 12:58:19 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace MintyPHP\Service\Settings;
|
|
|
|
|
|
|
|
|
|
use MintyPHP\Repository\Access\RoleRepository;
|
|
|
|
|
use MintyPHP\Repository\Org\DepartmentRepository;
|
|
|
|
|
use MintyPHP\Repository\Settings\SettingRepository;
|
|
|
|
|
use MintyPHP\Repository\Tenant\TenantRepository;
|
|
|
|
|
|
|
|
|
|
class SettingServicesFactory
|
|
|
|
|
{
|
|
|
|
|
private ?ThemeConfigService $themeConfigService = null;
|
|
|
|
|
private ?SettingService $settingService = null;
|
|
|
|
|
private ?SettingCacheService $settingCacheService = null;
|
|
|
|
|
private ?SettingGateway $settingGateway = null;
|
|
|
|
|
|
2026-03-04 15:56:58 +01:00
|
|
|
public function __construct(
|
|
|
|
|
private readonly SettingRepositoryFactory $settingRepositoryFactory
|
|
|
|
|
) {}
|
|
|
|
|
|
2026-02-23 12:58:19 +01:00
|
|
|
public function createSettingRepository(): SettingRepository
|
|
|
|
|
{
|
2026-03-04 15:56:58 +01:00
|
|
|
return $this->settingRepositoryFactory->createSettingRepository();
|
2026-02-23 12:58:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createSettingService(): SettingService
|
|
|
|
|
{
|
|
|
|
|
return $this->settingService ??= new SettingService(
|
|
|
|
|
$this->createSettingRepository(),
|
|
|
|
|
$this->createTenantRepository(),
|
|
|
|
|
$this->createRoleRepository(),
|
|
|
|
|
$this->createDepartmentRepository(),
|
|
|
|
|
$this->createThemeConfigService()
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createSettingGateway(): SettingGateway
|
|
|
|
|
{
|
|
|
|
|
return $this->settingGateway ??= new SettingGateway($this->createSettingService());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createSettingCacheService(): SettingCacheService
|
|
|
|
|
{
|
|
|
|
|
return $this->settingCacheService ??= new SettingCacheService();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createThemeConfigService(): ThemeConfigService
|
|
|
|
|
{
|
|
|
|
|
return $this->themeConfigService ??= new ThemeConfigService();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function createTenantRepository(): TenantRepository
|
|
|
|
|
{
|
2026-03-04 15:56:58 +01:00
|
|
|
return $this->settingRepositoryFactory->createTenantRepository();
|
2026-02-23 12:58:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function createRoleRepository(): RoleRepository
|
|
|
|
|
{
|
2026-03-04 15:56:58 +01:00
|
|
|
return $this->settingRepositoryFactory->createRoleRepository();
|
2026-02-23 12:58:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function createDepartmentRepository(): DepartmentRepository
|
|
|
|
|
{
|
2026-03-04 15:56:58 +01:00
|
|
|
return $this->settingRepositoryFactory->createDepartmentRepository();
|
2026-02-23 12:58:19 +01:00
|
|
|
}
|
|
|
|
|
}
|