diff --git a/src/Bundle/ChillDocStoreBundle/ChillDocStoreBundle.php b/src/Bundle/ChillDocStoreBundle/ChillDocStoreBundle.php index 6910871de..4f6df8446 100644 --- a/src/Bundle/ChillDocStoreBundle/ChillDocStoreBundle.php +++ b/src/Bundle/ChillDocStoreBundle/ChillDocStoreBundle.php @@ -16,6 +16,7 @@ use Chill\DocStoreBundle\GenericDoc\GenericDocForAccompanyingPeriodProviderInter use Chill\DocStoreBundle\GenericDoc\GenericDocForPersonProviderInterface; use Chill\DocStoreBundle\GenericDoc\GenericDocNormalizerInterface; use Chill\DocStoreBundle\GenericDoc\Twig\GenericDocRendererInterface; +use Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Bundle\Bundle; @@ -31,6 +32,8 @@ class ChillDocStoreBundle extends Bundle ->addTag('chill_doc_store.generic_doc_renderer'); $container->registerForAutoconfiguration(GenericDocNormalizerInterface::class) ->addTag('chill_doc_store.generic_doc_metadata_normalizer'); + $container->registerForAutoconfiguration(AssociatedEntityToStoredObjectInterface::class) + ->addTag('chill_doc_store.associated_entity_to_stored_object_repository'); $container->addCompilerPass(new StorageConfigurationCompilerPass()); } diff --git a/src/Bundle/ChillDocStoreBundle/Repository/AssociatedEntityToStoredObjectInterface.php b/src/Bundle/ChillDocStoreBundle/Repository/AssociatedEntityToStoredObjectInterface.php index e90164a2a..8f581d016 100644 --- a/src/Bundle/ChillDocStoreBundle/Repository/AssociatedEntityToStoredObjectInterface.php +++ b/src/Bundle/ChillDocStoreBundle/Repository/AssociatedEntityToStoredObjectInterface.php @@ -14,6 +14,8 @@ namespace Chill\DocStoreBundle\Repository; use Chill\DocStoreBundle\Entity\StoredObject; /** + * Interface to add to repository to find an entity related to a stored object. + * * @template T of object */ interface AssociatedEntityToStoredObjectInterface diff --git a/src/Bundle/ChillDocStoreBundle/Repository/AssociatedEntityToStoredObjectRepository.php b/src/Bundle/ChillDocStoreBundle/Repository/AssociatedEntityToStoredObjectRepository.php new file mode 100644 index 000000000..06dd30087 --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Repository/AssociatedEntityToStoredObjectRepository.php @@ -0,0 +1,37 @@ + $repositories + */ + public function __construct(private array $repositories) {} + + public function findAssociatedEntityToStoredObject(StoredObject $storedObject): ?object + { + foreach ($this->repositories as $repository) { + $result = $repository->findAssociatedEntityToStoredObject($storedObject); + if (null !== $result) { + return $result; + } + } + + return null; + } +} diff --git a/src/Bundle/ChillDocStoreBundle/config/services.yaml b/src/Bundle/ChillDocStoreBundle/config/services.yaml index caecc216d..778fae835 100644 --- a/src/Bundle/ChillDocStoreBundle/config/services.yaml +++ b/src/Bundle/ChillDocStoreBundle/config/services.yaml @@ -5,9 +5,16 @@ services: Chill\DocStoreBundle\Repository\: resource: "../Repository/" + exclude: + - '../Repository/AssociatedEntityToStoredObjectRepository.php' + - '../Repository/AssociatedEntityToStoredObjectInterface.php' tags: - { name: doctrine.repository_service } + Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectRepository: + arguments: + $repositories: !tagged_iterator chill_doc_store.associated_entity_to_stored_object_repository + Chill\DocStoreBundle\Security\Authorization\: resource: "./../Security/Authorization" @@ -27,6 +34,9 @@ services: Chill\DocStoreBundle\Service\: resource: '../Service/' + Chill\DocStoreBundle\Audit\: + resource: '../Audit/' + Chill\DocStoreBundle\GenericDoc\Manager: arguments: $providersForAccompanyingPeriod: !tagged_iterator chill_doc_store.generic_doc_accompanying_period_provider