From c5e8e2ee874724d851b7c7715065bc11aa6d9113 Mon Sep 17 00:00:00 2001 From: Dimitri Gritsajuk Date: Fri, 7 Feb 2025 11:49:33 +0100 Subject: [PATCH] Add Custom CountryType for list only countries without territories --- src/Admin/AbstractAdherentAdmin.php | 2 +- src/Admin/CommitteeAdmin.php | 3 +- src/Admin/DonationAdmin.php | 4 +- src/Admin/DonatorAdmin.php | 8 +--- src/Admin/EventAdmin.php | 3 +- .../Procuration/AbstractProcurationAdmin.php | 4 +- src/Entity/Adherent.php | 2 +- src/Form/AddressType.php | 3 -- src/Form/AdherentProfileType.php | 2 - .../Admin/Adherent/CreateRenaissanceType.php | 3 +- src/Form/AutocompleteAddressType.php | 2 - .../BesoinDEurope/DonationRequestType.php | 5 +-- src/Form/CountryType.php | 40 +++++++++++++++++++ src/Form/DonationRequestV2Type.php | 4 +- src/Form/MembershipRequestType.php | 4 +- src/Form/NullableAddressType.php | 1 - .../Contribution/InformationsType.php | 7 +--- 17 files changed, 56 insertions(+), 41 deletions(-) create mode 100644 src/Form/CountryType.php diff --git a/src/Admin/AbstractAdherentAdmin.php b/src/Admin/AbstractAdherentAdmin.php index b5bcea5e474..93feb838e47 100644 --- a/src/Admin/AbstractAdherentAdmin.php +++ b/src/Admin/AbstractAdherentAdmin.php @@ -30,6 +30,7 @@ use App\Form\Admin\AdherentZoneBasedRoleType; use App\Form\Admin\ElectedRepresentativeAdherentMandateType; use App\Form\Admin\JecouteManagedAreaType; +use App\Form\CountryType; use App\Form\EventListener\CommitteeMembershipListener; use App\Form\EventListener\RevokeManagedAreaSubscriber; use App\Form\GenderType; @@ -73,7 +74,6 @@ use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\NumberType; diff --git a/src/Admin/CommitteeAdmin.php b/src/Admin/CommitteeAdmin.php index a2c5f195836..c793ae2e5b1 100644 --- a/src/Admin/CommitteeAdmin.php +++ b/src/Admin/CommitteeAdmin.php @@ -11,6 +11,7 @@ use App\Entity\CommitteeMembership; use App\Entity\Geo\Zone; use App\Form\Admin\RenaissanceAdherentAutocompleteType; +use App\Form\CountryType; use Doctrine\ORM\EntityManagerInterface as ObjectManager; use Doctrine\ORM\QueryBuilder; use Sonata\AdminBundle\Admin\AbstractAdmin; @@ -27,7 +28,6 @@ use Sonata\DoctrineORMAdminBundle\Filter\DateRangeFilter; use Sonata\Form\Type\DateRangePickerType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\UrlType; @@ -217,7 +217,6 @@ protected function configureFormFields(FormMapper $form): void ]) ->add('postAddress.country', CountryType::class, [ 'required' => false, - 'label' => 'Pays', ]) ->end() ->end() diff --git a/src/Admin/DonationAdmin.php b/src/Admin/DonationAdmin.php index 924b162a1c9..243f7b943d9 100644 --- a/src/Admin/DonationAdmin.php +++ b/src/Admin/DonationAdmin.php @@ -2,7 +2,6 @@ namespace App\Admin; -use App\Address\AddressInterface; use App\Admin\Exporter\IterableCallbackDataSourceTrait; use App\Admin\Exporter\IteratorCallbackDataSource; use App\Admin\Filter\UtmFilter; @@ -15,6 +14,7 @@ use App\Entity\DonationTag; use App\Entity\Geo\Zone; use App\Entity\PostAddress; +use App\Form\CountryType; use App\Membership\Event\UserEvent; use App\Membership\MembershipSourceEnum; use App\Membership\UserEvents; @@ -40,7 +40,6 @@ use Sonata\Form\Type\DateRangePickerType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\Extension\Core\Type\NumberType as FormNumberType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -154,7 +153,6 @@ protected function configureFormFields(FormMapper $form): void ]) ->add('nationality', CountryType::class, [ 'label' => 'Nationalité', - 'preferred_choices' => [AddressInterface::FRANCE], ]) ->add('donatedAt', null, [ 'label' => 'Date du don', diff --git a/src/Admin/DonatorAdmin.php b/src/Admin/DonatorAdmin.php index 9f6d6895538..37a406e9e71 100644 --- a/src/Admin/DonatorAdmin.php +++ b/src/Admin/DonatorAdmin.php @@ -2,7 +2,6 @@ namespace App\Admin; -use App\Address\AddressInterface; use App\Admin\Exporter\IterableCallbackDataSourceTrait; use App\Admin\Exporter\IteratorCallbackDataSource; use App\Donation\DonatorManager; @@ -13,6 +12,7 @@ use App\Entity\DonatorTag; use App\Entity\Transaction; use App\Form\Admin\DonatorKinshipType; +use App\Form\CountryType; use App\Form\GenderType; use App\Repository\DonationRepository; use App\Utils\PhoneNumberUtils; @@ -33,7 +33,6 @@ use Sonata\Form\Type\DateRangePickerType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\TextType; class DonatorAdmin extends AbstractAdmin @@ -113,10 +112,7 @@ protected function configureFormFields(FormMapper $form): void ->add('city', null, [ 'label' => 'Ville', ]) - ->add('country', CountryType::class, [ - 'label' => 'Pays', - 'preferred_choices' => [AddressInterface::FRANCE], - ]) + ->add('country', CountryType::class) ->end() ->with('Administration', ['class' => 'col-md-6']) ->add('tags', null, [ diff --git a/src/Admin/EventAdmin.php b/src/Admin/EventAdmin.php index 6f26a076127..c6165d4c319 100644 --- a/src/Admin/EventAdmin.php +++ b/src/Admin/EventAdmin.php @@ -8,6 +8,7 @@ use App\Event\EventEvent; use App\Event\EventVisibilityEnum; use App\Events; +use App\Form\CountryType; use App\Form\EventCategoryType; use App\Utils\PhpConfigurator; use Sonata\AdminBundle\Datagrid\DatagridMapper; @@ -24,7 +25,6 @@ use Sonata\DoctrineORMAdminBundle\Filter\DateRangeFilter; use Sonata\Form\Type\DateRangePickerType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\EnumType; use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -200,7 +200,6 @@ protected function configureFormFields(FormMapper $form): void 'required' => false, ]) ->add('postAddress.country', CountryType::class, [ - 'label' => 'Pays', 'required' => false, ]) ->add('postAddress.latitude', NumberType::class, [ diff --git a/src/Admin/Procuration/AbstractProcurationAdmin.php b/src/Admin/Procuration/AbstractProcurationAdmin.php index a20dcd71b20..847d207a230 100644 --- a/src/Admin/Procuration/AbstractProcurationAdmin.php +++ b/src/Admin/Procuration/AbstractProcurationAdmin.php @@ -9,6 +9,7 @@ use App\Entity\Geo\Zone; use App\Entity\ProcurationV2\AbstractProcuration; use App\Entity\ProcurationV2\Round; +use App\Form\CountryType; use App\Form\GenderType; use App\Form\TelNumberType; use App\Query\Utils\MultiColumnsSearchHelper; @@ -28,7 +29,6 @@ use Sonata\Form\Type\DateRangePickerType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Contracts\Translation\TranslatorInterface; @@ -80,7 +80,7 @@ protected function configureFormFields(FormMapper $form): void ->add('postAddress.additionalAddress', TextType::class, ['label' => 'Complément d\'adresse', 'required' => false]) ->add('postAddress.postalCode', TextType::class, ['label' => 'Code postal']) ->add('postAddress.cityName', TextType::class, ['label' => 'Ville']) - ->add('postAddress.country', CountryType::class, ['label' => 'Pays']) + ->add('postAddress.country', CountryType::class) ->add('joinNewsletter', CheckboxType::class, [ 'label' => 'Inscription à la newsletter', 'required' => false, diff --git a/src/Entity/Adherent.php b/src/Entity/Adherent.php index af864d591a2..0782d586a12 100644 --- a/src/Entity/Adherent.php +++ b/src/Entity/Adherent.php @@ -850,7 +850,7 @@ public function getCustomGender(): ?string public function isForeignResident(): bool { - return !\in_array(strtoupper($this->getCountry()), AddressInterface::FRENCH_CODES, true); + return AddressInterface::FRANCE !== strtoupper($this->getCountry()); } public function isParisResident(): bool diff --git a/src/Form/AddressType.php b/src/Form/AddressType.php index 6871cf5da48..f45376fcf88 100644 --- a/src/Form/AddressType.php +++ b/src/Form/AddressType.php @@ -8,7 +8,6 @@ use App\FranceCities\FranceCities; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; @@ -57,10 +56,8 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'disabled' => $options['disable_fields'], ]) ->add('country', CountryType::class, [ - 'label' => 'Pays', 'disabled' => $options['disable_fields'], 'placeholder' => 'Sélectionner un pays', - 'preferred_choices' => [AddressInterface::FRANCE], 'invalid_message' => 'common.country.invalid', ]) ->add('postalCode', TextType::class, [ diff --git a/src/Form/AdherentProfileType.php b/src/Form/AdherentProfileType.php index 695919ae8f8..faebd17bc5d 100644 --- a/src/Form/AdherentProfileType.php +++ b/src/Form/AdherentProfileType.php @@ -8,7 +8,6 @@ use App\Entity\JobEnum; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\UrlType; @@ -34,7 +33,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ]) ->add('nationality', CountryType::class, [ 'placeholder' => 'Nationalité', - 'preferred_choices' => [AddressInterface::FRANCE], ]) ->add('emailAddress', EmailType::class) ->add('position', ActivityPositionType::class, [ diff --git a/src/Form/Admin/Adherent/CreateRenaissanceType.php b/src/Form/Admin/Adherent/CreateRenaissanceType.php index 26a65260a5f..85c49d65a11 100644 --- a/src/Form/Admin/Adherent/CreateRenaissanceType.php +++ b/src/Form/Admin/Adherent/CreateRenaissanceType.php @@ -5,6 +5,7 @@ use App\Address\AddressInterface; use App\Form\AddressType; use App\Form\BirthdateType; +use App\Form\CountryType; use App\Form\GenderCivilityType; use App\Form\TelNumberType; use App\Renaissance\Membership\Admin\AdherentCreateCommand; @@ -13,7 +14,6 @@ use App\Renaissance\Membership\Admin\MembershipTypeEnum; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\NumberType; @@ -38,7 +38,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'disabled' => $fromCertifiedAdherent, ]) ->add('nationality', CountryType::class, [ - 'preferred_choices' => [AddressInterface::FRANCE], 'disabled' => $fromCertifiedAdherent, 'invalid_message' => 'common.nationality.invalid', ]) diff --git a/src/Form/AutocompleteAddressType.php b/src/Form/AutocompleteAddressType.php index ff9d39268a0..3c03ad2eeab 100644 --- a/src/Form/AutocompleteAddressType.php +++ b/src/Form/AutocompleteAddressType.php @@ -7,7 +7,6 @@ use App\FranceCities\FranceCities; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormEvent; @@ -33,7 +32,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('cityName', TextType::class) ->add('country', CountryType::class, [ 'placeholder' => '', - 'preferred_choices' => [AddressInterface::FRANCE], 'invalid_message' => 'common.country.invalid', ]) ->add('postalCode', TextType::class) diff --git a/src/Form/BesoinDEurope/DonationRequestType.php b/src/Form/BesoinDEurope/DonationRequestType.php index 9979773c876..2d6bf8fdaf6 100644 --- a/src/Form/BesoinDEurope/DonationRequestType.php +++ b/src/Form/BesoinDEurope/DonationRequestType.php @@ -2,12 +2,11 @@ namespace App\Form\BesoinDEurope; -use App\Address\AddressInterface; use App\Form\AutocompleteAddressType; +use App\Form\CountryType; use App\Form\GenderCivilityType; use App\Form\RequiredCheckboxType; use Symfony\Component\Form\AbstractType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -23,7 +22,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('civility', GenderCivilityType::class) ->add('firstName', TextType::class) ->add('lastName', TextType::class) - ->add('nationality', CountryType::class, ['preferred_choices' => [AddressInterface::FRANCE]]) + ->add('nationality', CountryType::class) ->add('address', AutocompleteAddressType::class, ['with_additional_address' => true]) ->add('autorisations', RequiredCheckboxType::class) ; diff --git a/src/Form/CountryType.php b/src/Form/CountryType.php new file mode 100644 index 00000000000..b2911530db4 --- /dev/null +++ b/src/Form/CountryType.php @@ -0,0 +1,40 @@ +setDefaults([ + 'choices' => $filteredCountries, + 'label' => 'Pays', + 'preferred_choices' => [AddressInterface::FRANCE], + ]); + } + + public function getParent(): string + { + return SfCountryType::class; + } +} diff --git a/src/Form/DonationRequestV2Type.php b/src/Form/DonationRequestV2Type.php index 5da3af294de..07526305b1b 100644 --- a/src/Form/DonationRequestV2Type.php +++ b/src/Form/DonationRequestV2Type.php @@ -2,11 +2,9 @@ namespace App\Form; -use App\Address\AddressInterface; use App\Donation\Request\DonationRequest; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -30,7 +28,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('firstName', TextType::class) ->add('lastName', TextType::class) ->add('emailAddress', EmailType::class) - ->add('nationality', CountryType::class, ['preferred_choices' => [AddressInterface::FRANCE]]) + ->add('nationality', CountryType::class) ->add('address', AutocompleteAddressType::class, ['with_additional_address' => true]) ->add('autorisations', RequiredCheckboxType::class) diff --git a/src/Form/MembershipRequestType.php b/src/Form/MembershipRequestType.php index 7497b680ef2..50cf67443e0 100644 --- a/src/Form/MembershipRequestType.php +++ b/src/Form/MembershipRequestType.php @@ -2,12 +2,10 @@ namespace App\Form; -use App\Address\AddressInterface; use App\Adhesion\Request\MembershipRequest; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -25,7 +23,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('civility', GenderCivilityType::class, ['disabled' => $fromCertifiedAdherent]) ->add('firstName', TextType::class, ['disabled' => $fromCertifiedAdherent]) ->add('lastName', TextType::class, ['disabled' => $fromCertifiedAdherent]) - ->add('nationality', CountryType::class, ['preferred_choices' => [AddressInterface::FRANCE], 'disabled' => $fromCertifiedAdherent]) + ->add('nationality', CountryType::class, ['disabled' => $fromCertifiedAdherent]) ->add('address', AutocompleteAddressType::class, ['with_additional_address' => true]) ->add('consentDataCollect', AcceptPersonalDataCollectType::class) ->add('utmSource', HiddenType::class) diff --git a/src/Form/NullableAddressType.php b/src/Form/NullableAddressType.php index 34a6e9e3a47..55c79c43ed9 100644 --- a/src/Form/NullableAddressType.php +++ b/src/Form/NullableAddressType.php @@ -5,7 +5,6 @@ use App\Address\NullableAddress; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; diff --git a/src/Form/Renaissance/Adherent/Contribution/InformationsType.php b/src/Form/Renaissance/Adherent/Contribution/InformationsType.php index 06ecf2d89f6..d61c44bcd1e 100644 --- a/src/Form/Renaissance/Adherent/Contribution/InformationsType.php +++ b/src/Form/Renaissance/Adherent/Contribution/InformationsType.php @@ -2,10 +2,9 @@ namespace App\Form\Renaissance\Adherent\Contribution; -use App\Address\AddressInterface; use App\Adherent\Contribution\ContributionRequest; +use App\Form\CountryType; use Symfony\Component\Form\AbstractType; -use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -16,9 +15,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('accountName', TextType::class) - ->add('accountCountry', CountryType::class, [ - 'preferred_choices' => [AddressInterface::FRANCE], - ]) + ->add('accountCountry', CountryType::class) ->add('iban', TextType::class) ; }