diff --git a/app/Http/Controllers/Admin/KelasController.php b/app/Http/Controllers/Admin/KelasController.php index c4b3846..764d0af 100644 --- a/app/Http/Controllers/Admin/KelasController.php +++ b/app/Http/Controllers/Admin/KelasController.php @@ -66,7 +66,7 @@ public function update(Request $request, $id_kelas) 'max:50', Rule::unique('kelas')->where(function ($query) use ($request) { return $query->where('tingkat', $request->tingkat); - })->ignore($id, 'id_kelas'), + })->ignore($id_kelas, 'id_kelas'), ], 'tingkat' => 'required|in:X,XI,XII', ], [ diff --git a/app/Http/Controllers/Siswa/DashboardController.php b/app/Http/Controllers/Siswa/DashboardController.php index ac35bb0..641ad60 100644 --- a/app/Http/Controllers/Siswa/DashboardController.php +++ b/app/Http/Controllers/Siswa/DashboardController.php @@ -25,16 +25,11 @@ public function index() /** @var \App\Models\Siswa $siswa */ $siswa = Auth::guard('siswa')->user(); - // ============================================= - // 1. TUGAS — yang belum dikumpulkan siswa ini - // dan deadline belum lewat - // ============================================= + // tugas - // id_tugas yang sudah dikumpulkan siswa ini $sudahDikumpulkan = PengumpulanTugas::where('id_siswa', $siswa->id_siswa) ->pluck('id_tugas'); - // Tugas untuk kelas siswa yang belum dikumpulkan $tugasRaw = Tugas::with(['mengajar.mapel']) ->whereNotIn('id_tugas', $sudahDikumpulkan) ->where('deadline', '>=', Carbon::now()) @@ -45,7 +40,6 @@ public function index() ->take(5) ->get(); - // Kelompokkan per tanggal deadline $tugasList = []; foreach ($tugasRaw as $tugas) { $tgl = Carbon::parse($tugas->deadline) @@ -55,15 +49,15 @@ public function index() $namaMapel = optional(optional($tugas->mengajar)->mapel)->nama_mapel ?? '-'; $tugasList[$tgl][] = [ + 'id_tugas' => $tugas->id_tugas, // tambah ini 'jam' => Carbon::parse($tugas->deadline)->format('H.i'), 'nama' => $tugas->judul_tugas, 'mapel' => 'Belum · ' . $namaMapel, ]; } - // ============================================= - // 2. CHALLENGE MINGGUAN - // ============================================= + // challenge mingguan + $startMinggu = Carbon::now()->startOfWeek(); $endMinggu = Carbon::now()->endOfWeek(); @@ -81,17 +75,14 @@ public function index() ->whereBetween('waktu_submit', [$startMinggu, $endMinggu]) ->count(); - // ============================================= - // 3. TUGAS SELESAI MINGGU INI (mascot speech bubble) - // ============================================= + // mascot + $tugasSelesai = PengumpulanTugas::where('id_siswa', $siswa->id_siswa) ->whereIn('status', ['dikumpulkan', 'terlambat']) ->whereBetween('tanggal_submit', [$startMinggu, $endMinggu]) ->count(); - // ============================================= - // 4. LEADERBOARD — top 3 kelas siswa yang login - // ============================================= + // leaderboard $leaderboardRaw = Leaderboard::with('siswa') ->where('id_kelas', $siswa->id_kelas) ->orderBy('total_exp', 'desc') diff --git a/app/Http/Controllers/Siswa/TugasController.php b/app/Http/Controllers/Siswa/TugasController.php index fe717e3..d402356 100644 --- a/app/Http/Controllers/Siswa/TugasController.php +++ b/app/Http/Controllers/Siswa/TugasController.php @@ -58,6 +58,7 @@ public function index() 'sudah_kumpul' => !is_null($pengumpulan), 'lampiran' => $pengumpulan?->lampiran_tugas, 'exp' => $pengumpulan?->exp ?? 0, + 'file_tugas' => $tugas->lampiran, ]; }); diff --git a/app/Models/Kelas.php b/app/Models/Kelas.php index 2417dce..38a51d5 100644 --- a/app/Models/Kelas.php +++ b/app/Models/Kelas.php @@ -15,7 +15,6 @@ class Kelas extends Model protected $keyType = 'int'; protected $fillable = [ - 'id_kelas', 'nama_kelas', 'tingkat', ]; diff --git a/database/migrations/2026_04_15_014117_fix_kelas_ai.php b/database/migrations/2026_04_15_014117_fix_kelas_ai.php new file mode 100644 index 0000000..383f987 --- /dev/null +++ b/database/migrations/2026_04_15_014117_fix_kelas_ai.php @@ -0,0 +1,23 @@ +// database/migrations/xxxx_fix_kelas_autoincrement.php +dropColumn('id_kelas_old'); + }); + } + + // Reset AUTO_INCREMENT ke angka setelah max id_kelas yang ada + DB::statement('ALTER TABLE kelas AUTO_INCREMENT = 1'); + } + + public function down(): void {} +}; \ No newline at end of file diff --git a/resources/views/admin/challenge/index.blade.php b/resources/views/admin/challenge/index.blade.php index ea9d3d9..aef8f43 100644 --- a/resources/views/admin/challenge/index.blade.php +++ b/resources/views/admin/challenge/index.blade.php @@ -545,22 +545,11 @@ placeholder="Deskripsi singkat challenge (opsional)"> -
-
+
-
- - -
-
Kelas Target Kelas diff --git a/resources/views/guru/mapel/index.blade.php b/resources/views/guru/mapel/index.blade.php index b7b3712..9cacbce 100644 --- a/resources/views/guru/mapel/index.blade.php +++ b/resources/views/guru/mapel/index.blade.php @@ -32,6 +32,7 @@ display: inline-flex; align-items: center; gap: 6px; + width: 145px; } .btn-materi { @@ -167,7 +168,7 @@ @section('content') -

MATA PELAJARAN YANG ANDA AJAR

+

MATA PELAJARAN

@if(session('success'))
@@ -219,7 +220,7 @@ {{-- AKSI --}} -
+
diff --git a/resources/views/siswa/tugas/show.blade.php b/resources/views/siswa/tugas/show.blade.php index 5518b2f..e2b8f36 100644 --- a/resources/views/siswa/tugas/show.blade.php +++ b/resources/views/siswa/tugas/show.blade.php @@ -76,6 +76,108 @@ margin-top: 12px; } + .tugas-bottom-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 20px; + margin-bottom: 20px; +} + + .lampiran-card { + background: #fff; + border-radius: 20px; + padding: 28px; + box-shadow: 0 2px 12px rgba(0,0,0,0.06); + display: flex; + flex-direction: column; + } + + .lampiran-title { + font-size: 17px; + font-weight: 700; + color: #1e293b; + margin: 0 0 20px; + display: flex; + align-items: center; + gap: 8px; + } + + .lampiran-file-box { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background: #f0f7ff; + border-radius: 14px; + padding: 28px 20px; + text-align: center; + gap: 12px; + } + + .lampiran-file-icon { + width: 56px; + height: 56px; + } + + .lampiran-file-name { + font-size: 13px; + font-weight: 600; + color: #1e293b; + word-break: break-all; + } + + .lampiran-file-ext { + font-size: 11px; + color: #94a3b8; + background: #e2e8f0; + padding: 2px 10px; + border-radius: 99px; + } + + .btn-download { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 6px; + margin-top: 16px; + background: #2b8ef3; + color: white; + padding: 10px 20px; + border-radius: 10px; + font-weight: 600; + font-size: 13px; + text-decoration: none; + transition: background 0.2s; + width: 100%; + } + + .btn-download:hover { + background: #1a7ae0; + color: white; + } + + .no-lampiran { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background: #f8fafc; + border-radius: 14px; + padding: 28px 20px; + text-align: center; + color: #94a3b8; + font-size: 13px; + gap: 8px; + } + + @media (max-width: 768px) { + .tugas-bottom-grid { + grid-template-columns: 1fr; + } +} + /* SUBMIT FORM */ .submit-card { background: #fff; @@ -315,7 +417,6 @@ {!! nl2br(e($tugas->keterangan)) !!}
@endif -
{{-- WARNING TERLAMBAT --}} @if($terlambat && !$sudahKumpul) @@ -351,62 +452,96 @@ EXP akan diberikan setelah guru menilai tugasmu.

@endif - @if($pengumpulan->lampiran_tugas) - 📎 Lihat File yang Dikumpulkan + Lampiran Lihat File yang Dikumpulkan @endif
-{{-- FORM SUBMIT --}} @else -
-

- Upload jawaban - Upload Jawaban -

+ {{-- GRID: LAMPIRAN GURU (kiri) + UPLOAD SISWA (kanan) --}} +
- - @csrf + {{-- KIRI: Lampiran dari Guru --}} +
+

+ Lampiran + File dari Guru +

- @error('lampiran_tugas') -
- Error validasi - {{ $message }} + @if($tugas->lampiran) + @php + $namaFile = basename($tugas->lampiran); + $ext = strtoupper(pathinfo($namaFile, PATHINFO_EXTENSION)); + @endphp +
+ File + {{ $namaFile }} + {{ $ext }}
- @enderror - -
- -
- Upload file + + Download Download File Tugas + + @else +
+ Mailbox + Tidak ada file lampiran dari guru.
-

Klik untuk pilih file atau drag & drop di sini

-

PDF, DOC, DOCX, JPG, PNG • Maks. 5MB

-
+ @endif +
-
- File terpilih - - - - -
+ {{-- KANAN: Upload Jawaban --}} +
+

+ Upload jawaban + Upload Jawaban +

+ + + @csrf + + @error('lampiran_tugas') +
+ Error validasi + {{ $message }} +
+ @enderror + +
+ +
+ Upload file +
+

Klik untuk pilih file atau drag & drop di sini

+

PDF, DOC, DOCX, JPG, PNG • Maks. 5MB

+
+ +
+ File terpilih + - + - +
+ + + +
- -
@endif