Set fields not fillable

This commit is contained in:
philipp lang 2024-02-18 18:58:28 +01:00
parent b194e77966
commit a96d879023
3 changed files with 28 additions and 2 deletions

View File

@ -42,7 +42,11 @@ class NamiField extends Field
$rules = [];
$fields = request()->route('form')->getFields();
$c = collect($fields)->filter(fn ($field) => $field['nami_type'] === null)->filter(fn ($field) => $field['type'] !== class_basename(static::class))->map(fn ($field) => Field::fromConfig($field)->getRegistrationRules());
$c = collect($fields)
->filter(fn ($field) => $field['for_members'] === true)
->filter(fn ($field) => $field['nami_type'] === null)
->filter(fn ($field) => $field['type'] !== class_basename(static::class))
->map(fn ($field) => Field::fromConfig($field)->getRegistrationRules());
foreach ($c as $field) {
foreach ($field as $ruleKey => $rule) {
@ -65,7 +69,10 @@ class NamiField extends Field
$fields = request()->route('form')->getFields();
$inputMembers = request($this->key);
$c = collect($fields)->filter(fn ($field) => $field['type'] !== class_basename(static::class))->map(fn ($field) => Field::fromConfig($field));
$c = collect($fields)
->filter(fn ($field) => $field['type'] !== class_basename(static::class))
->filter(fn ($field) => $field['for_members'] === true)
->map(fn ($field) => Field::fromConfig($field));
foreach ($c as $field) {
foreach ($field->getRegistrationRules() as $ruleKey => $rule) {

View File

@ -370,4 +370,22 @@ class FormRegisterActionTest extends TestCase
$this->postJson(route('form.register', ['form' => $form]), ['other' => [], 'members' => [['id' => '5505', 'other' => ['A', 'missing']]]])
->assertJsonValidationErrors(['members.0.other.1' => 'Der gewählte Wert für Andere für Mitglied Nr 5505 ist ungültig.']);
}
public function testItSetsDefaultValueForFieldsThatAreNotNamiFillable(): void
{
$this->login()->loginNami();
Member::factory()->defaults()->create(['mitgliedsnr' => '5505', 'firstname' => 'Paula']);
$form = Form::factory()
->sections([FormtemplateSectionRequest::new()->fields([
FormtemplateFieldRequest::type(NamiField::class)->key('members'),
FormtemplateFieldRequest::type(TextField::class)->key('other')->required(true)->namiType(null)->forMembers(false)->options(['A', 'B']),
FormtemplateFieldRequest::type(TextField::class)->key('firstname')->required(true)->namiType(NamiType::FIRSTNAME),
])])
->create();
$this->postJson(route('form.register', ['form' => $form]), ['firstname' => 'A', 'other' => 'B', 'members' => [['id' => '5505']]])
->assertOk();
$this->assertEquals('Paula', $form->participants->get(1)->data['firstname']);
$this->assertEquals('', $form->participants->get(1)->data['other']);
}
}

View File

@ -32,6 +32,7 @@ class FormtemplateFieldRequest extends RequestFactory
'columns' => ['mobile' => 2, 'tablet' => 4, 'desktop' => 6],
'default' => '',
'nami_type' => null,
'for_members' => true,
];
}