diff --git a/src/Bundle/ChillDocStoreBundle/Service/WorkflowDocumentService.php b/src/Bundle/ChillDocStoreBundle/Service/WorkflowDocumentService.php index 78c7b7b7d..3444653b1 100644 --- a/src/Bundle/ChillDocStoreBundle/Service/WorkflowDocumentService.php +++ b/src/Bundle/ChillDocStoreBundle/Service/WorkflowDocumentService.php @@ -11,7 +11,6 @@ declare(strict_types=1); namespace Chill\DocStoreBundle\Service; -use Chill\MainBundle\Entity\Workflow\EntityWorkflow; use Chill\MainBundle\Workflow\EntityWorkflowManager; use Symfony\Component\Security\Core\Security; @@ -21,13 +20,10 @@ class WorkflowDocumentService public function notBlockedByWorkflow(object $entity): bool { - /** - * @var EntityWorkflow - */ - $workflow = $this->entityWorkflowManager->findByRelatedEntity($entity); + $workflows = $this->entityWorkflowManager->findByRelatedEntity($entity); $currentUser = $this->security->getUser(); - if (null != $workflow) { + foreach ($workflows as $workflow) { if ($workflow->isFinal()) { return false; } diff --git a/src/Bundle/ChillDocStoreBundle/Workflow/AccompanyingCourseDocumentWorkflowHandler.php b/src/Bundle/ChillDocStoreBundle/Workflow/AccompanyingCourseDocumentWorkflowHandler.php index 74e51b19e..59d2718c8 100644 --- a/src/Bundle/ChillDocStoreBundle/Workflow/AccompanyingCourseDocumentWorkflowHandler.php +++ b/src/Bundle/ChillDocStoreBundle/Workflow/AccompanyingCourseDocumentWorkflowHandler.php @@ -121,10 +121,10 @@ readonly class AccompanyingCourseDocumentWorkflowHandler implements EntityWorkfl return false; } - public function findByRelatedEntity(object $object): ?EntityWorkflow + public function findByRelatedEntity(object $object): array { if (!$object instanceof AccompanyingCourseDocument) { - return null; + return []; } return $this->workflowRepository->findByRelatedEntity(AccompanyingCourseDocument::class, $object->getId()); diff --git a/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowRepository.php b/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowRepository.php index dba68ee41..81cdcd551 100644 --- a/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowRepository.php +++ b/src/Bundle/ChillMainBundle/Repository/Workflow/EntityWorkflowRepository.php @@ -99,7 +99,10 @@ class EntityWorkflowRepository implements ObjectRepository return $this->repository->findAll(); } - public function findByRelatedEntity($entityClass, $relatedEntityId): ?EntityWorkflow + /** + * @return list + */ + public function findByRelatedEntity($entityClass, $relatedEntityId): array { $qb = $this->repository->createQueryBuilder('w'); diff --git a/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php b/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php index bff1057c8..ebe412587 100644 --- a/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php +++ b/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowHandlerInterface.php @@ -52,5 +52,8 @@ interface EntityWorkflowHandlerInterface public function supportsFreeze(EntityWorkflow $entityWorkflow, array $options = []): bool; - public function findByRelatedEntity(object $object): ?EntityWorkflow; + /** + * @return list + */ + public function findByRelatedEntity(object $object): array; } diff --git a/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowManager.php b/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowManager.php index 26c31506f..a5b9b6a23 100644 --- a/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowManager.php +++ b/src/Bundle/ChillMainBundle/Workflow/EntityWorkflowManager.php @@ -38,12 +38,17 @@ class EntityWorkflowManager return $this->registry->all($entityWorkflow); } - public function findByRelatedEntity(object $object): ?EntityWorkflow + /** + * @return list + */ + public function findByRelatedEntity(object $object): array { foreach ($this->handlers as $handler) { - return $handler->findByRelatedEntity($object); + if ([] !== $workflows = $handler->findByRelatedEntity($object)) { + return $workflows; + } } - return null; + return []; } } diff --git a/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkEvaluationDocumentRepository.php b/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkEvaluationDocumentRepository.php index 5da541cf8..e3a484f0b 100644 --- a/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkEvaluationDocumentRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriod/AccompanyingPeriodWorkEvaluationDocumentRepository.php @@ -13,7 +13,6 @@ namespace Chill\PersonBundle\Repository\AccompanyingPeriod; use Chill\DocStoreBundle\Entity\StoredObject; use Chill\DocStoreBundle\Repository\AssociatedEntityToStoredObjectInterface; -use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork; use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationDocument; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; diff --git a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php index 34f8db4a7..cc59a509b 100644 --- a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php +++ b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler.php @@ -135,10 +135,10 @@ class AccompanyingPeriodWorkEvaluationDocumentWorkflowHandler implements EntityW return false; } - public function findByRelatedEntity(object $object): ?EntityWorkflow + public function findByRelatedEntity(object $object): array { if (!$object instanceof AccompanyingPeriodWorkEvaluationDocument) { - return null; + return []; } return $this->workflowRepository->findByRelatedEntity(AccompanyingPeriodWorkEvaluationDocument::class, $object->getId()); diff --git a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php index e007f03f7..a9897f9bd 100644 --- a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php +++ b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkEvaluationWorkflowHandler.php @@ -21,13 +21,13 @@ use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkEvalu use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodWorkEvaluationVoter; use Symfony\Contracts\Translation\TranslatorInterface; -class AccompanyingPeriodWorkEvaluationWorkflowHandler implements EntityWorkflowHandlerInterface +readonly class AccompanyingPeriodWorkEvaluationWorkflowHandler implements EntityWorkflowHandlerInterface { public function __construct( - private readonly AccompanyingPeriodWorkEvaluationRepository $repository, - private readonly EntityWorkflowRepository $workflowRepository, - private readonly TranslatableStringHelperInterface $translatableStringHelper, - private readonly TranslatorInterface $translator + private AccompanyingPeriodWorkEvaluationRepository $repository, + private EntityWorkflowRepository $workflowRepository, + private TranslatableStringHelperInterface $translatableStringHelper, + private TranslatorInterface $translator ) {} public function getDeletionRoles(): array @@ -121,10 +121,10 @@ class AccompanyingPeriodWorkEvaluationWorkflowHandler implements EntityWorkflowH return false; } - public function findByRelatedEntity(object $object): ?EntityWorkflow + public function findByRelatedEntity(object $object): array { if (!$object instanceof AccompanyingPeriodWorkEvaluation) { - return null; + return []; } return $this->workflowRepository->findByRelatedEntity(AccompanyingPeriodWorkEvaluation::class, $object->getId()); diff --git a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php index d40080e33..cb9462b9e 100644 --- a/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php +++ b/src/Bundle/ChillPersonBundle/Workflow/AccompanyingPeriodWorkWorkflowHandler.php @@ -128,10 +128,10 @@ class AccompanyingPeriodWorkWorkflowHandler implements EntityWorkflowHandlerInte return false; } - public function findByRelatedEntity(object $object): ?EntityWorkflow + public function findByRelatedEntity(object $object): array { if (!$object instanceof AccompanyingPeriodWork) { - return null; + return []; } return $this->workflowRepository->findByRelatedEntity(AccompanyingPeriodWork::class, $object->getId());