diff --git a/lib/EventListener/SoftwareCatalogEventListener.php b/lib/EventListener/SoftwareCatalogEventListener.php index d88ac73c..8d8e8d4b 100644 --- a/lib/EventListener/SoftwareCatalogEventListener.php +++ b/lib/EventListener/SoftwareCatalogEventListener.php @@ -146,10 +146,10 @@ private function handleObjectCreated(ObjectCreatedEvent $event, ContactpersoonSe ); // Get configuration for different object types - $organisatieSchemaId = $settingsService->getSchemaIdForObjectType('organisatie'); - $contactpersoonSchemaId = $settingsService->getSchemaIdForObjectType('contactpersoon'); - $contactgegevensSchemaId = $settingsService->getSchemaIdForObjectType('contactgegevens'); - $gebruikSchemaId = $settingsService->getSchemaIdForObjectType('gebruik'); + $organisatieSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'organisatie'); + $contactpersoonSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'contactpersoon'); + $contactgegevensSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'contactgegevens'); + $gebruikSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'gebruik'); $logger->debug( 'SoftwareCatalog: Configuration lookup results', @@ -295,15 +295,16 @@ private function handleObjectUpdated(ObjectUpdatedEvent $event, ContactpersoonSe ); // Check if this is an organization update - $organisatieSchemaId = $settingsService->getSchemaIdForObjectType('organisatie'); + $organisatieSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'organisatie'); $organisatieSchemaIdInt = (int) $organisatieSchemaId; if ($organisatieSchemaId && $objectSchemaIdInt === $organisatieSchemaIdInt) { $objectData = $object->getObject(); $status = strtolower($objectData['status'] ?? ''); + $oldStatus = strtolower($oldObject->getObject()['status'] ?? ''); // Only process active organizations - if (in_array($status, ['actief', 'active'])) { + if (in_array($status, ['actief', 'active']) === true && $status !== $oldStatus) { $logger->info('SoftwareCatalog: Processing active organization update', [ 'objectId' => $objectId, 'status' => $status, @@ -338,7 +339,7 @@ private function handleObjectUpdated(ObjectUpdatedEvent $event, ContactpersoonSe } // Handle contactpersoon updates - $contactpersoonSchemaId = $settingsService->getSchemaIdForObjectType('contactpersoon'); + $contactpersoonSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'contactpersoon'); $contactpersoonSchemaIdInt = (int) $contactpersoonSchemaId; if ($contactpersoonSchemaId && $objectSchemaIdInt === $contactpersoonSchemaIdInt) { @@ -377,7 +378,7 @@ private function handleObjectUpdated(ObjectUpdatedEvent $event, ContactpersoonSe } // Handle contactgegevens updates (backward compatibility) - $contactgegevensSchemaId = $settingsService->getSchemaIdForObjectType('contactgegevens'); + $contactgegevensSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'contactgegevens'); $contactgegevensSchemaIdInt = (int) $contactgegevensSchemaId; if ($contactgegevensSchemaId && $objectSchemaIdInt === $contactgegevensSchemaIdInt) { @@ -417,7 +418,7 @@ private function handleObjectUpdated(ObjectUpdatedEvent $event, ContactpersoonSe } // Handle gebruik updates - $gebruikSchemaId = $settingsService->getSchemaIdForObjectType('gebruik'); + $gebruikSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'gebruik'); $gebruikSchemaIdInt = (int) $gebruikSchemaId; if ($gebruikSchemaId && $objectSchemaIdInt === $gebruikSchemaIdInt) { @@ -509,7 +510,7 @@ private function handleObjectDeleted(ObjectDeletedEvent $event, ContactpersoonSe ); // Check if this is an organization deletion - $organisatieSchemaId = $settingsService->getSchemaIdForObjectType('organisatie'); + $organisatieSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'organisatie'); $organisatieSchemaIdInt = (int) $organisatieSchemaId; $objectSchemaIdInt = (int) $objectSchemaId; @@ -541,7 +542,7 @@ private function handleObjectDeleted(ObjectDeletedEvent $event, ContactpersoonSe } // Handle contactpersoon deletion - $contactpersoonSchemaId = $settingsService->getSchemaIdForObjectType('contactpersoon'); + $contactpersoonSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'contactpersoon'); $contactpersoonSchemaIdInt = (int) $contactpersoonSchemaId; if ($contactpersoonSchemaId && $objectSchemaIdInt === $contactpersoonSchemaIdInt) { @@ -580,7 +581,7 @@ private function handleObjectDeleted(ObjectDeletedEvent $event, ContactpersoonSe } // Handle contactgegevens deletion (backward compatibility) - $contactgegevensSchemaId = $settingsService->getSchemaIdForObjectType('contactgegevens'); + $contactgegevensSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'contactgegevens'); $contactgegevensSchemaIdInt = (int) $contactgegevensSchemaId; if ($contactgegevensSchemaId && $objectSchemaIdInt === $contactgegevensSchemaIdInt) { @@ -619,7 +620,7 @@ private function handleObjectDeleted(ObjectDeletedEvent $event, ContactpersoonSe } // Handle gebruik deletion - $gebruikSchemaId = $settingsService->getSchemaIdForObjectType('gebruik'); + $gebruikSchemaId = $settingsService->getSchemaIdForObjectType(objectType: 'gebruik'); $gebruikSchemaIdInt = (int) $gebruikSchemaId; if ($gebruikSchemaId && $objectSchemaIdInt === $gebruikSchemaIdInt) { diff --git a/lib/Service/OrganizationSyncService.php b/lib/Service/OrganizationSyncService.php index eeb83042..fb53cc5c 100644 --- a/lib/Service/OrganizationSyncService.php +++ b/lib/Service/OrganizationSyncService.php @@ -610,7 +610,7 @@ private function ensureOrganisationEntity(object $organisatieObject, array &$sta 'organisatieId' => $organisatieId, 'entityId' => $organisationEntity->getId(), 'active' => $organisationEntity->getActive(), - 'title' => $organisationEntity->getTitle() + 'name' => $organisationEntity->getName() ]); // Send registration email for new organization diff --git a/lib/Service/SettingsService.php b/lib/Service/SettingsService.php index 37c776fd..f3d1cdf8 100644 --- a/lib/Service/SettingsService.php +++ b/lib/Service/SettingsService.php @@ -436,6 +436,8 @@ public function getSchemaIdForObjectType(string $objectType): ?int $startTime = microtime(true); $result = null; + $voorzieningenConfig = $this->getVoorzieningenConfig(); + $this->logger->debug("SettingsService: Starting schema ID lookup (cache miss)", [ 'objectType' => $objectType, 'timestamp' => date('Y-m-d H:i:s') @@ -482,7 +484,7 @@ public function getSchemaIdForObjectType(string $objectType): ?int $result = (int) $schemaId; } else { // Also check voorzieningen register for organization/organisatie - $schemaId = $this->config->getValueString($this->_appName, 'voorzieningen_organisatie_schema', ''); + $schemaId = $voorzieningenConfig['organisatie_schema']; if (!empty($schemaId)) { $result = (int) $schemaId; } @@ -490,14 +492,14 @@ public function getSchemaIdForObjectType(string $objectType): ?int } if ($objectType === 'organisatie' && $result === null) { - $schemaId = $this->config->getValueString($this->_appName, 'voorzieningen_organisatie_schema', ''); + $schemaId = $voorzieningenConfig['organisatie_schema']; if (!empty($schemaId)) { $result = (int) $schemaId; } } if ($objectType === 'contactpersoon' && $result === null) { - $schemaId = $this->config->getValueString($this->_appName, 'voorzieningen_contactpersoon_schema', ''); + $schemaId = $voorzieningenConfig['contactpersoon_schema']; if (!empty($schemaId)) { $result = (int) $schemaId; } diff --git a/lib/Service/SoftwareCatalogue/ContactPersonHandler.php b/lib/Service/SoftwareCatalogue/ContactPersonHandler.php index eb92b9aa..5cd53f2b 100644 --- a/lib/Service/SoftwareCatalogue/ContactPersonHandler.php +++ b/lib/Service/SoftwareCatalogue/ContactPersonHandler.php @@ -307,7 +307,8 @@ public function createUserAccount(object $contactpersoonObject, bool $isFirstCon 'contactId' => $contactId ]); - $user = $this->_userManager->createUser($username, $username); + $randomPw = $this->_secureRandom->generate(length: 12); + $user = $this->_userManager->createUser(uid: $username, password: $randomPw); if ($user) { $this->_logger->critical('🎊 NEW USER ACCOUNT CREATED', [ diff --git a/test_background_job.php b/test_background_job.php index efc11c8e..ec1a3cae 100644 --- a/test_background_job.php +++ b/test_background_job.php @@ -9,17 +9,27 @@ echo "Starting OrganizationContactSyncJob test...\n"; // Get services from container - $jobList = \OC::$server->get('OCP\BackgroundJob\IJobList'); - $timeFactory = \OC::$server->get('OCP\AppFramework\Utility\ITimeFactory'); - $softwareCatalogueService = \OC::$server->get('OCA\SoftwareCatalog\Service\SoftwareCatalogueService'); - $config = \OC::$server->get('OCP\IConfig'); - $logger = \OC::$server->get('Psr\Log\LoggerInterface'); + $jobList = \OC::$server->get('OCP\BackgroundJob\IJobList'); + $timeFactory = \OC::$server->get('OCP\AppFramework\Utility\ITimeFactory'); + $organisatieService = \OC::$server->get(\OCA\SoftwareCatalog\Service\OrganisatieService::class); + $contactpersoonService= \OC::$server->get(\OCA\SoftwareCatalog\Service\ContactpersoonService::class); + $emailService = \OC::$server->get(\OCA\SoftwareCatalog\Service\SymfonyEmailService::class); + $config = \OC::$server->get('OCP\IAppConfig'); + $logger = \OC::$server->get(\Psr\Log\LoggerInterface::class); + $settingsService = \OC::$server->get(\OCA\SoftwareCatalog\Service\SettingsService::class); + $db = \OC::$server->get(\OCP\IDBConnection::class); + $contactPersonHandler = \OC::$server->get(\OCA\SoftwareCatalog\Service\SoftwareCatalogue\ContactPersonHandler::class); // Create OrganizationSyncService $organizationSyncService = new \OCA\SoftwareCatalog\Service\OrganizationSyncService( - $softwareCatalogueService, - $config, - $logger + organisatieService: $organisatieService, + contactpersoonService:$contactpersoonService, + emailService: $emailService, + config: $config, + logger: $logger, + settingsService: $settingsService, + db: $db, + contactpersonHandler: $contactPersonHandler, ); // Create job instance @@ -31,7 +41,7 @@ echo "Job instance created, executing...\n"; // Execute the job - $job->execute($jobList, null); + $job->run($jobList, null); echo "Job executed successfully!\n";