Add age nami field
This commit is contained in:
parent
86aaf55d21
commit
cb3cc087d6
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Form\Enums;
|
||||
|
||||
use App\Form\Models\Form;
|
||||
use App\Group\Enums\Level;
|
||||
use App\Member\Member;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
@ -19,6 +20,8 @@ enum NamiType: string
|
|||
case ZIP = 'PLZ';
|
||||
case LOCATION = 'Ort';
|
||||
case GENDER = 'Geschlecht';
|
||||
case AGE = 'Alter (zum Zeitpunkt der Anmeldung)';
|
||||
case AGEEVENT = 'Alter (zum Zeitpunkt der Veranstaltung)';
|
||||
|
||||
/**
|
||||
* @return array<int, array{name: string, id: string}>
|
||||
|
@ -30,7 +33,7 @@ enum NamiType: string
|
|||
->toArray();
|
||||
}
|
||||
|
||||
public function getMemberAttribute(Member $member): ?string
|
||||
public function getMemberAttribute(Member $member, Form $form): ?string
|
||||
{
|
||||
return match ($this) {
|
||||
static::FIRSTNAME => $member->firstname,
|
||||
|
@ -44,6 +47,8 @@ enum NamiType: string
|
|||
static::LOCATION => $member->location,
|
||||
static::NICKNAME => $member->nickname,
|
||||
static::GENDER => $member->gender?->name,
|
||||
static::AGE => $member->birthday->diffInYears(now()),
|
||||
static::AGEEVENT => $member->birthday->diffInYears($form->from),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ class NamiField extends Field
|
|||
foreach (FieldCollection::fromRequest($form, $memberData) as $field) {
|
||||
$data[$field->key] = $field->namiType === null
|
||||
? $field->value
|
||||
: $field->namiType->getMemberAttribute($member);
|
||||
: $field->namiType->getMemberAttribute($member, $form);
|
||||
}
|
||||
|
||||
$data[$this->key] = [];
|
||||
|
|
|
@ -494,6 +494,24 @@ class FormRegisterActionTest extends FormTestCase
|
|||
NamiType::GENDER,
|
||||
'',
|
||||
];
|
||||
|
||||
yield [
|
||||
['birthday' => '1991-10-02'],
|
||||
NamiType::AGE,
|
||||
'31'
|
||||
];
|
||||
|
||||
yield [
|
||||
['birthday' => '1991-05-04'],
|
||||
NamiType::AGE,
|
||||
'32'
|
||||
];
|
||||
|
||||
yield [
|
||||
['birthday' => '1991-08-15'],
|
||||
NamiType::AGEEVENT,
|
||||
'32'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -503,12 +521,14 @@ class FormRegisterActionTest extends FormTestCase
|
|||
*/
|
||||
public function testItSynchsMemberAttributes(array $memberAttributes, NamiType $type, mixed $participantValue, ?callable $factory = null): void
|
||||
{
|
||||
Carbon::setTestNow(Carbon::parse('2023-05-04'));
|
||||
$this->login()->loginNami();
|
||||
$this->createMember(['mitgliedsnr' => '5505', ...$memberAttributes], $factory);
|
||||
$form = Form::factory()->fields([
|
||||
$this->namiField('members'),
|
||||
$this->textField('other')->required(true)->namiType($type),
|
||||
])
|
||||
->from('2023-08-15')
|
||||
->create();
|
||||
|
||||
$this->register($form, ['other' => '::other::', 'members' => [['id' => '5505']]])->assertOk();
|
||||
|
|
Loading…
Reference in New Issue