components([ Section::make() ->schema([ Select::make('current_semester') ->label('Semester Sekarang') ->placeholder('Pilih Semester') ->options([ 1 => 'Semester 1', 2 => 'Semester 2', 3 => 'Semester 3', 4 => 'Semester 4', 5 => 'Semester 5', 6 => 'Semester 6', 7 => 'Semester 7', 8 => 'Semester 8', ]) ->native(false) ->required() ->helperText('Tentukan semester yang sedang aktif saat ini. Semester ini akan digunakan untuk menyaring data yang relevan.'), Select::make('kosma_id') ->label('Kosma') ->placeholder('Pilih Mahasiswa sebagai Kosma') ->options(Student::query()->pluck('full_name', 'id')) ->searchable() ->preload() ->native(false) ->helperText('Pilih mahasiswa yang bertanggung jawab sebagai Kosma (Ketua Kelas).'), ]) ->columns(2) ->columnSpanFull(), ]); } public function getSavedNotification(): ?Notification { return SystemNotification::update(); } protected function afterSave(): void { $settings = app(GeneralSettings::class); $kosmaId = $settings->kosma_id; User::role('Kosma')->get()->each(fn (User $user) => $user->removeRole('Kosma')); if ($kosmaId) { $student = Student::find($kosmaId); if ($student?->user) { $student->user->assignRole(RoleEnum::Kosma); } } } }