diff --git a/src/Form/Activity/ActivityFilterForm.php b/src/Form/Activity/ActivityFilterForm.php index 6215e4a..17d7efe 100644 --- a/src/Form/Activity/ActivityFilterForm.php +++ b/src/Form/Activity/ActivityFilterForm.php @@ -14,6 +14,7 @@ use Doctrine\Common\Collections\Criteria; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\Form\Extension\Core\Type\ResetType; class ActivityFilterForm extends AbstractFormManager @@ -35,6 +36,9 @@ 'status' => null, 'active' => false, 'notClosed' => true, + + 'endAfter' => null, + 'startBefore' => null, ]); parent::__construct($formBuilder, $data, $usesToken); } @@ -76,6 +80,20 @@ ->neq('activity.status', StatusEnum::CLOSED)); } + // Filter dates + if (!is_null($data['endAfter'])) { + $criteria->andWhere($criteria->expr() + ->orX($criteria->expr() + ->isNull('activity.realEndDate'), $criteria->expr() + ->gt('activity.realEndDate', $data['endAfter']))); + } + if (!is_null($data['startBefore'])) { + $criteria->andWhere($criteria->expr() + ->orX($criteria->expr() + ->isNull('activity.realStartDate'), $criteria->expr() + ->lt('activity.realStartDate', $data['startBefore']))); + } + // Create query $query = $activityRepository->createQueryBuilder('activity'); $query->join(ActorEntity::class, 'actor', Join::WITH, 'activity.actor = actor'); @@ -133,6 +151,15 @@ 'required' => false, ]); + // Date filters + $formBuilder->add('endAfter', DateType::class, [ + 'required' => false, + 'widget' => 'single_text', + ])->add('startBefore', DateType::class, [ + 'required' => false, + 'widget' => 'single_text', + ]); + // Submit $formBuilder->add('submit', SubmitType::class)->add('reset', ResetType::class); } diff --git a/templates/_includes/html/form/activity/filter.html.twig b/templates/_includes/html/form/activity/filter.html.twig index 310a81a..37e9dc9 100644 --- a/templates/_includes/html/form/activity/filter.html.twig +++ b/templates/_includes/html/form/activity/filter.html.twig @@ -24,6 +24,16 @@ {{ form_label(form.notClosed, 'Non clos') }} +
+
+ {{ form_label(form.endAfter, 'Terminé après', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.endAfter, {attr: {class: 'w-100'}}) }} +
+
+ {{ form_label(form.startBefore, 'Commencé avant', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.startBefore, {attr: {class: 'w-100'}}) }} +
+