diff --git a/src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php b/src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php index a1b42f34d..347028fed 100644 --- a/src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php +++ b/src/Bundle/ChillTaskBundle/Controller/SingleTaskController.php @@ -26,6 +26,7 @@ use Chill\TaskBundle\Event\TaskEvent; use Chill\TaskBundle\Event\UI\UIEvent; use Chill\TaskBundle\Form\SingleTaskType; use Chill\TaskBundle\Repository\SingleTaskAclAwareRepositoryInterface; +use Chill\TaskBundle\Repository\SingleTaskRepository; use Chill\TaskBundle\Repository\SingleTaskStateRepository; use Chill\TaskBundle\Security\Authorization\TaskVoter; use LogicException; @@ -48,41 +49,18 @@ use function array_merge; final class SingleTaskController extends AbstractController { - private CenterResolverDispatcherInterface $centerResolverDispatcher; - - private EventDispatcherInterface $eventDispatcher; - - private FilterOrderHelperFactoryInterface $filterOrderHelperFactory; - - private LoggerInterface $logger; - - private PaginatorFactory $paginatorFactory; - - private SingleTaskAclAwareRepositoryInterface $singleTaskAclAwareRepository; - - private TimelineBuilder $timelineBuilder; - - private TranslatorInterface $translator; - public function __construct( - CenterResolverDispatcherInterface $centerResolverDispatcher, - PaginatorFactory $paginatorFactory, - SingleTaskAclAwareRepositoryInterface $singleTaskAclAwareRepository, - TranslatorInterface $translator, - EventDispatcherInterface $eventDispatcher, - TimelineBuilder $timelineBuilder, - LoggerInterface $logger, - FilterOrderHelperFactoryInterface $filterOrderHelperFactory, - private SingleTaskStateRepository $singleTaskStateRepository + private CenterResolverDispatcherInterface $centerResolverDispatcher, + private PaginatorFactory $paginatorFactory, + private SingleTaskAclAwareRepositoryInterface $singleTaskAclAwareRepository, + private TranslatorInterface $translator, + private EventDispatcherInterface $eventDispatcher, + private TimelineBuilder $timelineBuilder, + private LoggerInterface $logger, + private FilterOrderHelperFactoryInterface $filterOrderHelperFactory, + private SingleTaskStateRepository $singleTaskStateRepository, + private SingleTaskRepository $singleTaskRepository ) { - $this->eventDispatcher = $eventDispatcher; - $this->timelineBuilder = $timelineBuilder; - $this->logger = $logger; - $this->translator = $translator; - $this->centerResolverDispatcher = $centerResolverDispatcher; - $this->paginatorFactory = $paginatorFactory; - $this->singleTaskAclAwareRepository = $singleTaskAclAwareRepository; - $this->filterOrderHelperFactory = $filterOrderHelperFactory; } /** @@ -300,7 +278,7 @@ final class SingleTaskController extends AbstractController ) { $this->denyAccessUnlessGranted(TaskVoter::SHOW, null); - $showMissionTypeFilter = $this->getParameter('show_mission_type_filter'); + $showMissionTypeFilter = $this->singleTaskRepository->countByDistinctTypes() > 2 ? true : false; $filterOrder = $this->buildFilterOrder(true, $showMissionTypeFilter); @@ -706,8 +684,12 @@ final class SingleTaskController extends AbstractController } if ($includeMissionType) { - $missionTypes = $this->getParameter('task_types'); - $filterBuilder->addCheckbox('missionTypePicker', $missionTypes); + $missionTypes = $this->singleTaskRepository->findAllTasktypes(); + foreach ($missionTypes as $type) { + $arrayOfTypes[] = $type['type']; + } + + $filterBuilder->addCheckbox('missionTypePicker', $arrayOfTypes); } return $filterBuilder->build(); diff --git a/src/Bundle/ChillTaskBundle/Repository/SingleTaskAclAwareRepository.php b/src/Bundle/ChillTaskBundle/Repository/SingleTaskAclAwareRepository.php index c8f989765..3d2f3786c 100644 --- a/src/Bundle/ChillTaskBundle/Repository/SingleTaskAclAwareRepository.php +++ b/src/Bundle/ChillTaskBundle/Repository/SingleTaskAclAwareRepository.php @@ -82,7 +82,7 @@ final class SingleTaskAclAwareRepository implements SingleTaskAclAwareRepository return $qb; } - if (null !== $types && count($types) > 0) { + if (null !== $types && count($types) > 0) { $qb->andWhere($qb->expr()->in('t.type', ':types')); $qb->setParameter('types', $types); diff --git a/src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php b/src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php index e3eb634cd..53637f35a 100644 --- a/src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php +++ b/src/Bundle/ChillTaskBundle/Repository/SingleTaskRepository.php @@ -306,4 +306,28 @@ class SingleTaskRepository extends EntityRepository ->add($qb->expr()->isNull('st.endDate')) ->add($qb->expr()->isNull('st.warningInterval')); } + + public function countByDistinctTypes() + { + $qb = $this->createQueryBuilder('st') + ->select('COUNT(DISTINCT st.type)'); + + $this->buildQuery($qb, []); + + return (int) $qb + ->getQuery() + ->getSingleScalarResult(); + } + + public function findAllTasktypes() + { + $qb = $this->createQueryBuilder('st') + ->select('DISTINCT st.type'); + + $this->buildQuery($qb, []); + + return $qb + ->getQuery() + ->getResult(); + } }