diff --git a/lib/Controller/ContactpersonenController.php b/lib/Controller/ContactpersonenController.php index babdef7b..1d171984 100644 --- a/lib/Controller/ContactpersonenController.php +++ b/lib/Controller/ContactpersonenController.php @@ -35,6 +35,9 @@ use OCP\Security\ISecureRandom; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; +use OCA\OpenRegister\Service\ObjectService; +use OCA\OpenRegister\Db\MagicMapper; +use OCA\OpenRegister\Service\OrganisationService; /** * Controller for managing contactpersonen and their user accounts. @@ -152,6 +155,9 @@ public function __construct( ContainerInterface $container, ISecureRandom $secureRandom, LoggerInterface $logger, + private readonly ObjectService $objectService, + private readonly MagicMapper $magicMapper, + private readonly OrganisationService $organisationService, ) { parent::__construct(appName: $appName, request: $request); $this->settingsService = $settingsService; @@ -201,7 +207,6 @@ public function getContactpersonen(string $organisationId): JSONResponse { try { // Get object service. - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); // Search for contactpersonen belonging to this organisation. // Use a more generic search that doesn't require specific register/schema. @@ -212,7 +217,7 @@ public function getContactpersonen(string $organisationId): JSONResponse { // Let ObjectService resolve the schema. ]; - $contactpersonen = $objectService->searchObjectsPaginated($searchParams); + $contactpersonen = $this->objectService->searchObjectsPaginated($searchParams); // Enhance with user information. // @@ -308,7 +313,6 @@ private function checkOrganisationReadPermission(\OCP\IUser $currentUser, string $callerOrgUuid = null; try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); $callerOrgUuid = $this->resolveContactOrganisation(objectService: $objectService, username: $currentUser->getUID()); } catch (\Exception $e) { $this->logger->warning( @@ -404,10 +408,9 @@ public function convertToUser(string $contactPersonId): JSONResponse { try { // Get object service. - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); // Find the contactpersoon object — bind to current tenant. - $contactPersonObject = $objectService->find( + $contactPersonObject = $this->objectService->find( id: $contactPersonId, register: 'voorzieningen', schema: 'contactpersoon', @@ -533,8 +536,7 @@ public function convertToUser(string $contactPersonId): JSONResponse { // Save using MagicMapper directly to bypass schema validation. // This avoids "Unresolved reference" errors when schema references can't be resolved. - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update($contactPersonObject); + $this->magicMapper->update($contactPersonObject); $this->logger->info( 'ContactpersonenController: Updated contactpersoon with username', @@ -942,8 +944,6 @@ private function checkGroupUpdatePermission(\OCP\IUser $currentUser, string $use */ private function verifyCrossTenantScope(\OCP\IUser $currentUser, string $username): ?JSONResponse { try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $targetOrgUuid = $this->resolveContactOrganisation(objectService: $objectService, username: $username); $callerOrgUuid = $this->resolveContactOrganisation(objectService: $objectService, username: $currentUser->getUID()); @@ -988,7 +988,7 @@ private function verifyCrossTenantScope(\OCP\IUser $currentUser, string $usernam * @spec openspec/changes/method-decomposition/tasks.md#task-5 */ private function resolveContactOrganisation(object $objectService, string $username): ?string { - $results = $objectService->searchObjectsPaginated( + $results = $this->objectService->searchObjectsPaginated( ['username' => $username, '_limit' => 1, '_schema' => 'contactpersoon'] ); @@ -1203,8 +1203,7 @@ public function getUserInfo(string $contactPersonId): JSONResponse { } try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $contactObject = $objectService->find( + $contactObject = $this->objectService->find( id: $contactPersonId, register: 'voorzieningen', schema: 'contactpersoon' @@ -1597,10 +1596,8 @@ public function getMe(): JSONResponse { // Get organisation data from OpenRegister. try { - $organisationService = $this->container->get('OCA\OpenRegister\Service\OrganisationService'); - // Get active organisation. - $activeOrg = $organisationService->getActiveOrganisation(); + $activeOrg = $this->organisationService->getActiveOrganisation(); if ($activeOrg !== null) { $response['organisations']['active'] = [ 'uuid' => $activeOrg->getUuid(), @@ -1611,7 +1608,7 @@ public function getMe(): JSONResponse { } // Get all user organisations. - $userOrgs = $organisationService->getUserOrganisations(); + $userOrgs = $this->organisationService->getUserOrganisations(); foreach ($userOrgs as $org) { $response['organisations']['all'][] = [ 'uuid' => $org->getUuid(), @@ -1728,15 +1725,13 @@ private function enrichMeWithContactPersonData( string $userEmail, ): void { try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $searchParams = [ 'username' => $userId, '_limit' => 1, '_schema' => 'contactpersoon', ]; - $contactpersonen = $objectService->searchObjectsPaginated($searchParams); + $contactpersonen = $this->objectService->searchObjectsPaginated($searchParams); if (empty($contactpersonen['results']) === false) { $contactPerson = $contactpersonen['results'][0]; diff --git a/lib/Controller/OrganisationMembersController.php b/lib/Controller/OrganisationMembersController.php index 92ebd0aa..3cfa94d3 100644 --- a/lib/Controller/OrganisationMembersController.php +++ b/lib/Controller/OrganisationMembersController.php @@ -52,8 +52,8 @@ use OCP\IRequest; use OCP\IUserManager; use OCP\IUserSession; -use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; +use OCA\OpenRegister\Service\OrganisationService; /** * Beheerder-gated grant/revoke of organisation membership for an existing @@ -87,8 +87,8 @@ public function __construct( private readonly IUserSession $userSession, private readonly IGroupManager $groupManager, private readonly IUserManager $userManager, - private readonly ContainerInterface $container, private readonly LoggerInterface $logger, + private readonly OrganisationService $organisationService, ) { parent::__construct(appName: Application::APP_ID, request: $request); }//end __construct() @@ -266,6 +266,6 @@ private function authorizeMaintainer(string $organisationUuid): ?JSONResponse { * @throws \Throwable When OpenRegister is unavailable. */ private function getOrganisationService(): \OCA\OpenRegister\Service\OrganisationService { - return $this->container->get('OCA\OpenRegister\Service\OrganisationService'); + return $this->organisationService; }//end getOrganisationService() }//end class diff --git a/lib/EventListener/UserProfileUpdatedEventListener.php b/lib/EventListener/UserProfileUpdatedEventListener.php index 54ecc1c7..e95d9b3c 100644 --- a/lib/EventListener/UserProfileUpdatedEventListener.php +++ b/lib/EventListener/UserProfileUpdatedEventListener.php @@ -25,6 +25,11 @@ use OCP\EventDispatcher\IEventListener; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; +use OCA\OpenRegister\Service\ObjectService; +use OCA\OpenRegister\Db\SchemaMapper; +use OCA\OpenRegister\Db\RegisterMapper; +use OCA\OpenRegister\Service\Object\SaveObject\MetadataHydrationHandler; +use OCA\OpenRegister\Db\MagicMapper; /** * Syncs user profile changes to the corresponding contactpersoon object. @@ -56,6 +61,11 @@ class UserProfileUpdatedEventListener implements IEventListener { */ public function __construct( private readonly ContainerInterface $container, + private readonly ObjectService $objectService, + private readonly SchemaMapper $schemaMapper, + private readonly RegisterMapper $registerMapper, + private readonly MetadataHydrationHandler $metadataHydrationHandler, + private readonly MagicMapper $magicMapper, ) { }//end __construct() @@ -128,7 +138,6 @@ public function handle(Event $event): void { * @spec openspec/specs/method-decomposition/spec.md */ private function syncToContactPerson(UserProfileUpdatedEvent $event, LoggerInterface $logger): void { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); $settingsService = $this->container->get(SettingsService::class); $voorzieningenConfig = $settingsService->getVoorzieningenConfig(); @@ -283,15 +292,11 @@ private function persistContactPersonPatch( int $schema, LoggerInterface $logger, ): void { - $schemaMapper = $this->container->get('OCA\OpenRegister\Db\SchemaMapper'); - $registerMapper = $this->container->get('OCA\OpenRegister\Db\RegisterMapper'); - $metaHydrationHandler = $this->container->get('OCA\OpenRegister\Service\Object\SaveObject\MetadataHydrationHandler'); - $schemaEntity = null; $registerEntity = null; try { - $schemaEntity = $schemaMapper->find(id: $schema, _rbac: false, _multitenancy: false); - $registerEntity = $registerMapper->find(id: $register, _rbac: false, _multitenancy: false); + $schemaEntity = $this->schemaMapper->find(id: $schema, _rbac: false, _multitenancy: false); + $registerEntity = $this->registerMapper->find(id: $register, _rbac: false, _multitenancy: false); } catch (\Exception $e) { $logger->warning( '[UserProfileUpdatedEventListener] Could not load schema/register entities for _name hydration', @@ -302,7 +307,7 @@ private function persistContactPersonPatch( } if ($schemaEntity !== null) { - $metaHydrationHandler->hydrateObjectMetadata(entity: $contactPerson, schema: $schemaEntity); + $this->metadataHydrationHandler->hydrateObjectMetadata(entity: $contactPerson, schema: $schemaEntity); $logger->debug( '[UserProfileUpdatedEventListener] Regenerated _name metadata', [ @@ -313,8 +318,7 @@ private function persistContactPersonPatch( // Pass register and schema so the magic mapper route is triggered and the // per-schema magic table is updated (not just the blob table). - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update(entity: $contactPerson, register: $registerEntity, schema: $schemaEntity); + $this->magicMapper->update(entity: $contactPerson, register: $registerEntity, schema: $schemaEntity); }//end persistContactpersoonPatch() @@ -341,7 +345,7 @@ private function findContactPerson( // 1. Search by username = userId, scoped to the user's organisation (multitenancy). // This prevents updating a contactpersoon from a different organisation when. // Multiple records share the same username across orgs. - $results = $objectService->searchObjects( + $results = $this->objectService->searchObjects( query: ['@self' => $selfQuery, 'username' => $userId, '_limit' => 5], _rbac: false, _multitenancy: true @@ -381,7 +385,7 @@ private function findContactPerson( // Use _search for case-insensitive matching, then verify the email field in PHP. // Scoped to user's organisation via multitenancy to avoid cross-org matches. - $results = $objectService->searchObjects( + $results = $this->objectService->searchObjects( query: ['@self' => $selfQuery, '_search' => $emailCandidate, '_limit' => 5], _rbac: false, _multitenancy: true diff --git a/lib/Service/GebruikSyncService.php b/lib/Service/GebruikSyncService.php index 36182dd3..8d096347 100644 --- a/lib/Service/GebruikSyncService.php +++ b/lib/Service/GebruikSyncService.php @@ -29,6 +29,7 @@ use OCA\OpenRegister\Db\ObjectEntity; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; +use OCA\OpenRegister\Service\ObjectService; /** * Service for synchronizing and processing Gebruik (Usage) objects. @@ -86,6 +87,7 @@ public function __construct( LoggerInterface $logger, SettingsService $settingsService, ContainerInterface $container, + private readonly ObjectService $objectService, ) { $this->logger = $logger; $this->settingsService = $settingsService; @@ -324,7 +326,6 @@ private function processAmefElements(ObjectEntity $gebruikObject): array { * @return array Array of found ObjectEntity objects. */ private function searchAmefElementsByIds(array $ids, string $register, string $schema): array { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); $foundElements = []; foreach ($ids as $id) { @@ -340,7 +341,7 @@ private function searchAmefElementsByIds(array $ids, string $register, string $s '_limit' => 5, ]; - $elements = $objectService->searchObjects($query); + $elements = $this->objectService->searchObjects($query); $foundElements = array_merge($foundElements, $elements); } catch (Exception $e) { $this->logger->warning( @@ -515,8 +516,6 @@ private function resolveLatestEligibleStatus(array $statusDates, string $gebruik */ private function updateGebruikObject(ObjectEntity $gebruikObject, array $updatedData): void { try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - // Get voorzieningenConfig to find the correct register and schema. $voorzieningenConfig = $this->settingsService->getVoorzieningenConfig(); $register = $voorzieningenConfig['register'] ?? ''; @@ -527,7 +526,7 @@ private function updateGebruikObject(ObjectEntity $gebruikObject, array $updated } // Update the object. - $objectService->saveObject( + $this->objectService->saveObject( object: $updatedData, register: (int)$register, schema: (int)$gebruikSchema, diff --git a/lib/Service/OrganizationSyncService.php b/lib/Service/OrganizationSyncService.php index 287341c1..b87d0b87 100644 --- a/lib/Service/OrganizationSyncService.php +++ b/lib/Service/OrganizationSyncService.php @@ -26,6 +26,8 @@ use OCP\IDBConnection; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; +use OCA\OpenRegister\Db\OrganisationMapper; +use OCA\OpenRegister\Db\MagicMapper; /** * Service for synchronizing organizations and contact persons. @@ -130,6 +132,9 @@ public function __construct( private IDBConnection $db, private readonly ContactPersonHandler $contactpersonHandler, ContainerInterface $container, + private readonly ObjectService $objectService, + private readonly OrganisationMapper $organisationMapper, + private readonly MagicMapper $magicMapper, ) { $this->organisationService = $organisationService; $this->contactPersonService = $contactPersonService; @@ -380,7 +385,6 @@ public function performOrganizationsSync(int $batchSize = 50, int $maxExecutionS $rows = $qb->executeQuery()->fetchAll(); - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); if ($objectService instanceof ObjectService === false) { $this->logger->error('OrganizationSync: could not resolve ObjectService'); return $stats; @@ -400,7 +404,7 @@ public function performOrganizationsSync(int $batchSize = 50, int $maxExecutionS } try { - $object = $objectService->find( + $object = $this->objectService->find( id: $row['uuid'], register: $register, schema: $organizationSchema, @@ -505,7 +509,6 @@ public function performContactSync(int $batchSize = 100, int $maxExecutionSecond $this->logger->info('ContactSync: processing ' . count($contacts) . ' contacts with existing NC accounts'); - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); if ($objectService instanceof ObjectService === false) { $this->logger->error('ContactSync: could not resolve ObjectService'); return $stats; @@ -524,7 +527,7 @@ public function performContactSync(int $batchSize = 100, int $maxExecutionSecond } try { - $contactEntity = $objectService->find( + $contactEntity = $this->objectService->find( id: $contact['uuid'], register: $register, schema: $contactSchema, @@ -537,7 +540,7 @@ public function performContactSync(int $batchSize = 100, int $maxExecutionSecond // persisted record. The schema validation warning for a UUID-string value is // benign compared to a data-corruption window where the field is missing. $contactEntity->setObject($contactEntityObject); - $objectService->saveObject( + $this->objectService->saveObject( object: $contactEntity, register: $register, schema: $contactSchema, @@ -762,8 +765,6 @@ public function performFullSync(int $minutesBack = 10): array { */ private function getOrganisationObjectsByTimeWindow(string $register, string $organizationSchema, int $minutesBack): array { try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - // Build base query for register and schema. A sync tick may // genuinely need "all objects" (minutesBack <= 0) — bounded at a // documented safe ceiling rather than left unbounded. @@ -811,7 +812,7 @@ private function getOrganisationObjectsByTimeWindow(string $register, string $or } // Use searchObjects method for filtering. - $objects = $objectService->searchObjects(query: $query, _rbac: false, _multitenancy: false); + $objects = $this->objectService->searchObjects(query: $query, _rbac: false, _multitenancy: false); $this->logger->debug( 'OrganizationSyncService: Retrieved organisatie objects with searchObjects', @@ -949,8 +950,7 @@ private function ensureOrganisationEntity(object $organisationObject, array &$st // Fetch the complete object from the database to ensure we have all data. try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $fullObject = $objectService->find( + $fullObject = $this->objectService->find( id: $organisationId, register: $organisationObject->getRegister(), schema: $organisationObject->getSchema(), @@ -988,10 +988,9 @@ private function ensureOrganisationEntity(object $organisationObject, array &$st $organizationSchema = ($voorzieningenConfig['organisatie_schema'] ?? ''); // Try to find existing organisation entity. - $organisationMapper = $this->container->get('OCA\OpenRegister\Db\OrganisationMapper'); try { - $organisationEntity = $organisationMapper->findByUuid($organisationId); + $organisationEntity = $this->organisationMapper->findByUuid($organisationId); // Entity exists - update it if needed. $status = strtolower(($objectData['status'] ?? 'actief')); @@ -1021,7 +1020,7 @@ private function ensureOrganisationEntity(object $organisationObject, array &$st $wasActive = $organisationEntity->getActive(); $organisationEntity->setActive($shouldBeActive); - $organisationMapper->save($organisationEntity); + $this->organisationMapper->save($organisationEntity); $stats['entitiesUpdated']++; // Send activation email if organization became active. @@ -1064,7 +1063,7 @@ private function ensureOrganisationEntity(object $organisationObject, array &$st $slug = strtolower(preg_replace('/[^a-z0-9]+/', '-', strtolower($orgName))); $slug = trim($slug, '-'); try { - $organisationEntity = $organisationMapper->findBySlug($slug); + $organisationEntity = $this->organisationMapper->findBySlug($slug); $this->logger->info( 'OrganizationSyncService: Found existing entity by slug, updating UUID to match object', [ @@ -1077,7 +1076,7 @@ private function ensureOrganisationEntity(object $organisationObject, array &$st // Update the entity's UUID to match the object UUID so future lookups work. $organisationEntity->setUuid($organisationId); - $organisationMapper->save($organisationEntity); + $this->organisationMapper->save($organisationEntity); $stats['entitiesUpdated']++; // Update organisatie object owner to this entity. @@ -1241,8 +1240,6 @@ private function getContactPersonsForOrganisation(string $organisationId, string } try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - // Use searchObjects for more efficient filtering on-demand. $query = [ '@self' => [ @@ -1253,7 +1250,7 @@ private function getContactPersonsForOrganisation(string $organisationId, string '_limit' => 500, ]; - $contactPersons = $objectService->searchObjects(query: $query, _rbac: false, _multitenancy: false); + $contactPersons = $this->objectService->searchObjects(query: $query, _rbac: false, _multitenancy: false); $this->logger->debug( 'OrganizationSyncService: Retrieved contact persons on-demand', @@ -1412,8 +1409,7 @@ private function updateOrganisationEntityUsers(object $organisationEntity, array $organisationEntity->setUsers($allUsernames); - $organisationMapper = $this->container->get('OCA\OpenRegister\Db\OrganisationMapper'); - $organisationMapper->save($organisationEntity); + $this->organisationMapper->save($organisationEntity); $stats['entitiesUpdated']++; @@ -1516,10 +1512,9 @@ public function getSyncStatus(int $minutesBack = 10): array { ); // Get organization entities count. - $organisationMapper = $this->container->get('OCA\OpenRegister\Db\OrganisationMapper'); $entitiesCount = 0; try { - $entities = $organisationMapper->findAllWithUserCount(); + $entities = $this->organisationMapper->findAllWithUserCount(); $entitiesCount = count($entities); } catch (\Exception $e) { // Ignore errors in count. @@ -1857,8 +1852,7 @@ private function processNestedContactPersons($organizationObject, array &$stats) ); // Fetch the contact person object using the UUID. - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $contactObject = $objectService->find( + $contactObject = $this->objectService->find( id: $contactData, register: $register, schema: $contactSchema, @@ -1976,7 +1970,6 @@ private function processRelatedContactPersons(string $organizationUuid, $organiz } // Find all contactpersoon objects that have this organization in their organisation property. - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); // Search for contactpersoon objects with this organization reference. // Try both 'organisatie' and 'organisation' field names. @@ -1999,7 +1992,7 @@ private function processRelatedContactPersons(string $organizationUuid, $organiz ] ); - $relatedContacts = $objectService->searchObjects($query); + $relatedContacts = $this->objectService->searchObjects($query); // If not found, try with 'organisation' field. if (empty($relatedContacts) === true) { @@ -2014,7 +2007,7 @@ private function processRelatedContactPersons(string $organizationUuid, $organiz ] ); - $relatedContacts = $objectService->searchObjects($query); + $relatedContacts = $this->objectService->searchObjects($query); } if (empty($relatedContacts) === true) { @@ -2032,7 +2025,7 @@ private function processRelatedContactPersons(string $organizationUuid, $organiz $orgRegister = ($voorzieningenConfig2['register'] ?? ''); $orgSchema = ($voorzieningenConfig2['organisatie_schema'] ?? ''); - $rawOrgObject = $objectService->find( + $rawOrgObject = $this->objectService->find( id: $organizationUuid, register: $orgRegister, schema: $orgSchema, @@ -2063,7 +2056,7 @@ private function processRelatedContactPersons(string $organizationUuid, $organiz } try { - $contactObj = $objectService->find( + $contactObj = $this->objectService->find( id: $contactUuid, register: $register, schema: $contactSchema, @@ -2131,7 +2124,7 @@ private function processRelatedContactPersons(string $organizationUuid, $organiz ); try { - $fullContactObject = $objectService->find( + $fullContactObject = $this->objectService->find( id: $contactUuid, register: $register, schema: $contactSchema, @@ -2160,8 +2153,7 @@ private function processRelatedContactPersons(string $organizationUuid, $organiz if (empty($contactData['organisatie']) === true) { $contactData['organisatie'] = $organizationUuid; $contactObject->setObject($contactData); - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update($contactObject); + $this->magicMapper->update($contactObject); $this->logger->info( '[FLOW] Set missing organisatie field on related contact', [ @@ -2241,8 +2233,6 @@ private function createOrUpdateContactPersonObject( array &$stats, ): void { try { - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $email = ($contactData['email'] ?? $contactData['e-mailadres'] ?? ''); if (empty($email) === true) { $this->logger->warning( @@ -2272,7 +2262,7 @@ private function createOrUpdateContactPersonObject( ); try { - $contactObject = $objectService->find( + $contactObject = $this->objectService->find( id: $existingContactId, register: $register, schema: $contactSchema, @@ -2310,7 +2300,7 @@ private function createOrUpdateContactPersonObject( unset($contactData['id']); unset($contactData['uuid']); - $contactObject = $objectService->saveObject( + $contactObject = $this->objectService->saveObject( object: $contactData, register: $register, schema: $contactSchema, @@ -2323,8 +2313,7 @@ private function createOrUpdateContactPersonObject( $restoredData = $contactObject->getObject(); $restoredData['organisatie'] = $savedOrganisation; $contactObject->setObject($restoredData); - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update($contactObject); + $this->magicMapper->update($contactObject); } }//end if @@ -2337,8 +2326,7 @@ private function createOrUpdateContactPersonObject( $contactObjectData['organisatie'] = $organizationUuid; $contactObject->setObject($contactObjectData); $contactObject->setOrganisation($organizationUuid); - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update($contactObject); + $this->magicMapper->update($contactObject); $this->logger->info( '[FLOW] Set missing organisatie field on contact person', [ @@ -2364,8 +2352,7 @@ private function createOrUpdateContactPersonObject( // Check if organization exists in organisation entity table. $organisationEntity = null; try { - $organisationMapper = $this->container->get('OCA\OpenRegister\Db\OrganisationMapper'); - $organisationEntity = $organisationMapper->findByUuid($organizationUuid); + $organisationEntity = $this->organisationMapper->findByUuid($organizationUuid); } catch (\OCP\AppFramework\Db\DoesNotExistException $e) { // Backup: org entity missing — create it now so user creation can proceed. $this->logger->info( @@ -2377,7 +2364,7 @@ private function createOrUpdateContactPersonObject( ); try { $voorzieningenConfig = $this->settingsService->getVoorzieningenConfig(); - $orgObject = $objectService->find( + $orgObject = $this->objectService->find( id: $organizationUuid, register: ($voorzieningenConfig['register'] ?? ''), schema: ($voorzieningenConfig['organisatie_schema'] ?? '') @@ -2456,8 +2443,7 @@ private function createOrUpdateContactPersonObject( ); try { - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update($contactObject); + $this->magicMapper->update($contactObject); $this->logger->info( 'Contact saved with username', [ @@ -2620,8 +2606,7 @@ public function processSpecificContactPerson($contactObject): array { // Check if organization exists in organisation entity table. $organisationEntity = null; try { - $organisationMapper = $this->container->get('OCA\OpenRegister\Db\OrganisationMapper'); - $organisationEntity = $organisationMapper->findByUuid($organizationUuid); + $organisationEntity = $this->organisationMapper->findByUuid($organizationUuid); } catch (\OCP\AppFramework\Db\DoesNotExistException $e) { // Backup: org entity missing — create it now so user creation can proceed. $this->logger->info( @@ -2633,8 +2618,7 @@ public function processSpecificContactPerson($contactObject): array { ); try { $voorzieningenConfig = $this->settingsService->getVoorzieningenConfig(); - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $orgObject = $objectService->find( + $orgObject = $this->objectService->find( id: $organizationUuid, register: ($voorzieningenConfig['register'] ?? ''), schema: ($voorzieningenConfig['organisatie_schema'] ?? '') @@ -2697,8 +2681,7 @@ public function processSpecificContactPerson($contactObject): array { // that may fail — but the user was already created successfully above. try { $contactObject->setObject($contactEntityObject); - $objectService = $this->container->get('OCA\OpenRegister\Service\ObjectService'); - $objectService->saveObject( + $this->objectService->saveObject( object: $contactObject, register: $register, schema: $contactSchema, @@ -3183,8 +3166,7 @@ private function updateOrganisationObjectOwner( $organisationObject->setOrganisation($organisationEntityUuid); // Save using MagicMapper directly to bypass validation and ensure metadata is persisted. - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update($organisationObject); + $this->magicMapper->update($organisationObject); $this->logger->info( 'OrganizationSyncService: Successfully updated organisatie object owner and organisation', @@ -3298,8 +3280,7 @@ private function updateContactPersonObjectOwner( } // Save using MagicMapper directly to bypass validation and ensure metadata is persisted. - $objectMapper = $this->container->get('OCA\OpenRegister\Db\MagicMapper'); - $objectMapper->update($contactObject); + $this->magicMapper->update($contactObject); $this->logger->info( 'OrganizationSyncService: Successfully updated contactpersoon object owner and organisation',