tenantService ??= new TenantService( $this->createTenantRepository(), $this->createDepartmentRepository(), $this->createDirectorySettingsGateway(), $this->auditServicesFactory->createSystemAuditService() ); } public function createDepartmentService(): DepartmentService { return $this->departmentService ??= new DepartmentService( $this->userServicesFactory, $this->createDepartmentRepository(), $this->createDirectorySettingsGateway(), $this->createDirectoryScopeGateway(), $this->auditServicesFactory->createSystemAuditService() ); } public function createRoleService(): RoleService { return $this->roleService ??= new RoleService( $this->createRoleRepository(), $this->createDirectorySettingsGateway(), $this->auditServicesFactory->createSystemAuditService() ); } public function createTenantRepository(): TenantRepositoryInterface { return $this->directoryRepositoryFactory->createTenantRepository(); } public function createDepartmentRepository(): DepartmentRepositoryInterface { return $this->directoryRepositoryFactory->createDepartmentRepository(); } public function createRoleRepository(): RoleRepositoryInterface { return $this->directoryRepositoryFactory->createRoleRepository(); } public function createDirectorySettingsGateway(): DirectorySettingsGateway { return $this->directoryGatewayFactory->createDirectorySettingsGateway(); } public function createDirectoryScopeGateway(): DirectoryScopeGateway { return $this->directoryGatewayFactory->createDirectoryScopeGateway(); } }