Add created_at column in participants table
continuous-integration/drone/push Build is failing Details

This commit is contained in:
philipp lang 2024-04-12 00:14:02 +02:00
parent a1b0f6496c
commit 58feb20545
5 changed files with 51 additions and 3 deletions

View File

@ -25,7 +25,7 @@ class FormUpdateMetaAction
'sorting.0' => 'required|string', 'sorting.0' => 'required|string',
'sorting.1' => 'required|string|in:asc,desc', 'sorting.1' => 'required|string|in:asc,desc',
'active_columns' => 'array', 'active_columns' => 'array',
'active_columns.*' => ['string', Rule::in($form->getFields()->pluck('key')->toArray())] 'active_columns.*' => ['string', Rule::in([...$form->getFields()->pluck('key')->toArray(), 'created_at'])]
]; ];
} }

View File

@ -136,7 +136,7 @@ class Form extends Model implements HasMedia
if (is_array(data_get($model->meta, 'active_columns'))) { if (is_array(data_get($model->meta, 'active_columns'))) {
$model->setAttribute('meta', [ $model->setAttribute('meta', [
...$model->meta, ...$model->meta,
'active_columns' => array_values(array_intersect($model->getFields()->pluck('key')->toArray(), $model->meta['active_columns'])), 'active_columns' => array_values(array_intersect([...$model->getFields()->pluck('key')->toArray(), 'created_at'], $model->meta['active_columns'])),
]); ]);
} }
}); });

View File

@ -19,7 +19,11 @@ class ParticipantResource extends JsonResource
*/ */
public function toArray($request) public function toArray($request)
{ {
return $this->getModel()->getFields()->present(); return [
...$this->getModel()->getFields()->present(),
'created_at' => $this->created_at->format('Y-m-d H:i:s'),
'created_at_display' => $this->created_at->format('d.m.Y'),
];
} }
/** /**
@ -39,6 +43,11 @@ class ParticipantResource extends JsonResource
'id' => $field->key, 'id' => $field->key,
'display_attribute' => $field->getDisplayAttribute(), 'display_attribute' => $field->getDisplayAttribute(),
]) ])
->push([
'name' => 'Registriert am',
'id' => 'created_at',
'display_attribute' => 'created_at_display'
])
]; ];
} }
} }

View File

@ -30,4 +30,19 @@ class FormUpdateMetaActionTest extends FormTestCase
$this->assertEquals(['textone', 'desc'], $form->meta['sorting']); $this->assertEquals(['textone', 'desc'], $form->meta['sorting']);
$this->assertEquals(['textone'], $form->meta['active_columns']); $this->assertEquals(['textone'], $form->meta['active_columns']);
} }
public function testItCanSetCreatedAtMeta(): void
{
$this->login()->loginNami()->withoutExceptionHandling();
$form = Form::factory()->create();
$this->patchJson(route('form.update-meta', ['form' => $form]), [
'active_columns' => ['created_at'],
'sorting' => ['created_at', 'desc'],
])->assertOk();
$form = Form::latest()->first();
$this->assertEquals(['created_at', 'desc'], $form->fresh()->meta['sorting']);
$this->assertEquals(['created_at'], $form->fresh()->meta['active_columns']);
}
} }

View File

@ -6,6 +6,7 @@ use App\Form\Fields\TextField;
use App\Form\Models\Form; use App\Form\Models\Form;
use App\Form\Models\Participant; use App\Form\Models\Participant;
use App\Group; use App\Group;
use Carbon\Carbon;
use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\DatabaseTransactions;
class ParticipantIndexActionTest extends FormTestCase class ParticipantIndexActionTest extends FormTestCase
@ -95,4 +96,27 @@ class ParticipantIndexActionTest extends FormTestCase
$this->callFilter('form.participant.index', [], ['form' => $form]) $this->callFilter('form.participant.index', [], ['form' => $form])
->assertJsonPath('data.0.mitglieder_display', '393, 394'); ->assertJsonPath('data.0.mitglieder_display', '393, 394');
} }
public function testItShowsRegisteredAtColumnAndAttribute(): void
{
Carbon::setTestNow(Carbon::parse('2023-03-05 06:00:00'));
$this->login()->loginNami()->withoutExceptionHandling();
$form = Form::factory()
->has(Participant::factory()->data(['vorname' => 'Max']))
->sections([
FormtemplateSectionRequest::new()->fields([
$this->textField('vorname')->name('Vorname'),
]),
])
->create();
$this->callFilter('form.participant.index', [], ['form' => $form])
->assertJsonPath('data.0.vorname', 'Max')
->assertJsonPath('data.0.vorname_display', 'Max')
->assertJsonPath('data.0.created_at', '2023-03-05 06:00:00')
->assertJsonPath('data.0.created_at_display', '05.03.2023')
->assertJsonPath('meta.columns.1.name', 'Registriert am')
->assertJsonPath('meta.columns.1.id', 'created_at')
->assertJsonPath('meta.columns.1.display_attribute', 'created_at_display');
}
} }