diff --git a/lib/Service/OrganizationSyncService.php b/lib/Service/OrganizationSyncService.php index 62fca143..f88b1f23 100644 --- a/lib/Service/OrganizationSyncService.php +++ b/lib/Service/OrganizationSyncService.php @@ -23,6 +23,7 @@ use OCA\SoftwareCatalog\Service\ContactpersoonService; use OCA\SoftwareCatalog\Service\SoftwareCatalogue\ContactPersonHandler; use OCA\SoftwareCatalog\Service\SymfonyEmailService; +use OCP\AppFramework\Db\DoesNotExistException; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IAppConfig; use OCP\IDBConnection; @@ -143,19 +144,21 @@ public function performOrganizationsSync(): array ->andWhere($qb->expr()->orX( $qb->expr()->neq('o2.active', $qb->createFunction('(json_unquote(json_extract(o.object, \'$.status\')) = \'actief\')')), $qb->expr()->isNull('o2.uuid') - )); + )) + ->andWhere($qb->expr()->neq($qb->createFunction('json_unquote(json_extract(o.object, \'$.status\'))'), $qb->createNamedParameter('concept'))); $sql = $qb->getSQL(); $objects = $qb->execute()->fetchAll(); $orgs = []; + foreach($objects as $object) { $objectService = \OC::$server->get('OCA\OpenRegister\Service\ObjectService'); if($objectService instanceOf ObjectService === false) { return []; } - $object = $objectService->find($object['uuid']); + $object = $objectService->find(id: $object['uuid'], register: $register, schema: $organizationSchema); $org = $this->ensureOrganisationEntity($object,$stats); @@ -192,7 +195,8 @@ public function performContactSync() :array 'o.uuid', 'a.uid', $qb->createFunction('json_unquote(json_extract(o.object, \'$.e-mailadres\')) as email'), - $qb->createFunction('json_unquote(json_extract(o.object, \'$.username\')) as username') + $qb->createFunction('json_unquote(json_extract(o.object, \'$.username\')) as username'), + 'oo.uuid as organisation' ) ->from('openregister_objects', 'o') ->leftJoin( @@ -200,18 +204,27 @@ public function performContactSync() :array join: 'accounts_data', alias: 'a', condition: 'json_unquote(json_extract(o.object, \'$.e-mailadres\')) = a.value') + ->leftJoin( + fromAlias: 'o', + join: 'openregister_organisations', + alias: 'oo', + condition: 'oo.uuid = json_unquote(json_extract(o.object, \'$.organisatie\'))' + ) ->where($qb->expr()->eq('o.register', $qb->createNamedParameter($register))) ->andWhere($qb->expr()->eq('o.schema', $qb->createNamedParameter($contactSchema))) ->andWhere($qb->expr()->isNull($qb->createFunction('json_unquote(json_extract(o.object, \'$.username\'))'))); -// var_dump($qb->getSQL()); $contacts = $qb->execute()->fetchAll(); foreach ($contacts as $contact) { $objectService = \OC::$server->get('OCA\OpenRegister\Service\ObjectService'); - $contactEntity = $objectService->find($contact['uuid']); + $contactEntity = $objectService->find(id: $contact['uuid'], register: $register, schema: $contactSchema); $contactEntityObject = $contactEntity->getObject(); + if ($contact['organisation'] === null) { + continue; + } + $contactEntityObject['username'] = $contact['uid']; if ($contact['uid'] === null) { @@ -1084,7 +1097,8 @@ public function performManualSync(int $minutesBack = 0): array return [ 'success' => false, - 'message' => 'Synchronization failed: ' . $e->getMessage() + 'message' => 'Synchronization failed: ' . $e->getMessage(), + 'trace' => $e->getTraceAsString() ]; } } diff --git a/lib/Service/SettingsService.php b/lib/Service/SettingsService.php index dd2b0c86..b213c90c 100644 --- a/lib/Service/SettingsService.php +++ b/lib/Service/SettingsService.php @@ -958,7 +958,6 @@ public function getGenericUserGroups(): array return [ 'beheerder', 'inkoper', - 'ambtenaar', 'software-catalog-users' ]; } @@ -1176,9 +1175,7 @@ public function createAndConfigureUserGroups(): array 'gebruik-beheerder', 'gebruik-raadpleger', 'functioneel-beheerder', - 'vng-raadpleger', 'organisatie-beheerder', - 'ambtenaar', 'software-catalog-users' ]); @@ -4418,4 +4415,4 @@ public function setCatalogLocation(string $location): void $this->config->setValueString($this->_appName, 'catalog_location', $location); } -} \ No newline at end of file +} diff --git a/lib/Service/SoftwareCatalogue/ContactPersonHandler.php b/lib/Service/SoftwareCatalogue/ContactPersonHandler.php index e6213c44..d5be7dcd 100644 --- a/lib/Service/SoftwareCatalogue/ContactPersonHandler.php +++ b/lib/Service/SoftwareCatalogue/ContactPersonHandler.php @@ -1137,7 +1137,7 @@ private function getOrganizationType(string $organizationId): string if ($organizationObject) { $organizationData = $organizationObject->getObject(); - return $organizationData['type'] ?? ''; + return strtolower($organizationData['type'] ?? ''); } return '';