diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/GenderFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/GenderFilter.php index 9f15b5642..18faed6d2 100644 --- a/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/GenderFilter.php +++ b/src/Bundle/ChillPersonBundle/Export/Filter/PersonFilters/GenderFilter.php @@ -30,7 +30,8 @@ class GenderFilter implements DataTransformerInterface { // inject gender repository and find the active genders so that you can pass them to the ChoiceType (ordered by ordering) - public function __construct(private readonly TranslatorInterface $translator, private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly GenderRepository $genderRepository) {} + public function __construct(private readonly TranslatorInterface $translator, private readonly TranslatableStringHelperInterface $translatableStringHelper, + private readonly GenderRepository $genderRepository) {} public function addRole(): ?string { @@ -79,17 +80,19 @@ class GenderFilter implements public function transformData(?array $before): array { - $transformedData = $before; + $transformedData['accepted_genders_entity'] = $before['accepted_genders_entity'] ?? []; if (array_key_exists('accepted_genders', $before)) { - $genderMapping = [ - 'woman' => 2, - 'man' => 1, - 'both' => 3, - 'unknown' => null, - ]; - - $transformedData['accepted_genders_entity'] = array_map(fn ($gender) => $genderMapping[$gender] ?? null, $before['accepted_genders']); + foreach ($before['accepted_genders'] as $genderBefore) { + foreach ($this->genderRepository->findByGenderTranslation( + match ($genderBefore) { + 'both' => 'neutral', + default => $genderBefore, + } + ) as $gender) { + $transformedData['accepted_genders_entity'][] = $gender; + } + } } return $transformedData; diff --git a/src/Bundle/ChillPersonBundle/Tests/Export/Filter/PersonFilters/GenderFilterTest.php b/src/Bundle/ChillPersonBundle/Tests/Export/Filter/PersonFilters/GenderFilterTest.php index d6c8b274a..b3e7a04db 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Export/Filter/PersonFilters/GenderFilterTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Export/Filter/PersonFilters/GenderFilterTest.php @@ -42,13 +42,13 @@ final class GenderFilterTest extends AbstractFilterTest { return [ [ - 'accepted_genders' => [GenderEnum::FEMALE], + 'accepted_genders' => ['man'], ], [ - 'accepted_genders' => [GenderEnum::MALE], + 'accepted_genders' => ['woman'], ], [ - 'accepted_genders' => [GenderEnum::MALE, 'both'], + 'accepted_genders' => ['man', 'both'], ], ]; }