From 35190d7614955f993746340332eedfd7ea1964f2 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 12 Mar 2026 08:13:25 +0700 Subject: [PATCH] feat: Filter assignments and materials by current semester using GeneralSettings. --- .../Learning/Assignments/AssignmentResource.php | 10 ++++++++++ .../Learning/Assignments/Pages/ListAssignments.php | 4 ++++ .../Resources/Learning/Materials/MaterialResource.php | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/app/Filament/Resources/Learning/Assignments/AssignmentResource.php b/app/Filament/Resources/Learning/Assignments/AssignmentResource.php index f2433b1..19d2379 100644 --- a/app/Filament/Resources/Learning/Assignments/AssignmentResource.php +++ b/app/Filament/Resources/Learning/Assignments/AssignmentResource.php @@ -9,10 +9,12 @@ use App\Filament\Resources\Learning\Assignments\Pages\SubmitAssignmentPage; use App\Filament\Resources\Learning\Assignments\Schemas\AssignmentForm; use App\Models\Assignment; +use App\Settings\GeneralSettings; use BackedEnum; use Filament\Resources\Resource; use Filament\Schemas\Schema; use Filament\Support\Icons\Heroicon; +use Illuminate\Database\Eloquent\Builder; use UnitEnum; class AssignmentResource extends Resource @@ -36,6 +38,14 @@ public static function form(Schema $schema): Schema return AssignmentForm::configure($schema); } + public static function getEloquentQuery(): Builder + { + return parent::getEloquentQuery() + ->whereHas('course', function (Builder $query) { + $query->where('semester', app(GeneralSettings::class)->current_semester); + }); + } + public static function getPages(): array { return [ diff --git a/app/Filament/Resources/Learning/Assignments/Pages/ListAssignments.php b/app/Filament/Resources/Learning/Assignments/Pages/ListAssignments.php index 1a0d7b2..7f7200f 100644 --- a/app/Filament/Resources/Learning/Assignments/Pages/ListAssignments.php +++ b/app/Filament/Resources/Learning/Assignments/Pages/ListAssignments.php @@ -13,6 +13,7 @@ use App\Models\AssignmentPin; use App\Models\AssignmentTarget; use App\Models\StudyGroup; +use App\Settings\GeneralSettings; use Filament\Actions\Action; use Filament\Resources\Pages\Page; use Filament\Schemas\Schema; @@ -44,6 +45,9 @@ public function assignments(): Collection $q->where('student_id', $studentProfile->id) ->orWhereHas('studyGroup', fn ($sq) => $sq->whereHas('students', fn ($ssq) => $ssq->whereKey($studentProfile->id))); }, 'studyGroups.students']) + ->whereHas('course', function ($q) { + $q->where('semester', app(GeneralSettings::class)->current_semester); + }) ->where(function ($query) use ($studentProfile) { $query->whereHas('students', fn ($q) => $q->whereKey($studentProfile->id)) ->orWhereHas('studyGroups', fn ($q) => $q->whereHas('students', fn ($sq) => $sq->whereKey($studentProfile->id))); diff --git a/app/Filament/Resources/Learning/Materials/MaterialResource.php b/app/Filament/Resources/Learning/Materials/MaterialResource.php index a52852e..48e4644 100644 --- a/app/Filament/Resources/Learning/Materials/MaterialResource.php +++ b/app/Filament/Resources/Learning/Materials/MaterialResource.php @@ -258,6 +258,14 @@ public static function getPages(): array ]; } + public static function getEloquentQuery(): Builder + { + return parent::getEloquentQuery() + ->whereHas('course', function (Builder $query) { + $query->where('semester', app(GeneralSettings::class)->current_semester); + }); + } + public static function getRecordRouteBindingEloquentQuery(): Builder { return parent::getRecordRouteBindingEloquentQuery()