importService !== null) { return $this->importService; } $profiles = [ 'users' => new UserImportProfile( new UserImportGateway( $this->userServicesFactory->createUserReadRepository(), $this->directoryServicesFactory->createTenantRepository(), $this->directoryServicesFactory->createRoleRepository(), $this->directoryServicesFactory->createDepartmentRepository(), ), $this->userServicesFactory->createUserAccountService() ), 'departments' => new DepartmentImportProfile( new DepartmentImportGateway( $this->directoryServicesFactory->createDepartmentRepository(), $this->directoryServicesFactory->createTenantRepository() ), $this->directoryServicesFactory->createDepartmentService() ), ]; return $this->importService = new ImportService( $this->getCsvReaderService(), $this->getImportTempFileService(), $this->importAudit, $this->createImportStateStoreService(), $profiles, $this->createPermissionService(), $this->createSettingsDefaultsGateway(), $this->tenantScopeService, $this->sessionStore ); } 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 createPermissionService(): PermissionService { return $this->permissionService ??= $this->accessServicesFactory->createPermissionService(); } private function createSettingsDefaultsGateway(): SettingsDefaultsGateway { return $this->settingsDefaultsGateway ??= $this->settingServicesFactory->createSettingsDefaultsGateway(); } }