diff --git a/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php b/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php index 865913b24..5cb8c1601 100644 --- a/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php +++ b/src/Bundle/ChillPersonBundle/DataFixtures/ORM/LoadPeople.php @@ -15,12 +15,14 @@ use Chill\MainBundle\DataFixtures\ORM\LoadPostalCodes; use Chill\MainBundle\Entity\Address; use Chill\MainBundle\Entity\Center; use Chill\MainBundle\Entity\Country; +use Chill\MainBundle\Entity\Gender; use Chill\MainBundle\Entity\GenderEnum; use Chill\MainBundle\Entity\PostalCode; use Chill\MainBundle\Entity\Scope; use Chill\MainBundle\Entity\User; use Chill\MainBundle\Repository\CenterRepository; use Chill\MainBundle\Repository\CountryRepository; +use Chill\MainBundle\Repository\GenderRepository; use Chill\MainBundle\Repository\ScopeRepository; use Chill\MainBundle\Repository\UserRepository; use Chill\PersonBundle\Entity\AccompanyingPeriod; @@ -78,11 +80,13 @@ class LoadPeople extends AbstractFixture implements ContainerAwareInterface, Ord */ protected array $cacheUsers = []; + protected array $cacheGenders = []; + protected Generator $faker; protected NativeLoader $loader; - private array $genders = [GenderEnum::MALE, GenderEnum::FEMALE, GenderEnum::NEUTRAL]; + // private array $genders = [GenderEnum::MALE, GenderEnum::FEMALE, GenderEnum::NEUTRAL]; private array $peoples = [ [ @@ -229,6 +233,7 @@ class LoadPeople extends AbstractFixture implements ContainerAwareInterface, Ord protected MaritalStatusRepository $maritalStatusRepository, protected ScopeRepository $scopeRepository, protected UserRepository $userRepository, + protected GenderRepository $genderRepository, ) { $this->faker = Factory::create('fr_FR'); $this->faker->addProvider($this); @@ -273,9 +278,17 @@ class LoadPeople extends AbstractFixture implements ContainerAwareInterface, Ord /** * @internal This method is public and called by faker as a custom generator */ - public function getRandomGender(): string + public function getRandomGender(int $nullPercentage = 50): ?Gender { - return $this->genders[array_rand($this->genders)]->value; + if (0 === \count($this->cacheGenders)) { + $this->cacheGenders = $this->genderRepository->findAll(); + } + + if (\random_int(0, 100) > $nullPercentage) { + return null; + } + + return $this->cacheGenders[array_rand($this->cacheGenders)]; } /**