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:
parent
7bebb127eb
commit
f5b000cb7e
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
use App\Enums\AssignmentType;
|
use App\Enums\AssignmentType;
|
||||||
use App\Filament\Resources\Learning\Assignments\Actions\SelectAllStudentsAction;
|
use App\Filament\Resources\Learning\Assignments\Actions\SelectAllStudentsAction;
|
||||||
|
use App\Models\Assignment;
|
||||||
use App\Models\ClassSession;
|
use App\Models\ClassSession;
|
||||||
use App\Models\Course;
|
use App\Models\Course;
|
||||||
use App\Models\Student;
|
use App\Models\Student;
|
||||||
@ -57,13 +58,19 @@ public static function configure(Schema $schema): Schema
|
|||||||
Select::make('class_session_id')
|
Select::make('class_session_id')
|
||||||
->label('Pertemuan Ke-')
|
->label('Pertemuan Ke-')
|
||||||
->placeholder('Pilih Pertemuan (Opsional)')
|
->placeholder('Pilih Pertemuan (Opsional)')
|
||||||
->options(function (Get $get) {
|
->options(function (Get $get, ?Assignment $record) {
|
||||||
$courseId = $get('course_id');
|
$courseId = $get('course_id');
|
||||||
if (! $courseId) {
|
if (! $courseId) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ClassSession::where('course_id', $courseId)
|
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')
|
->orderBy('session_number')
|
||||||
->pluck('session_number', 'id')
|
->pluck('session_number', 'id')
|
||||||
->map(fn ($num) => "Sesi Ke-$num")
|
->map(fn ($num) => "Sesi Ke-$num")
|
||||||
|
|||||||
@ -73,13 +73,19 @@ public static function form(Schema $schema): Schema
|
|||||||
Select::make('class_session_id')
|
Select::make('class_session_id')
|
||||||
->label('Pertemuan Ke-')
|
->label('Pertemuan Ke-')
|
||||||
->placeholder('Pilih Pertemuan (Opsional)')
|
->placeholder('Pilih Pertemuan (Opsional)')
|
||||||
->options(function ($get) {
|
->options(function ($get, ?Material $record) {
|
||||||
$courseId = $get('course_id');
|
$courseId = $get('course_id');
|
||||||
if (! $courseId) {
|
if (! $courseId) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ClassSession::where('course_id', $courseId)
|
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')
|
->orderBy('session_number')
|
||||||
->pluck('session_number', 'id')
|
->pluck('session_number', 'id')
|
||||||
->map(fn ($num) => "Sesi Ke-$num")
|
->map(fn ($num) => "Sesi Ke-$num")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user