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 DataTransformerInterface
{ {
// inject gender repository and find the active genders so that you can pass them to the ChoiceType (ordered by ordering) // 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 public function addRole(): ?string
{ {
@ -79,17 +80,19 @@ class GenderFilter implements
public function transformData(?array $before): array public function transformData(?array $before): array
{ {
$transformedData = $before; $transformedData['accepted_genders_entity'] = $before['accepted_genders_entity'] ?? [];
if (array_key_exists('accepted_genders', $before)) { if (array_key_exists('accepted_genders', $before)) {
$genderMapping = [ foreach ($before['accepted_genders'] as $genderBefore) {
'woman' => 2, foreach ($this->genderRepository->findByGenderTranslation(
'man' => 1, match ($genderBefore) {
'both' => 3, 'both' => 'neutral',
'unknown' => null, default => $genderBefore,
]; }
) as $gender) {
$transformedData['accepted_genders_entity'] = array_map(fn ($gender) => $genderMapping[$gender] ?? null, $before['accepted_genders']); $transformedData['accepted_genders_entity'][] = $gender;
}
}
} }
return $transformedData; return $transformedData;

View File

@ -42,13 +42,13 @@ final class GenderFilterTest extends AbstractFilterTest
{ {
return [ return [
[ [
'accepted_genders' => [GenderEnum::FEMALE], 'accepted_genders' => ['man'],
], ],
[ [
'accepted_genders' => [GenderEnum::MALE], 'accepted_genders' => ['woman'],
], ],
[ [
'accepted_genders' => [GenderEnum::MALE, 'both'], 'accepted_genders' => ['man', 'both'],
], ],
]; ];
} }