Fix: last fixes for accompanying period work filters

- avoid errors when the user inverse date from and date to (we correct them)
- allow the user to filter by multiple users
- do not show filter by types if only one action type
- more type-hinting in the $filter argument for AccompanyingPeriodWorkRepository::findByAccompanyingPeriodOpenFirst
This commit is contained in:
2023-07-14 09:23:23 +02:00
parent f2673d6c83
commit a21cefab31
3 changed files with 42 additions and 27 deletions

View File

@@ -26,13 +26,14 @@ use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Form;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class AccompanyingCourseWorkController extends AbstractController
final class AccompanyingCourseWorkController extends AbstractController
{
public function __construct(
private readonly TranslatorInterface $trans,
@@ -158,7 +159,7 @@ class AccompanyingCourseWorkController extends AbstractController
$filter = $this->buildFilterOrder($period);
$filterData = [
'types' => $filter->getEntityChoiceData('typesFilter'),
'types' => $filter->hasEntityChoice('typesFilter') ? $filter->getEntityChoiceData('typesFilter') : [],
'before' => $filter->getDateRangeData('dateFilter')['to'],
'after' => $filter->getDateRangeData('dateFilter')['from'],
'user' => $filter->getUserPickerData('userFilter')
@@ -203,7 +204,7 @@ class AccompanyingCourseWorkController extends AbstractController
]);
}
private function createDeleteForm(int $id): Form
private function createDeleteForm(int $id): FormInterface
{
$params = [];
$params['id'] = $id;
@@ -217,16 +218,21 @@ class AccompanyingCourseWorkController extends AbstractController
private function buildFilterOrder($associatedPeriod): FilterOrderHelper
{
$filterBuilder = $this->filterOrderHelperFactory->create(self::class);
$types = $this->workRepository->findActionTypeByPeriod($associatedPeriod);
$filterBuilder
->addDateRange('dateFilter', 'accompanying_course_work.date_filter')
->addEntityChoice('typesFilter', 'accompanying_course_work.types_filter', \Chill\PersonBundle\Entity\SocialWork\SocialAction::class, $types, [
'choice_label' => fn (SocialAction $sa) => $this->translatableStringHelper->localize($sa->getTitle())
])
->addUserPicker('userFilter', 'accompanying_course_work.user_filter', ['required' => false, 'multiple' => false])
->addDateRange('dateFilter', 'accompanying_course_work.date_filter');
if (1 < count($types)) {
$filterBuilder
->addEntityChoice('typesFilter', 'accompanying_course_work.types_filter', \Chill\PersonBundle\Entity\SocialWork\SocialAction::class, $types, [
'choice_label' => fn (SocialAction $sa) => $this->translatableStringHelper->localize($sa->getTitle())
]);
}
$filterBuilder
->addUserPicker('userFilter', 'accompanying_course_work.user_filter', ['required' => false])
;
return $filterBuilder->build();