From 3364cce0029400d8ebbe376ee84857b2818c9ca7 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Mon, 30 Mar 2026 12:30:39 +0700 Subject: [PATCH] feat: include session details and attendance statistics in ShareAttendance controller and update view layout --- .../Controllers/ShareAttendanceController.php | 30 +- .../views/pages/share-attendance.blade.php | 398 +++++++----------- 2 files changed, 177 insertions(+), 251 deletions(-) diff --git a/app/Http/Controllers/ShareAttendanceController.php b/app/Http/Controllers/ShareAttendanceController.php index 2faa4e4..8653970 100644 --- a/app/Http/Controllers/ShareAttendanceController.php +++ b/app/Http/Controllers/ShareAttendanceController.php @@ -4,17 +4,19 @@ use App\Models\Assignment; use App\Models\Attendance; +use App\Models\ClassSession; use App\Models\Course; +use App\Models\Student; +use Carbon\Carbon; +use Illuminate\Contracts\View\View; use Illuminate\Http\Request; class ShareAttendanceController extends Controller { - public function show(Request $request, string $token) + public function show(Request $request, string $token): View { - app()->setLocale('id'); $course = Course::where('sharing_token', $token)->firstOrFail(); - // Define default date: if today has no attendance, use the most recent attendance date $latestAttendance = Attendance::whereHas('courseSchedule', function ($query) use ($course) { $query->where('course_id', $course->id); }) @@ -45,6 +47,26 @@ public function show(Request $request, string $token) ->latest() ->get(); - return view('pages.share-attendance', compact('course', 'attendances', 'date', 'availableDates', 'assignments')); + $sessionInfo = ClassSession::where('course_id', $course->id)->whereDate('date', $date)->first(); + $totalStudents = Student::whereHas('user', fn ($q) => $q->active())->count(); + $presentCount = $attendances->count(); + $attendancePercentage = $totalStudents > 0 ? round(($presentCount / $totalStudents) * 100) : 0; + + $formattedTime = $sessionInfo + ? Carbon::parse($sessionInfo->start_time)->format('H:i').' - '.Carbon::parse($sessionInfo->end_time)->format('H:i') + : '-'; + + return view('pages.share-attendance', compact( + 'course', + 'attendances', + 'date', + 'availableDates', + 'assignments', + 'sessionInfo', + 'totalStudents', + 'presentCount', + 'attendancePercentage', + 'formattedTime' + )); } } diff --git a/resources/views/pages/share-attendance.blade.php b/resources/views/pages/share-attendance.blade.php index 82aff73..7693bcb 100644 --- a/resources/views/pages/share-attendance.blade.php +++ b/resources/views/pages/share-attendance.blade.php @@ -5,277 +5,181 @@ Presensi {{ $course->name }} - {{ config('app.name', 'MyClass') }} - - - - - - @vite(['resources/css/app.css', 'resources/js/app.js']) - - -
+ -
- -
-
-
- {{ $course->code }} - SEMESTER - GENAP -
-

{{ $course->name }}

-

- - {{ $course->lecturer }} -

+ +
+
+ +
+ +
+
+
+ + {{ $course->code }} + + + Semester Genap + +
+

{{ $course->name }} +

+

+ + {{ $course->lecturer }} +

+
+
+ + +
+ + +
+
+

Daftar + Kehadiran

+ + {{ $attendances->count() }} Terdata +
-
- -
- -
- -
+
+
+ + + + + + + + + + @forelse($attendances as $attendance) + + + + + + @empty + + + + @endforelse + +
MahasiswaNIM + + Waktu Presensi
+
+
+ {{ $attendance->student->full_name }} +
+
+
+ + {{ $attendance->student->student_number }} + + +
+ + {{ $attendance->attended_at ? $attendance->attended_at->format('H:i') : '-' }} + WIB +
+
+
+
+ +
+

+ Tidak ada data kehadiran

+

Belum ada + data kehadiran untuk sesi ini.

+
+
- -
- -
-
-

Daftar Kehadiran -

- {{ $attendances->count() }} - Terdata -
+ +
-
-
- - - - - - - - - - @forelse($attendances as $attendance) - - - - - - @empty - - - - @endforelse - -
- Mahasiswa - Nomor Induk - Waktu Presensi
-
-
- {{ collect(explode(' ', $attendance->student->full_name))->map(fn($n) => substr($n, 0, 1))->take(2)->join('') }} -
-
- {{ $attendance->student->full_name }} -
-
-
- - {{ $attendance->student->student_number }} - - -
- - {{ $attendance->attended_at ? $attendance->attended_at->format('H:i') : '-' }} - WIB -
-
-

- Belum ada data kehadiran untuk sesi ini

-
+ +
+

+ Informasi Sesi {{ $sessionInfo ? 'Ke-' . $sessionInfo->session_number : '' }}

+ +
+
+ Tanggal + Sesi + {{ \Carbon\Carbon::parse($date)->translatedFormat('l, d F Y') }}
-
-
- -
- -
-

Informasi Sesi -

-
-
- Tanggal - Sesi +
+ +
+
{{ \Carbon\Carbon::parse($date)->translatedFormat('l, d F Y') }} -
-
-
-
- Partisipan - {{ $attendances->count() }} Orang -
-
- Jam - Kelas - 08:00 - 10:30 -
-
-
-
- - -
-

Tugas Terkait -

-
- @forelse($assignments as $assignment) -
-
-
-

- {{ $assignment->title }}

- TGS -
-
-
- - {{ $assignment->deadline ? $assignment->deadline->translatedFormat('d M') : 'N/A' }} -
-
- - {{ $assignment->assignment_submissions_count }} Kirim -
-
+ class="text-[10px] font-bold text-gray-400 dark:text-gray-500 uppercase tracking-widest mb-0.5">Partisipan + {{ $presentCount }}/{{ $totalStudents }} Orang + +
+
+
+ {{ $attendancePercentage }}%
- @empty -
- Tidak ada tugas terdaftar. -
- @endforelse +
+
+ Waktu + Kelas + + {{ $formattedTime }} + +
+