sispace/app/Filament/Pages/Learning/StudyGroup/Actions/EditStudyGroupAction.php

50 lines
1.7 KiB
PHP

<?php
namespace App\Filament\Pages\Learning\StudyGroup\Actions;
use App\Filament\Actions\Cheerful\EditAction;
use App\Models\StudyGroup;
use Filament\Support\Enums\Width;
class EditStudyGroupAction extends EditAction
{
public static function getDefaultName(): ?string
{
return 'editStudyGroup';
}
protected function setUp(): void
{
parent::setUp();
$this
->label('Ubah')
->color('warning')
->icon('heroicon-o-pencil-square')
->link()
->tooltip('Ubah')
->record(fn (array $arguments): StudyGroup => StudyGroup::findOrFail($arguments['studyGroup']))
->modalHeading(fn (StudyGroup $record) => "Ubah {$record->name}")
->modalSubmitActionLabel('Simpan')
->modalCancelActionLabel('Batal')
->modalWidth(Width::ThreeExtraLarge)
->schema(fn ($livewire) => $livewire->studyGroupFormSchema())
->fillForm(function (StudyGroup $record): array {
return [
'name' => $record->name,
'leader_id' => $record->leader_id,
'course_id' => $record->courses->pluck('id')->toArray(),
'students' => $record->students->pluck('id')->toArray(),
];
})
->after(function (StudyGroup $record, array $data) {
if (isset($data['course_id'])) {
$record->courses()->sync($data['course_id']);
}
if (isset($data['students'])) {
$record->students()->sync($data['students']);
}
});
}
}