Fix transformation of data in gender filter

This commit is contained in:
Julie Lenaerts 2024-10-22 14:54:18 +02:00
parent 4d8bcc5a5a
commit 73b0dd6009
2 changed files with 16 additions and 13 deletions

View File

@ -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;

View File

@ -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'],
],
];
}