diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php index 8799847..649dba1 100644 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php +++ b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php @@ -17,7 +17,7 @@ protected function setUp(): void { parent::setUp(); - $this->label('Bagikan') + $this->label('Bagikan Presensi') ->icon('heroicon-o-share') ->color(Color::Teal) ->link() diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAssignmentDetailAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAssignmentDetailAction.php deleted file mode 100644 index 208460d..0000000 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAssignmentDetailAction.php +++ /dev/null @@ -1,53 +0,0 @@ -modalHeading('Detail Tugas') - ->modalSubmitAction(false) - ->modalCancelActionLabel('Tutup') - ->modalWidth(Width::FourExtraLarge) - ->infolist(function (array $arguments) { - $record = Assignment::find($arguments['record'], ['*']); - if (! $record) { - return []; - } - - $entries = [ - TextEntry::make('description') - ->label('Deskripsi') - ->html() - ->columnSpanFull(), - TextEntry::make('due_date') - ->label('Batas Waktu') - ->dateTime('l, d F Y, H:i') - ->columnSpanFull(), - ]; - - $mediaEntries = $record->getMedia('assignments')->map(function ($item, $index) { - return PdfViewerEntry::make('pdf_'.$index) - ->label('Lampiran PDF') - ->fileUrl($item->getUrl()) - ->columnSpanFull(); - })->toArray(); - - return array_merge($entries, $mediaEntries); - }); - } -} diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAssignmentsAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAssignmentsAction.php deleted file mode 100644 index 5af6757..0000000 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAssignmentsAction.php +++ /dev/null @@ -1,41 +0,0 @@ -label('Tugas') - ->color(Color::Sky) - ->icon('heroicon-o-clipboard-document-list') - ->link() - ->modalHeading('Tugas Sesi') - ->modalSubmitAction(false) - ->modalCancelActionLabel('Tutup') - ->modalWidth(Width::TwoExtraLarge) - ->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.assignments-modal', [ - 'assignments' => ClassSession::find($arguments['session'] ?? null, ['*'])?->assignments() - ->latest() - ->get() - ->map(fn ($a) => (object) [ - 'id' => $a->id, - 'title' => $a->title, - 'type_label' => $a->type?->getLabel() ?? 'Tugas', - 'due_date_formatted' => $a->due_date?->translatedFormat('d F Y, H:i') ?? '-', - ]) ?? collect(), - ])); - } -} diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAttendanceAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAttendanceAction.php deleted file mode 100644 index 139678b..0000000 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewAttendanceAction.php +++ /dev/null @@ -1,32 +0,0 @@ -label('Presensi') - ->color('success') - ->icon('heroicon-o-check-circle') - ->link() - ->modalHeading('Daftar Presensi') - ->modalSubmitAction(false) - ->modalCancelActionLabel('Tutup') - ->modalWidth(Width::TwoExtraLarge) - ->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.attendance-modal', [ - 'attendances' => ClassSession::find($arguments['session'] ?? null, ['*'])?->attendances()->with('student')->latest('attended_at')->get() ?? collect(), - ])); - } -} diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewMaterialDetailAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ViewMaterialDetailAction.php deleted file mode 100644 index bd05a00..0000000 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewMaterialDetailAction.php +++ /dev/null @@ -1,29 +0,0 @@ -record(fn (array $arguments) => Material::find($arguments['record'] ?? null, ['*'])) - ->modalHeading('Detail Materi') - ->modalSubmitAction(false) - ->modalCancelActionLabel('Tutup') - ->modalWidth(Width::FourExtraLarge) - ->modalContent(fn (?Material $record) => $record ? view('filament.resources.learning.class-sessions.material-detail-modal', [ - 'record' => $record, - ]) : null); - } -} diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewMaterialsAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ViewMaterialsAction.php deleted file mode 100644 index 85039c6..0000000 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/ViewMaterialsAction.php +++ /dev/null @@ -1,40 +0,0 @@ -label('Materi') - ->color(Color::Purple) - ->icon('heroicon-o-book-open') - ->link() - ->modalHeading('Materi Sesi') - ->modalSubmitAction(false) - ->modalCancelActionLabel('Tutup') - ->modalWidth(Width::TwoExtraLarge) - ->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.materials-modal', [ - 'materials' => ClassSession::find($arguments['session'] ?? null, ['*'])?->materials() - ->latest() - ->get() - ->map(fn ($m) => (object) [ - 'id' => $m->id, - 'title' => $m->title, - 'created_at_formatted' => $m->created_at?->translatedFormat('d F Y') ?? '-', - ]) ?? collect(), - ])); - } -} diff --git a/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php b/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php index edbe370..2bc9803 100644 --- a/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php +++ b/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php @@ -9,13 +9,10 @@ use App\Filament\Resources\Learning\ClassSessions\Actions\GenerateSessionsAction; use App\Filament\Resources\Learning\ClassSessions\Actions\ShareAssignmentAction; use App\Filament\Resources\Learning\ClassSessions\Actions\ShareAttendanceAction; -use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAssignmentDetailAction; -use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAssignmentsAction; -use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAttendanceAction; -use App\Filament\Resources\Learning\ClassSessions\Actions\ViewMaterialDetailAction; -use App\Filament\Resources\Learning\ClassSessions\Actions\ViewMaterialsAction; use App\Filament\Resources\Learning\ClassSessions\ClassSessionResource; +use App\Models\ClassSession; use App\Models\Course; +use App\Models\Material; use App\Models\Student; use Filament\Actions\Action; use Filament\Actions\Concerns\InteractsWithActions; @@ -28,6 +25,7 @@ use Filament\Resources\Pages\Page; use Filament\Schemas\Components\Grid; use Filament\Schemas\Schema; +use Filament\Support\Enums\Width; use Illuminate\Support\Collection; use Livewire\Attributes\Computed; @@ -152,7 +150,6 @@ protected function getActions(): array $this->editSessionAction(), $this->deleteSessionAction(), $this->viewMaterialDetailAction(), - $this->viewAssignmentDetailAction(), ]; } @@ -168,17 +165,65 @@ public function shareAssignmentAction(): Action public function viewAttendanceAction(): Action { - return ViewAttendanceAction::make(); + return Action::make('viewAttendance') + ->label('Presensi') + ->color('success') + ->icon('heroicon-o-check-circle') + ->link() + ->modalHeading('Daftar Presensi') + ->modalSubmitAction(false) + ->modalCancelActionLabel('Tutup') + ->modalWidth(Width::TwoExtraLarge) + ->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.attendance-modal', [ + 'attendances' => ClassSession::find($arguments['session'] ?? null, ['*'])?->attendances()->with('student')->latest('attended_at')->get() ?? collect(), + ])); } public function viewMaterialsAction(): Action { - return ViewMaterialsAction::make(); + return Action::make('viewMaterials') + ->label('Materi') + ->color('purple') + ->icon('heroicon-o-book-open') + ->link() + ->modalHeading('Materi Sesi') + ->modalSubmitAction(false) + ->modalCancelActionLabel('Tutup') + ->modalWidth(Width::TwoExtraLarge) + ->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.materials-modal', [ + 'materials' => ClassSession::find($arguments['session'] ?? null, ['*'])?->materials() + ->latest() + ->get() + ->map(fn ($m) => (object) [ + 'id' => $m->id, + 'title' => $m->title, + 'created_at_formatted' => $m->created_at?->translatedFormat('d F Y') ?? '-', + ]) ?? collect(), + ])); } public function viewAssignmentsAction(): Action { - return ViewAssignmentsAction::make(); + return Action::make('viewAssignments') + ->label('Tugas') + ->color('sky') + ->icon('heroicon-o-clipboard-document-list') + ->link() + ->modalHeading('Tugas Sesi') + ->modalSubmitAction(false) + ->modalCancelActionLabel('Tutup') + ->modalWidth(Width::TwoExtraLarge) + ->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.assignments-modal', [ + 'assignments' => ClassSession::find($arguments['session'] ?? null, ['*'])?->assignments() + ->latest() + ->get() + ->map(fn ($a) => (object) [ + 'id' => $a->id, + 'title' => $a->title, + 'type_label' => $a->type?->getLabel() ?? 'Tugas', + 'due_date_formatted' => $a->due_date?->translatedFormat('d F Y, H:i') ?? '-', + ]) ?? collect(), + ])); } public function editSessionAction(): Action @@ -193,11 +238,14 @@ public function deleteSessionAction(): Action public function viewMaterialDetailAction(): Action { - return ViewMaterialDetailAction::make(); - } - - public function viewAssignmentDetailAction(): Action - { - return ViewAssignmentDetailAction::make(); + return Action::make('viewMaterialDetail') + ->record(fn (array $arguments) => Material::find($arguments['record'] ?? null, ['*'])) + ->modalHeading('Detail Materi') + ->modalSubmitAction(false) + ->modalCancelActionLabel('Tutup') + ->modalWidth(Width::FourExtraLarge) + ->modalContent(fn (?Material $record) => $record ? view('filament.resources.learning.class-sessions.material-detail-modal', [ + 'record' => $record, + ]) : null); } } diff --git a/resources/views/filament/resources/learning/class-sessions/show.blade.php b/resources/views/filament/resources/learning/class-sessions/show.blade.php index 9c22b92..659d2b6 100644 --- a/resources/views/filament/resources/learning/class-sessions/show.blade.php +++ b/resources/views/filament/resources/learning/class-sessions/show.blade.php @@ -56,9 +56,6 @@