diff --git a/app/Http/Controllers/Guru/MapelController.php b/app/Http/Controllers/Guru/MapelController.php index f71cb90..1f607e2 100644 --- a/app/Http/Controllers/Guru/MapelController.php +++ b/app/Http/Controllers/Guru/MapelController.php @@ -97,4 +97,105 @@ public function storeTugas(Request $request) return redirect()->route('guru.mapel.index') ->with('success', 'Tugas berhasil dibuat!'); } + + /** + * History semua materi yang dibuat guru ini + */ + public function historyMateri() + { + $guru = Auth::guard('guru')->user(); + + // Ambil id_mengajar milik guru ini + $idMengajars = Mengajar::where('id_guru', $guru->id_guru) + ->pluck('id_mengajar'); + + $materiList = Materi::with(['mengajar.mapel', 'mengajar.kelas']) + ->whereIn('id_mengajar', $idMengajars) + ->orderBy('created_at', 'desc') + ->paginate(15); + + return view('guru.materi.history', compact('materiList')); + } + + /** + * Hapus materi + */ + public function destroyMateri($id) + { + $guru = Auth::guard('guru')->user(); + + $idMengajars = Mengajar::where('id_guru', $guru->id_guru)->pluck('id_mengajar'); + + $materi = Materi::whereIn('id_mengajar', $idMengajars) + ->where('id_materi', $id) + ->firstOrFail(); + + // Hapus file jika ada + if ($materi->lampiran_materi && \Storage::disk('public')->exists($materi->lampiran_materi)) { + \Storage::disk('public')->delete($materi->lampiran_materi); + } + + $materi->delete(); + + return redirect()->route('guru.materi.history') + ->with('success', 'Materi berhasil dihapus.'); + } + + /** + * History semua tugas yang dibuat guru ini + */ + public function historyTugas() + { + $guru = Auth::guard('guru')->user(); + + $idMengajars = Mengajar::where('id_guru', $guru->id_guru) + ->pluck('id_mengajar'); + + $tugasList = Tugas::with(['mengajar.mapel', 'mengajar.kelas', 'pengumpulanTugas']) + ->whereIn('id_mengajar', $idMengajars) + ->orderBy('created_at', 'desc') + ->paginate(15); + + return view('guru.tugas.history', compact('tugasList')); + } + + /** + * Detail tugas + daftar pengumpulan siswa + */ + public function detailTugas($id) + { + $guru = Auth::guard('guru')->user(); + + $idMengajars = Mengajar::where('id_guru', $guru->id_guru)->pluck('id_mengajar'); + + $tugas = Tugas::with([ + 'mengajar.mapel', + 'mengajar.kelas', + 'pengumpulanTugas.siswa', + ]) + ->whereIn('id_mengajar', $idMengajars) + ->where('id_tugas', $id) + ->firstOrFail(); + + return view('guru.tugas.detail', compact('tugas')); + } + + /** + * Hapus tugas + */ + public function destroyTugas($id) + { + $guru = Auth::guard('guru')->user(); + + $idMengajars = Mengajar::where('id_guru', $guru->id_guru)->pluck('id_mengajar'); + + $tugas = Tugas::whereIn('id_mengajar', $idMengajars) + ->where('id_tugas', $id) + ->firstOrFail(); + + $tugas->delete(); + + return redirect()->route('guru.tugas.history') + ->with('success', 'Tugas berhasil dihapus.'); + } } \ No newline at end of file diff --git a/app/Models/PengumpulanTugas.php b/app/Models/PengumpulanTugas.php index dcb3703..134d05c 100644 --- a/app/Models/PengumpulanTugas.php +++ b/app/Models/PengumpulanTugas.php @@ -15,7 +15,7 @@ class PengumpulanTugas extends Model protected $fillable = [ 'id_tugas', - 'is_siswa', + 'id_siswa', 'lampiran_tugas', 'tanggal_submit', 'exp', diff --git a/resources/views/guru/mapel/index.blade.php b/resources/views/guru/mapel/index.blade.php index c12436c..5e871d6 100644 --- a/resources/views/guru/mapel/index.blade.php +++ b/resources/views/guru/mapel/index.blade.php @@ -121,7 +121,17 @@ .file-preview.show { display: flex; } -.alert-success-custom { +.btn-history-materi { + background: #8b5cf6; + color: white; +} +.btn-history-materi:hover { background: #7c3aed; color: white; } + +.btn-history-tugas { + background: #14b8a6; + color: white; +} +.btn-history-tugas:hover { background: #0d9488; color: white; } background: #dcfce7; color: #166534; border-radius: 10px; @@ -192,21 +202,33 @@ {{-- AKSI --}}
+ Semua materi yang pernah Anda upload. +
+ +@if(session('success')) +Belum ada materi yang diupload.
+| No | +Judul Materi | +Mata Pelajaran | +Kelas | +Tanggal Upload | +File | +Aksi | +
|---|---|---|---|---|---|---|
| {{ $materiList->firstItem() + $i }} | +
+ {{ $materi->judul_materi }}
+ @if($materi->deskripsi)
+
+ {{ Str::limit($materi->deskripsi, 60) }}
+
+ @endif
+ |
+ + + {{ optional(optional($materi->mengajar)->mapel)->nama_mapel ?? '-' }} + + | ++ + {{ optional(optional($materi->mengajar)->kelas)->tingkat }} + {{ optional(optional($materi->mengajar)->kelas)->nama_kelas ?? '-' }} + + | ++ {{ \Carbon\Carbon::parse($materi->tanggal_upload)->format('d M Y, H:i') }} + | ++ @if($materi->lampiran_materi) + @php + $ext = strtolower(pathinfo($materi->lampiran_materi, PATHINFO_EXTENSION)); + $icon = match(true) { + in_array($ext, ['pdf']) => '📄', + in_array($ext, ['doc','docx']) => '📝', + in_array($ext, ['ppt','pptx']) => '📊', + in_array($ext, ['jpg','jpeg','png']) => '🖼️', + default => '📎', + }; + @endphp + + {{ $icon }} Unduh + + @else + Tidak ada file + @endif + | ++ + | +
{{ $jumlahKumpul }}
+Tepat Waktu
+{{ $jumlahLambat }}
+Terlambat
+{{ $totalKumpul }}
+Total Pengumpulan
+📥 Daftar Pengumpulan Siswa
+ + @if($tugas->pengumpulanTugas->isEmpty()) +Belum ada siswa yang mengumpulkan tugas ini.
+| No | +Nama Siswa | +NISN | +Waktu Submit | +Status | +EXP | +File | +
|---|---|---|---|---|---|---|
| {{ $i + 1 }} | ++ {{ optional($kumpul->siswa)->nama ?? '-' }} + | ++ {{ optional($kumpul->siswa)->nisn ?? '-' }} + | ++ {{ \Carbon\Carbon::parse($kumpul->tanggal_submit)->format('d M Y, H:i') }} + | ++ + @if($kumpul->status === 'dikumpulkan') ✅ Tepat Waktu + @elseif($kumpul->status === 'terlambat') ⏰ Terlambat + @else ❌ Belum + @endif + + | ++ @if($kumpul->exp > 0) + + ⭐ {{ $kumpul->exp }} EXP + + @else + Belum dinilai + @endif + | ++ @if($kumpul->lampiran_tugas) + + 📎 Unduh + + @else + - + @endif + | +
+ Semua tugas yang pernah Anda buat. +
+ +@if(session('success')) +Belum ada tugas yang dibuat.
+| No | +Judul Tugas | +Mata Pelajaran | +Kelas | +Deadline | +Pengumpulan | +Aksi | +
|---|---|---|---|---|---|---|
| {{ $tugasList->firstItem() + $i }} | +
+ {{ $tugas->judul_tugas }}
+ @if($tugas->keterangan)
+
+ {{ Str::limit($tugas->keterangan, 60) }}
+
+ @endif
+ |
+ + + {{ optional(optional($tugas->mengajar)->mapel)->nama_mapel ?? '-' }} + + | ++ + {{ optional(optional($tugas->mengajar)->kelas)->tingkat }} + {{ optional(optional($tugas->mengajar)->kelas)->nama_kelas ?? '-' }} + + | +
+
+ {{ $isLewat ? '⏰ Lewat' : '✅ Aktif' }}
+
+
+ {{ \Carbon\Carbon::parse($tugas->deadline)->format('d M Y, H:i') }}
+
+ |
+ + {{ $jumlahKumpul }} + pengumpulan + | +
+
+
+ 👁️ Detail
+
+
+
+ |
+