From 03717a1a878a1336b1d68989b0b9abade58d6c2a Mon Sep 17 00:00:00 2001 From: Christophe Siraut Date: Fri, 20 Dec 2024 11:28:36 +0100 Subject: [PATCH] ChillPersonBundle: move numberOfDependents configuration to a new household node; extend AdministrativeStatusRepository and EmploymentStatusRepository from ServiceEntityRepository --- .../Controller/HouseholdMemberController.php | 6 +-- .../ChillPersonExtension.php | 21 +++++++++++ .../DependencyInjection/Configuration.php | 6 +++ .../Entity/AdministrativeStatus.php | 3 +- .../Entity/EmploymentStatus.php | 3 +- .../Form/HouseholdCompositionType.php | 6 +-- .../AdministrativeStatusRepository.php | 37 +++---------------- ...dministrativeStatusRepositoryInterface.php | 27 -------------- .../Repository/EmploymentStatusRepository.php | 37 +++---------------- .../EmploymentStatusRepositoryInterface.php | 27 -------------- .../views/Household/summary.html.twig | 2 +- .../HouseholdComposition/index.html.twig | 2 +- 12 files changed, 49 insertions(+), 128 deletions(-) delete mode 100644 src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepositoryInterface.php delete mode 100644 src/Bundle/ChillPersonBundle/Repository/EmploymentStatusRepositoryInterface.php diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php index b9badff8a..fd35ef31b 100644 --- a/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php +++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php @@ -37,7 +37,7 @@ use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; class HouseholdMemberController extends ApiController { - private array $fields_visibility; + private array $household_fields_visibility; public function __construct( private readonly UrlGeneratorInterface $generator, @@ -50,7 +50,7 @@ class HouseholdMemberController extends ApiController private readonly \Doctrine\Persistence\ManagerRegistry $managerRegistry, protected ParameterBagInterface $parameterBag, ) { - $this->fields_visibility = $parameterBag->get('chill_person.person_fields'); + $this->household_fields_visibility = $parameterBag->get('chill_person.household_fields'); } #[Route(path: '/{_locale}/person/household/member/{id}/edit', name: 'chill_person_household_member_edit')] @@ -150,7 +150,7 @@ class HouseholdMemberController extends ApiController 'allowHouseholdCreate' => $allowHouseholdCreate ?? true, 'allowHouseholdSearch' => $allowHouseholdSearch ?? true, 'allowLeaveWithoutHousehold' => $allowLeaveWithoutHousehold ?? $request->query->has('allow_leave_without_household'), - 'displayDependents' => ('visible' == $this->fields_visibility['number_of_dependents']) ? true : false, + 'displayDependents' => ('visible' == $this->household_fields_visibility['number_of_dependents']) ? true : false, ]; // context diff --git a/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php b/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php index 8fddd477d..40393f79e 100644 --- a/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php +++ b/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php @@ -60,6 +60,7 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac $this->handlePersonFieldsParameters($container, $config['person_fields']); $this->handleAccompanyingPeriodsFieldsParameters($container, $config['accompanying_periods_fields']); + $this->handleHouseholdFieldsParameters($container, $config['household_fields']); $container->setParameter( 'chill_person.allow_multiple_simultaneous_accompanying_periods', @@ -135,6 +136,9 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac 'chill_accompanying_periods' => [ 'fields' => $config['accompanying_periods_fields'], ], + 'chill_household' => [ + 'fields' => $config['household_fields'], + ], ], 'form_themes' => ['@ChillPerson/Export/ListPersonFormFields.html.twig'], ]; @@ -1142,6 +1146,23 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac } } + private function handleHouseholdFieldsParameters(ContainerBuilder $container, $config) + { + $container->setParameter('chill_person.household_fields', $config); + + foreach ($config as $key => $value) { + switch ($key) { + case 'enabled': + break; + + default: + $container->setParameter('chill_person.household_fields.'.$key, $value); + + break; + } + } + } + private function handlePersonFieldsParameters(ContainerBuilder $container, $config) { if (\array_key_exists('enabled', $config)) { diff --git a/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php b/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php index d33ddfdc6..12c8b4c5b 100644 --- a/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php +++ b/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php @@ -110,6 +110,12 @@ class Configuration implements ConfigurationInterface ->end() ->end() // children for 'person_fields', parent = array 'person_fields' ->end() // person_fields, parent = children of root + ->arrayNode('household_fields') + ->canBeDisabled() + ->children() + ->append($this->addFieldNode('number_of_dependents', 'hidden')) + ->end() + ->end() ->arrayNode('accompanying_periods_fields') ->canBeDisabled() ->children() diff --git a/src/Bundle/ChillPersonBundle/Entity/AdministrativeStatus.php b/src/Bundle/ChillPersonBundle/Entity/AdministrativeStatus.php index 35260ae56..23d451f48 100644 --- a/src/Bundle/ChillPersonBundle/Entity/AdministrativeStatus.php +++ b/src/Bundle/ChillPersonBundle/Entity/AdministrativeStatus.php @@ -11,11 +11,12 @@ declare(strict_types=1); namespace Chill\PersonBundle\Entity; +use Chill\PersonBundle\Repository\AdministrativeStatusRepository; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation as Serializer; #[Serializer\DiscriminatorMap(typeProperty: 'type', mapping: ['chill_person_administrative_status' => AdministrativeStatus::class])] -#[ORM\Entity] +#[ORM\Entity(repositoryClass: AdministrativeStatusRepository::class)] #[ORM\Table(name: 'chill_person_administrative_status')] class AdministrativeStatus { diff --git a/src/Bundle/ChillPersonBundle/Entity/EmploymentStatus.php b/src/Bundle/ChillPersonBundle/Entity/EmploymentStatus.php index 08b1f45ac..83b3c65f5 100644 --- a/src/Bundle/ChillPersonBundle/Entity/EmploymentStatus.php +++ b/src/Bundle/ChillPersonBundle/Entity/EmploymentStatus.php @@ -11,11 +11,12 @@ declare(strict_types=1); namespace Chill\PersonBundle\Entity; +use Chill\PersonBundle\Repository\EmploymentStatusRepository; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation as Serializer; #[Serializer\DiscriminatorMap(typeProperty: 'type', mapping: ['chill_person_employment_status' => EmploymentStatus::class])] -#[ORM\Entity] +#[ORM\Entity(repositoryClass: EmploymentStatusRepository::class)] #[ORM\Table(name: 'chill_person_employment_status')] class EmploymentStatus { diff --git a/src/Bundle/ChillPersonBundle/Form/HouseholdCompositionType.php b/src/Bundle/ChillPersonBundle/Form/HouseholdCompositionType.php index 437a209e7..b0b7fbef5 100644 --- a/src/Bundle/ChillPersonBundle/Form/HouseholdCompositionType.php +++ b/src/Bundle/ChillPersonBundle/Form/HouseholdCompositionType.php @@ -23,14 +23,14 @@ use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; class HouseholdCompositionType extends AbstractType { - private array $fields_visibility; + private array $household_fields_visibility; public function __construct( private readonly HouseholdCompositionTypeRepository $householdCompositionTypeRepository, private readonly TranslatableStringHelperInterface $translatableStringHelper, protected ParameterBagInterface $parameterBag, ) { - $this->fields_visibility = $parameterBag->get('chill_person.person_fields'); + $this->household_fields_visibility = $parameterBag->get('chill_person.household_fields'); } public function buildForm(FormBuilderInterface $builder, array $options) @@ -52,7 +52,7 @@ class HouseholdCompositionType extends AbstractType 'required' => true, 'label' => 'household_composition.numberOfChildren', ]); - if ('visible' == $this->fields_visibility['number_of_dependents']) { + if ('visible' == $this->household_fields_visibility['number_of_dependents']) { $builder ->add('numberOfDependents', IntegerType::class, [ 'required' => true, diff --git a/src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepository.php b/src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepository.php index 40254c395..637db23c5 100644 --- a/src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepository.php +++ b/src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepository.php @@ -12,40 +12,13 @@ declare(strict_types=1); namespace Chill\PersonBundle\Repository; use Chill\PersonBundle\Entity\AdministrativeStatus; -use Doctrine\ORM\EntityManagerInterface; -use Doctrine\ORM\EntityRepository; +use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; +use Doctrine\Persistence\ManagerRegistry; -class AdministrativeStatusRepository implements AdministrativeStatusRepositoryInterface +class AdministrativeStatusRepository extends ServiceEntityRepository { - private readonly EntityRepository $repository; - - public function __construct(EntityManagerInterface $entityManager) + public function __construct(ManagerRegistry $registry) { - $this->repository = $entityManager->getRepository(AdministrativeStatus::class); - } - - public function find($id): ?AdministrativeStatus - { - return $this->repository->find($id); - } - - public function findAll(): array - { - return $this->repository->findAll(); - } - - public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null): array - { - return $this->repository->findBy($criteria, $orderBy, $limit, $offset); - } - - public function findOneBy(array $criteria): ?AdministrativeStatus - { - return $this->findOneBy($criteria); - } - - public function getClassName(): string - { - return AdministrativeStatus::class; + parent::__construct($registry, AdministrativeStatus::class); } } diff --git a/src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepositoryInterface.php b/src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepositoryInterface.php deleted file mode 100644 index da40a117b..000000000 --- a/src/Bundle/ChillPersonBundle/Repository/AdministrativeStatusRepositoryInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -repository = $entityManager->getRepository(EmploymentStatus::class); - } - - public function find($id): ?EmploymentStatus - { - return $this->repository->find($id); - } - - public function findAll(): array - { - return $this->repository->findAll(); - } - - public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null): array - { - return $this->repository->findBy($criteria, $orderBy, $limit, $offset); - } - - public function findOneBy(array $criteria): ?EmploymentStatus - { - return $this->findOneBy($criteria); - } - - public function getClassName(): string - { - return EmploymentStatus::class; + parent::__construct($registry, EmploymentStatus::class); } } diff --git a/src/Bundle/ChillPersonBundle/Repository/EmploymentStatusRepositoryInterface.php b/src/Bundle/ChillPersonBundle/Repository/EmploymentStatusRepositoryInterface.php deleted file mode 100644 index 5d696cc9c..000000000 --- a/src/Bundle/ChillPersonBundle/Repository/EmploymentStatusRepositoryInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -

{{ 'household_composition.numberOfChildren children in household'|trans({'numberOfChildren': currentComposition.numberOfChildren}) }} - {% if chill_person.fields.number_of_dependents == 'visible' %} + {% if chill_household.fields.number_of_dependents == 'visible' %}
{{ 'household_composition.numberOfDependents adult dependents'|trans({'numberOfDependents': currentComposition.numberOfDependents}) }}
diff --git a/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig index 2b0b8946b..f3c931707 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig @@ -21,7 +21,7 @@

{{ c.householdCompositionType.label|localize_translatable_string }}

{{ 'household_composition.numberOfChildren'|trans }}: {{ c.numberOfChildren }}

- {% if chill_person.fields.number_of_dependents == 'visible' %} + {% if chill_household.fields.number_of_dependents == 'visible' %}

{{ 'household_composition.numberOfDependents'|trans }}: {{ c.numberOfDependents }}

{{ 'household_composition.numberOfDependentsWithDisabilities'|trans }}: {{ c.numberOfDependentsWithDisabilities }}

{% endif %}