schema([ Forms\Components\Section::make('Teacher Subject Assignment') ->schema([ Forms\Components\Select::make('teacher_id') ->label('Teacher') ->required() ->options(User::role('teacher')->pluck('name', 'id')->toArray()) ->searchable() ->native(false), Forms\Components\Select::make('subject_id') ->label('Subject') ->required() ->options(Subject::pluck('name', 'id')->toArray()) ->searchable() ->native(false), Forms\Components\Select::make('class_id') ->label('Class') ->required() ->options(ClassRoom::pluck('class_name', 'id')->toArray()) ->searchable() ->native(false), Forms\Components\TextInput::make('academic_year') ->label('Academic Year') ->required() ->placeholder('e.g. 2023/2024') ->maxLength(9), ]) ->columns(2), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('teacher.name') ->label('Teacher') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('subject.name') ->label('Subject') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('class.class_name') ->label('Class') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('academic_year') ->label('Academic Year') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('created_at') ->label('Assigned At') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ Tables\Filters\SelectFilter::make('teacher_id') ->label('Teacher') ->relationship('teacher', 'name') ->searchable() ->preload(), Tables\Filters\SelectFilter::make('subject_id') ->label('Subject') ->relationship('subject', 'name') ->searchable() ->preload(), Tables\Filters\SelectFilter::make('class_id') ->label('Class') ->relationship('class', 'class_name') ->searchable() ->preload(), ]) ->actions([ Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]) ->emptyStateActions([ Tables\Actions\CreateAction::make(), ]); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListTeacherSubjects::route('/'), 'create' => Pages\CreateTeacherSubject::route('/create'), 'edit' => Pages\EditTeacherSubject::route('/{record}/edit'), ]; } }