importService !== null) { return $this->importService; } $profiles = [ 'users' => new UserImportProfile(new UserImportGateway( $this->userServicesFactory->createUserReadRepository(), $this->userServicesFactory->createUserAccountService(), $this->directoryServicesFactory->createTenantRepository(), $this->directoryServicesFactory->createRoleRepository(), $this->directoryServicesFactory->createDepartmentRepository(), )), 'departments' => new DepartmentImportProfile(new DepartmentImportGateway( $this->directoryServicesFactory->createDepartmentRepository(), $this->directoryServicesFactory->createTenantRepository(), $this->directoryServicesFactory->createDepartmentService() )), ]; return $this->importService = new ImportService( $this->getCsvReaderService(), $this->getImportTempFileService(), $this->createImportAuditService(), $this->createImportStateStoreService(), $profiles, $this->createPermissionGateway(), $this->createSettingsDefaultsGateway(), $this->userServicesFactory->createUserScopeGateway(), $this->sessionStore ); } public function createImportAuditService(): ImportAuditService { return $this->importAuditService ??= new ImportAuditService($this->getImportAuditRunRepository()); } public function createImportStateStoreService(): ImportStateStoreService { return $this->importStateStoreService ??= new ImportStateStoreService( $this->getImportTempFileService(), $this->sessionStore ); } private function getCsvReaderService(): CsvReaderService { return $this->csvReaderService ??= new CsvReaderService(); } private function getImportTempFileService(): ImportTempFileService { return $this->importTempFileService ??= new ImportTempFileService(); } private function getImportAuditRunRepository(): ImportAuditRunRepositoryInterface { return $this->importRepositoryFactory->createImportAuditRunRepository(); } private function createPermissionGateway(): PermissionGateway { return $this->permissionGateway ??= $this->accessServicesFactory->createPermissionGateway(); } private function createSettingsDefaultsGateway(): SettingsDefaultsGateway { return $this->settingsDefaultsGateway ??= $this->settingServicesFactory->createSettingsDefaultsGateway(); } }