Fix LoadPeople for gender

This commit is contained in:
Julie Lenaerts 2024-10-22 17:51:21 +02:00
parent 086f391dc9
commit d04f9ae9ff

View File

@ -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)];
}
/**