diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php new file mode 100644 index 0000000..360a071 --- /dev/null +++ b/app/Filament/Resources/Learning/ClassSessions/Actions/ShareAttendanceAction.php @@ -0,0 +1,52 @@ +label('Bagikan') + ->icon('heroicon-o-share') + ->color('info') + ->link() + ->action(function (array $arguments, $livewire) { + $course = $livewire->course; + if (empty($course->sharing_token)) { + $course->update(['sharing_token' => Str::random(32)]); + } + + $session = ClassSession::find($arguments['session'] ?? null); + $date = $session ? $session->date->toDateString() : null; + + $url = route('share.attendance', ['token' => $course->sharing_token, 'date' => $date]); + + $text = "*Info Kelas {$course->name}*\nSesi ke-".($session->session_number ?? '-').' ('.($session->date->translatedFormat('d M Y') ?? '').")\n\nSilakan cek detail/rekap kehadiran melalui tautan ini:\n\n{$url}"; + + $escapedText = json_encode($text); + + $livewire->js( + << {}); +} +window.open(url, '_blank'); +JS + ); + }); + } +} diff --git a/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php b/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php index cd6a0fb..9df7b6f 100644 --- a/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php +++ b/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php @@ -7,6 +7,7 @@ use App\Filament\Resources\Learning\ClassSessions\Actions\DeleteSessionAction; use App\Filament\Resources\Learning\ClassSessions\Actions\EditSessionAction; use App\Filament\Resources\Learning\ClassSessions\Actions\GenerateSessionsAction; +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; @@ -142,6 +143,7 @@ protected function getHeaderActions(): array protected function getActions(): array { return [ + $this->shareAttendanceAction(), $this->viewAttendanceAction(), $this->viewMaterialsAction(), $this->viewAssignmentsAction(), @@ -152,6 +154,11 @@ protected function getActions(): array ]; } + public function shareAttendanceAction(): Action + { + return ShareAttendanceAction::make(); + } + public function viewAttendanceAction(): Action { return ViewAttendanceAction::make(); 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 469edef..0cfd516 100644 --- a/resources/views/filament/resources/learning/class-sessions/show.blade.php +++ b/resources/views/filament/resources/learning/class-sessions/show.blade.php @@ -54,6 +54,7 @@
+ {{ ($this->shareAttendanceAction)(['session' => $session->id]) }} {{ ($this->viewAttendanceAction)(['session' => $session->id]) }} {{ ($this->viewMaterialsAction)(['session' => $session->id]) }} {{ ($this->viewAssignmentsAction)(['session' => $session->id]) }}