feat: filter available class sessions to exclude those already assigned to materials or assignments while preserving the current record selection

This commit is contained in:
Yoga Pangestu 2026-03-30 14:23:50 +07:00
parent 7bebb127eb
commit f5b000cb7e
2 changed files with 15 additions and 2 deletions

View File

@ -4,6 +4,7 @@
use App\Enums\AssignmentType;
use App\Filament\Resources\Learning\Assignments\Actions\SelectAllStudentsAction;
use App\Models\Assignment;
use App\Models\ClassSession;
use App\Models\Course;
use App\Models\Student;
@ -57,13 +58,19 @@ public static function configure(Schema $schema): Schema
Select::make('class_session_id')
->label('Pertemuan Ke-')
->placeholder('Pilih Pertemuan (Opsional)')
->options(function (Get $get) {
->options(function (Get $get, ?Assignment $record) {
$courseId = $get('course_id');
if (! $courseId) {
return [];
}
return ClassSession::where('course_id', $courseId)
->where(function ($query) use ($record) {
$query->doesntHave('assignments');
if ($record && $record->class_session_id) {
$query->orWhere('id', $record->class_session_id);
}
})
->orderBy('session_number')
->pluck('session_number', 'id')
->map(fn ($num) => "Sesi Ke-$num")

View File

@ -73,13 +73,19 @@ public static function form(Schema $schema): Schema
Select::make('class_session_id')
->label('Pertemuan Ke-')
->placeholder('Pilih Pertemuan (Opsional)')
->options(function ($get) {
->options(function ($get, ?Material $record) {
$courseId = $get('course_id');
if (! $courseId) {
return [];
}
return ClassSession::where('course_id', $courseId)
->where(function ($query) use ($record) {
$query->doesntHave('materials');
if ($record && $record->class_session_id) {
$query->orWhere('id', $record->class_session_id);
}
})
->orderBy('session_number')
->pluck('session_number', 'id')
->map(fn ($num) => "Sesi Ke-$num")