input('id_guru'); $kelas = DB::table('kelas') ->select('kelas.*') ->join('mengajar', 'mengajar.id_kelas', '=', 'kelas.id_kelas') ->where('mengajar.id_guru', $id_guru) ->get(); return response()->json($kelas); } public function tampilMataPelajaranGuru(Request $request) { $id_guru = $request->input('id_guru'); $mataPelajaranguru = DB::table('mata_pelajaran') ->select('mata_pelajaran.id_mapel', 'mata_pelajaran.nama_mapel', 'kelas.nama_kelas', 'kelas.id_kelas') ->join('mengajar as mengajar_mapel', 'mengajar_mapel.id_mapel', '=', 'mata_pelajaran.id_mapel') ->join('kelas', 'kelas.id_kelas', '=', 'mengajar_mapel.id_kelas') ->where('mengajar_mapel.id_guru', $id_guru) ->get(); return response()->json($mataPelajaranguru); } public function tampilTugasDetailMateriGuru(Request $request) { $id_materi = $request->input('id_materi'); $tugas = DB::table('tugas') ->select('tugas.id_tugas', 'materi.judul_materi', 'tugas.tenggat_waktu', 'tugas.keterangan') ->join('materi', 'materi.id_materi', '=', 'tugas.id_materi') ->where('tugas.id_materi', $id_materi) ->orderBy('tugas.id_tugas', 'desc') ->get(); return response()->json($tugas); } public function tambahTugasGuru(Request $request) { // Validasi input $validated = $request->validate([ 'id_materi' => 'required|integer', 'tenggat_waktu' => 'required|date_format:Y-m-d', 'keterangan' => 'required|string', 'file' => 'nullable|string', // file bisa null 'message' => 'nullable|string', ]); $id_materi = $validated['id_materi']; $tenggat_waktu = $validated['tenggat_waktu']; $keterangan = $validated['keterangan']; $fileBase64 = $validated['file'] ?? null; try { // Cek apakah sudah ada tugas dengan id_materi yang sama $existingTugas = DB::table('tugas') ->where('id_materi', $id_materi) ->first(); if ($existingTugas) { return response()->json(['message' => 'Tugas untuk materi ini sudah ada'], 400); } $fileName = null; // Jika file disertakan, proses file if ($fileBase64) { // Decode base64 file $fileData = base64_decode($fileBase64); // Generate nama file dengan format idMateri_tanggalWaktu.pdf $fileName = $id_materi . '_' . now()->format('YmdHis') . '.pdf'; $targetPath = public_path('storage/tugas/') . $fileName; // Simpan file ke storage file_put_contents($targetPath, $fileData); } // Tambah tugas baru DB::table('tugas')->insert([ 'id_materi' => $id_materi, 'tenggat_waktu' => $tenggat_waktu, 'keterangan' => $keterangan, 'file_path' => $fileName, // bisa bernilai null jika file tidak disertakan ]); $title = "Tugas Baru"; $message = "Tugas baru telah ditambahkan "; broadcast(new HelloEvent($title, $message))->toOthers(); return response()->json(['message' => 'Tugas berhasil ditambahkan'], 200); } catch (\Exception $e) { return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500); } } public function editTugasGuru(Request $request) { // Validasi input $validated = $request->validate([ 'id_tugas' => 'required|integer', 'tenggat_waktu' => 'required|date_format:Y-m-d', 'keterangan' => 'required|string', 'file' => 'nullable|string' // Tambahkan validasi untuk file (Base64 encoded string) ]); $id_tugas = $validated['id_tugas']; $tenggat_waktu = $validated['tenggat_waktu']; $keterangan = $validated['keterangan']; $fileBase64 = $validated['file'] ?? null; // Ambil file jika ada try { // Update tugas berdasarkan id_tugas $updateData = [ 'tenggat_waktu' => $tenggat_waktu, 'keterangan' => $keterangan, ]; if ($fileBase64) { // Decode file dari Base64 ke binary $binaryFile = base64_decode($fileBase64); // Generate nama file dengan format idTugas_tanggalWaktu.pdf $filename = $id_tugas . '_' . now()->format('YmdHis') . '.pdf'; $targetPath = public_path('storage/tugas/') . $filename; file_put_contents($targetPath, $binaryFile); // Tambahkan nama file ke data yang akan diupdate $updateData['file_path'] = 'storage/tugas/' . $filename; } $updated = DB::table('tugas') ->where('id_tugas', $id_tugas) ->update($updateData); if ($updated) { return response()->json(['message' => 'Tugas berhasil diupdate']); } else { return response()->json(['message' => 'Tidak ada perubahan yang dilakukan'], 200); } } catch (\Exception $e) { return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500); } } public function tampilPengumpulanTugasGuru(Request $request) { // Validasi input $validated = $request->validate([ 'id_guru' => 'required|integer', ]); $id_guru = $validated['id_guru']; try { $pengumpulanTugas = DB::table('pengumpulan_tugas') ->join('tugas', 'pengumpulan_tugas.id_tugas', '=', 'tugas.id_tugas') ->join('materi', 'tugas.id_materi', '=', 'materi.id_materi') ->join('mata_pelajaran', 'materi.id_mapel', '=', 'mata_pelajaran.id_mapel') ->join('mengajar', function ($join) use ($id_guru) { $join->on('mengajar.id_mapel', '=', 'mata_pelajaran.id_mapel') ->where('mengajar.id_guru', '=', $id_guru); }) ->join('siswa', 'pengumpulan_tugas.id_siswa', '=', 'siswa.nisn') // Join ke tabel siswa ->select( 'pengumpulan_tugas.*', 'siswa.nama_siswa', // Menambahkan nama_siswa ke dalam hasil query 'materi.judul_materi' ) ->get(); return response()->json($pengumpulanTugas); } catch (\Exception $e) { return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500); } } public function editNilaiTugasGuru(Request $request) { // Validasi input $validated = $request->validate([ 'id_pengumpulan' => 'required|integer|exists:pengumpulan_tugas,id_pengumpulan', 'nilai' => 'required|integer|min:0|max:100', // asumsi nilai antara 0 dan 100 ]); $id_pengumpulan = $validated['id_pengumpulan']; $nilai = $validated['nilai']; try { // Cari pengumpulan tugas berdasarkan id_pengumpulan $pengumpulanTugas = DB::table('pengumpulan_tugas') ->where('id_pengumpulan', $id_pengumpulan) ->first(); // Cek apakah pengumpulan tugas ditemukan if (!$pengumpulanTugas) { return response()->json(['message' => 'Pengumpulan tugas tidak ditemukan.'], 404); } // Update nilai DB::table('pengumpulan_tugas') ->where('id_pengumpulan', $id_pengumpulan) ->update(['nilai' => $nilai]); return response()->json(['message' => 'Nilai berhasil diperbarui.']); } catch (\Exception $e) { return response()->json(['message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500); } } // public function downloadTugas(Request $request) // { // // Validasi request // $request->validate([ // 'id_pengumpulan' => 'required|string', // Pastikan 'file_name' sesuai dengan nama field yang digunakan di Android // ]); // $id_pengumpulan = $request->input('id_pengumpulan'); // $fileName = DB::table('pengumpulan_tugas') // ->where('id_pengumpulan', $id_pengumpulan) // ->value('lampiran_tugas'); // // Dapatkan path lengkap ke file // $filePath = public_path('documents/' . $fileName); // // Periksa apakah file ada // if (file_exists($filePath)) { // // Jika ada, kirimkan file sebagai respons // return response()->download($filePath, $fileName); // } else { // // Jika tidak, kirimkan respons file tidak ditemukan // return response()->json(['message' => 'File tidak ditemukan'], 404); // } // } public function downloadTugas(Request $request) { // Validasi request $request->validate([ 'id_pengumpulan' => 'required|string', // Pastikan 'file_name' sesuai dengan nama field yang digunakan di Android ]); $id_pengumpulan = $request->input('id_pengumpulan'); // Dapatkan nama file dari database $fileName = DB::table('pengumpulan_tugas') ->where('id_pengumpulan', $id_pengumpulan) ->value('lampiran_tugas'); if ($fileName) { // Dapatkan URL lengkap ke file $fileUrl = Storage::url($fileName); // Tambahkan header "ngrok-skip-browser-warning" return response()->json([ 'fileUrl' => asset($fileUrl), ]); } else { // Jika tidak ada data materi yang ditemukan return response()->json(['message' => 'Materi tidak ditemukan'], 404); } } public function tampilTugasGuru(Request $request) { $id_guru = $request->input('id_guru'); $tugas = DB::table('tugas') ->select('tugas.id_tugas', 'materi.judul_materi', 'tugas.tenggat_waktu', 'tugas.keterangan') ->join('materi', 'materi.id_materi', '=', 'tugas.id_materi') ->join('mata_pelajaran', 'mata_pelajaran.id_mapel', '=', 'materi.id_mapel') ->join('kelas', 'kelas.id_kelas', '=', 'mata_pelajaran.id_kelas') ->join('mengajar', 'mengajar.id_mapel', '=', 'mata_pelajaran.id_mapel') ->where('mengajar.id_guru', $id_guru) ->orderBy('tugas.id_tugas', 'desc') ->get(); return response()->json($tugas); } public function updatePasswordGuru(Request $request) { $nip = $request->input('nip'); $oldPassword = $request->input('old_password'); $newPassword = $request->input('new_password'); $user = DB::table('guru')->where('nip', $nip)->first(); if ($user && $user->password === $oldPassword) { // The old password matches, so update the password DB::table('guru')->where('nip', $nip)->update([ 'password' => $newPassword, ]); $updatedUser = DB::table('guru')->where('nip', $nip)->first(); $response = array( 'success' => true, 'message' => 'Password telah diperbarui', ); return response()->json($response); } else { return "Invalid old password"; } } public function tampilMateriGuru(Request $request) { $id_mapel = $request->input('id_mapel'); $materi = DB::table('materi') ->select('materi.id_materi', 'materi.judul_materi', 'materi.keterangan') ->where('materi.id_mapel', $id_mapel) ->get(); return response()->json($materi); } public function TambahMateriGuru(Request $request) { // Ambil input dari request $lampiranMateri = $request->input('lampiran_materi'); $judulMateri = $request->input('judul_materi'); $keterangan = $request->input('keterangan'); $idMapel = $request->input('id_mapel'); try { // Decode file dari Base64 ke binary $binaryFile = base64_decode($lampiranMateri); // Generate nama file dengan format judulMateri_tanggalWaktu.pdf $filename = $judulMateri . '_' . now()->format('YmdHis') . '.pdf'; $targetPath = public_path('storage/materi/') . $filename; // Simpan file ke path target file_put_contents($targetPath, $binaryFile); // Tambahkan data ke database DB::table('materi')->insert([ 'lampiran_materi' => 'materi/' . $filename, 'judul_materi' => $judulMateri, 'keterangan' => $keterangan, 'id_mapel' => $idMapel, 'created_at' => now(), 'updated_at' => now(), ]); return response()->json(['message' => 'File berhasil diupload dan data tugas ditambahkan'], 200); } catch (\Exception $e) { // Tangani semua kesalahan yang terjadi dan kembalikan respons kesalahan return response()->json(['message' => 'Gagal menambahkan materi: ' . $e->getMessage()], 500); } } }