get(); $jumlahSiswa = DB::table('siswa')->count(); $jumlahGuru = DB::table('guru')->count(); $jumlahKelas = DB::table('kelas')->count(); $jumlahUser = DB::table('user')->count(); $jumlahMapel = DB::table('pelajaran')->count(); $jumlahJurusan = DB::table('jurusan')->count(); $siswaPerJurusan = DB::table('siswa') ->join('kelas', 'siswa.id_kelas', '=', 'kelas.id_kelas') ->join('jurusan', 'kelas.id_jurusan', '=', 'jurusan.id_jurusan') ->select('jurusan.nama_jurusan', DB::raw('count(*) as total')) ->groupBy('jurusan.nama_jurusan') ->get(); $jurusanLabels = $siswaPerJurusan->pluck('nama_jurusan'); $jurusanData = $siswaPerJurusan->pluck('total'); $siswaPerKelas = DB::table('siswa') ->join('kelas', 'siswa.id_kelas', '=', 'kelas.id_kelas') ->select('kelas.nama_kelas', DB::raw('count(*) as total')) ->groupBy('kelas.nama_kelas') ->get(); $kelasLabels = $siswaPerKelas->pluck('nama_kelas'); $kelasData = $siswaPerKelas->pluck('total'); // Get data for filters $mapelList = DB::table('pelajaran')->get(); $guruList = DB::table('guru')->get(); // Add this query for kelasList $kelasList = DB::table('kelas') ->join('jurusan', 'kelas.id_jurusan', '=', 'jurusan.id_jurusan') ->select( 'kelas.id_kelas', 'kelas.jenjang', 'kelas.nama_kelas', 'jurusan.nama_jurusan' ) ->orderBy('kelas.jenjang') ->orderBy('jurusan.nama_jurusan') ->orderBy('kelas.nama_kelas') ->get(); // Get saved filters from session $savedFilters = session('jadwal_filters', [ 'hari' => '', 'mapel' => '', 'guru' => '', 'kelas' => '' ]); // Get filtered jadwal $jadwalQuery = DB::table('jadwal_pelajaran') ->join('kode_pembelajaran', 'jadwal_pelajaran.id_kodepembelajaran', '=', 'kode_pembelajaran.id_kodepembelajaran') ->join('pelajaran', 'kode_pembelajaran.id_pelajaran', '=', 'pelajaran.id_pelajaran') ->join('guru', 'kode_pembelajaran.id_guru', '=', 'guru.id_guru') ->join('kelas', 'jadwal_pelajaran.id_kelas', '=', 'kelas.id_kelas') ->join('jurusan', 'kelas.id_jurusan', '=', 'jurusan.id_jurusan') ->select( 'jadwal_pelajaran.id_hari', 'jadwal_pelajaran.id_jam_pelajaran', 'pelajaran.nama_pelajaran', 'guru.nama_guru', 'kelas.jenjang', 'kelas.nama_kelas', 'jurusan.nama_jurusan' ); if (!empty($savedFilters['hari'])) { $jadwalQuery->where('jadwal_pelajaran.id_hari', $savedFilters['hari']); } if (!empty($savedFilters['mapel'])) { $jadwalQuery->where('pelajaran.id_pelajaran', $savedFilters['mapel']); } if (!empty($savedFilters['guru'])) { $jadwalQuery->where('guru.id_guru', $savedFilters['guru']); } if (!empty($savedFilters['kelas'])) { $jadwalQuery->where('kelas.id_kelas', $savedFilters['kelas']); } $jadwalPelajaran = $jadwalQuery ->orderBy('jadwal_pelajaran.id_hari') ->orderBy('jadwal_pelajaran.id_jam_pelajaran') ->get(); // Get pelanggaran data for the chart $pelanggaranData = $this->getPelanggaranData(); return view('dasboard', compact( 'jumlahSiswa', 'jumlahGuru', 'jumlahKelas', 'jumlahUser', 'jumlahMapel', 'jumlahJurusan', 'jurusanLabels', 'jurusanData', 'kelasLabels', 'kelasData', 'mapelList', 'guruList', 'kelasList', 'jadwalPelajaran', 'savedFilters', 'kelas', 'pelanggaranData' )); } private function getPelanggaranData($idKelas = null) { try { $query = DB::table('monitoring_siswa.pelanggaran') ->join('monitoring_siswa.list_pelanggaran', 'monitoring_siswa.pelanggaran.id_listpelanggaran', '=', 'monitoring_siswa.list_pelanggaran.id_listpelanggaran') ->join('monitoring_siswa.bentuk_pelanggaran', 'monitoring_siswa.list_pelanggaran.id_bentukpelanggaran', '=', 'monitoring_siswa.bentuk_pelanggaran.id_bentukpelanggaran') ->join('monitoring_siswa.siswa', 'monitoring_siswa.pelanggaran.id_siswa', '=', 'monitoring_siswa.siswa.id_siswa'); if ($idKelas) { $query->where('monitoring_siswa.siswa.id_kelas', $idKelas); } $result = $query ->select('monitoring_siswa.bentuk_pelanggaran.nama_bentuk_pelanggaran', DB::raw('COUNT(*) as jumlah')) ->groupBy('monitoring_siswa.bentuk_pelanggaran.nama_bentuk_pelanggaran') ->get(); return [ 'labels' => $result->pluck('nama_bentuk_pelanggaran')->toArray(), 'data' => $result->pluck('jumlah')->toArray() ]; } catch (\Exception $e) { return [ 'labels' => [], 'data' => [], 'error' => $e->getMessage() ]; } } public function updateFilter(Request $request) { $filters = [ 'hari' => $request->input('hari'), 'mapel' => $request->input('mapel'), 'guru' => $request->input('guru'), 'kelas' => $request->input('kelas') ]; // Store filters in session session(['jadwal_filters' => $filters]); return response()->json(['success' => true]); } public function chartPelanggaran(Request $request) { try { $idKelas = $request->id_kelas; $data = $this->getPelanggaranData($idKelas); return response()->json([ 'success' => true, 'labels' => $data['labels'], 'data' => $data['data'] ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'error' => $e->getMessage() ], 500); } } }