Skip to content

Commit

Permalink
Add Custom CountryType for list only countries without territories
Browse files Browse the repository at this point in the history
  • Loading branch information
ottaviano committed Feb 7, 2025
1 parent 46cc21d commit c5e8e2e
Show file tree
Hide file tree
Showing 17 changed files with 56 additions and 41 deletions.
2 changes: 1 addition & 1 deletion src/Admin/AbstractAdherentAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
3 changes: 1 addition & 2 deletions src/Admin/CommitteeAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -217,7 +217,6 @@ protected function configureFormFields(FormMapper $form): void
])
->add('postAddress.country', CountryType::class, [
'required' => false,
'label' => 'Pays',
])
->end()
->end()
Expand Down
4 changes: 1 addition & 3 deletions src/Admin/DonationAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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',
Expand Down
8 changes: 2 additions & 6 deletions src/Admin/DonatorAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -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, [
Expand Down
3 changes: 1 addition & 2 deletions src/Admin/EventAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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, [
Expand Down
4 changes: 2 additions & 2 deletions src/Admin/Procuration/AbstractProcurationAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion src/Entity/Adherent.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 0 additions & 3 deletions src/Form/AddressType.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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, [
Expand Down
2 changes: 0 additions & 2 deletions src/Form/AdherentProfileType.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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, [
Expand Down
3 changes: 1 addition & 2 deletions src/Form/Admin/Adherent/CreateRenaissanceType.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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',
])
Expand Down
2 changes: 0 additions & 2 deletions src/Form/AutocompleteAddressType.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down
5 changes: 2 additions & 3 deletions src/Form/BesoinDEurope/DonationRequestType.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
;
Expand Down
40 changes: 40 additions & 0 deletions src/Form/CountryType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php

namespace App\Form;

use App\Address\AddressInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CountryType as SfCountryType;
use Symfony\Component\Intl\Countries;
use Symfony\Component\OptionsResolver\OptionsResolver;

class CountryType extends AbstractType
{
private const EXCLUDED_TERRITORIES = [
'GP', 'MQ', 'GF', 'RE', 'PM', 'YT', 'BL', 'MF', 'WF', 'PF', 'NC', 'TF', // Territoires français
'AI', 'BM', 'IO', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'VG', // Territoires britanniques
'AS', 'GU', 'MP', 'PR', 'UM', 'VI', // Territoires américains
'AW', 'CW', 'SX', 'BQ', // Territoires néerlandais
'CC', 'CX', 'HM', 'NF', // Territoires australiens
'CK', 'NU', 'TK', // Autres territoires
];

public function configureOptions(OptionsResolver $resolver): void
{
$countries = Countries::getNames();
$filteredCountries = array_filter($countries, function ($code) {
return !\in_array($code, self::EXCLUDED_TERRITORIES, true);
}, \ARRAY_FILTER_USE_KEY);

$resolver->setDefaults([
'choices' => $filteredCountries,
'label' => 'Pays',
'preferred_choices' => [AddressInterface::FRANCE],
]);
}

public function getParent(): string
{
return SfCountryType::class;
}
}
4 changes: 1 addition & 3 deletions src/Form/DonationRequestV2Type.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down
4 changes: 1 addition & 3 deletions src/Form/MembershipRequestType.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down
1 change: 0 additions & 1 deletion src/Form/NullableAddressType.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
;
}
Expand Down

0 comments on commit c5e8e2e

Please sign in to comment.