diff --git a/app/Http/Controllers/ClassificationController.php b/app/Http/Controllers/ClassificationController.php
index 8f6b101..820fd06 100644
--- a/app/Http/Controllers/ClassificationController.php
+++ b/app/Http/Controllers/ClassificationController.php
@@ -7,6 +7,7 @@
use App\Imports\SantrisImport;
use App\Exports\SantrisExport;
use App\Models\Riwayat;
+use App\Models\TestData;
use App\Models\TrainData;
use Maatwebsite\Excel\Facades\Excel;
diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php
new file mode 100644
index 0000000..60954ff
--- /dev/null
+++ b/app/Http/Controllers/DashboardController.php
@@ -0,0 +1,64 @@
+count();
+
+ // Ambil data berdasarkan tahun angkatan
+ $tahunAngkatan = TestData::select('tahun_angkatan')
+ ->distinct()
+ ->orderBy('tahun_angkatan', 'asc')
+ ->pluck('tahun_angkatan')
+ ->toArray();
+
+
+ $tahunAngkatanTable = TestData::selectRaw('tahun_angkatan,
+ COUNT(*) as total,
+ COALESCE(SUM(CASE WHEN predicted_status = "Tercapai" THEN 1 ELSE 0 END), 0) as tepat')
+ ->groupBy('tahun_angkatan')
+ ->orderBy('tahun_angkatan', 'asc')
+ ->get();
+
+
+
+ // Data untuk grafik jenis kelamin berdasarkan tahun angkatan
+ $genderData = TestData::selectRaw('tahun_angkatan,
+ SUM(CASE WHEN jenis_kelamin = "Laki-laki" THEN 1 ELSE 0 END) as laki,
+ SUM(CASE WHEN jenis_kelamin = "Perempuan" THEN 1 ELSE 0 END) as perempuan')
+ ->groupBy('tahun_angkatan')
+ ->orderBy('tahun_angkatan', 'asc')
+ ->get();
+
+ // Data untuk grafik asal daerah berdasarkan tahun angkatan
+ $regionData = TestData::selectRaw('tahun_angkatan,
+ SUM(CASE WHEN asal_daerah = "Dalam Provinsi" THEN 1 ELSE 0 END) as dalam,
+ SUM(CASE WHEN asal_daerah = "Luar Provinsi" THEN 1 ELSE 0 END) as luar')
+ ->groupBy('tahun_angkatan')
+ ->orderBy('tahun_angkatan', 'asc')
+ ->get();
+
+ return view('pages.admin.dashboard', compact(
+ 'totalSantri',
+ 'totalTepatWaktu',
+ 'tahunAngkatan',
+ 'tahunAngkatanTable',
+ 'genderData',
+ 'regionData'
+ ));
+ }
+}
diff --git a/app/Http/Controllers/TestDataController.php b/app/Http/Controllers/TestDataController.php
index 8ea8557..29f109b 100644
--- a/app/Http/Controllers/TestDataController.php
+++ b/app/Http/Controllers/TestDataController.php
@@ -16,17 +16,17 @@ public function showTestData(Request $request)
$totalTrainData = TrainData::count();
$limit = round(($percentage / 100) * $totalTrainData);
- // **Hapus semua data di TestData secara aman**
+ // **Hapus semua data uji sebelum insert baru**
TestData::query()->delete();
- // **Ambil data latih sesuai persentase**
+ // **Ambil data latih acak sesuai persentase**
$trainData = TrainData::inRandomOrder()->limit($limit)->get();
- // **Gunakan array untuk menyimpan NIS unik**
+ // **Gunakan array untuk memastikan NIS unik**
$existingNIS = [];
foreach ($trainData as $data) {
- if (!in_array($data->nis, $existingNIS)) { // Cek jika NIS belum ada
+ if (!in_array($data->nis, $existingNIS)) {
TestData::create([
'nama' => $data->nama,
'jenis_kelamin' => $data->jenis_kelamin,
@@ -39,11 +39,11 @@ public function showTestData(Request $request)
'created_at' => now(),
'updated_at' => now(),
]);
- $existingNIS[] = $data->nis; // Tambahkan ke array
+ $existingNIS[] = $data->nis;
}
}
- // **Jalankan klasifikasi otomatis setelah data dipilih**
+ // **Jalankan klasifikasi otomatis**
$this->classifyData();
// **Ambil kembali data uji**
@@ -52,15 +52,15 @@ public function showTestData(Request $request)
// **Hitung akurasi berdasarkan prediksi**
$correctPredictions = TestData::whereColumn('status', 'predicted_status')->count();
- $accuracy = ($totalTestData > 0) ? ($correctPredictions / $totalTestData) * 100 : 0;
+ $accuracy = ($totalTestData > 0) ? ($correctPredictions / max(1, $totalTestData)) * 100 : 0;
- // **Hitung probabilitas berdasarkan status prediksi**
+ // **Hitung probabilitas status prediksi**
$probStatus = [
'Tepat' => TestData::where('predicted_status', 'Tercapai')->count() * 100 / max(1, $totalTestData),
'Terlambat' => TestData::where('predicted_status', 'Tidak Tercapai')->count() * 100 / max(1, $totalTestData),
];
- // **Hitung probabilitas berdasarkan jenis kelamin**
+ // **Probabilitas berdasarkan jenis kelamin**
$probGender = TestData::groupBy('jenis_kelamin')
->selectRaw("jenis_kelamin, COUNT(*) * 100 / $totalTestData as probability")
->pluck('probability', 'jenis_kelamin')
@@ -71,7 +71,7 @@ public function showTestData(Request $request)
'Perempuan' => $probGender['Perempuan'] ?? 0,
];
- // **Hitung probabilitas berdasarkan asal daerah**
+ // **Probabilitas berdasarkan asal daerah**
$probRegion = TestData::groupBy('asal_daerah')
->selectRaw("asal_daerah, COUNT(*) * 100 / $totalTestData as probability")
->pluck('probability', 'asal_daerah')
@@ -82,19 +82,35 @@ public function showTestData(Request $request)
'Luar Provinsi' => $probRegion['Luar Provinsi'] ?? 0,
];
+ // **Hitung peluang tepat waktu berdasarkan kategori**
+ $peluangGender = TestData::groupBy('jenis_kelamin')
+ ->selectRaw("jenis_kelamin, SUM(CASE WHEN predicted_status = 'Tercapai' THEN 1 ELSE 0 END) * 100 / COUNT(*) as peluang")
+ ->pluck('peluang', 'jenis_kelamin')
+ ->toArray();
+
+ $peluangRegion = TestData::groupBy('asal_daerah')
+ ->selectRaw("asal_daerah, SUM(CASE WHEN predicted_status = 'Tercapai' THEN 1 ELSE 0 END) * 100 / COUNT(*) as peluang")
+ ->pluck('peluang', 'asal_daerah')
+ ->toArray();
+
return view('pages.admin.exam-data', compact(
'testData',
'totalTestData',
'accuracy',
'probStatus',
'probGender',
- 'probRegion'
+ 'probRegion',
+ 'peluangGender',
+ 'peluangRegion'
));
}
+ public function showClassify()
+ {
+ $classifiedData = TestData::whereNotNull('predicted_status')->get();
-
-
+ return view('pages.admin.class-result', compact('classifiedData'));
+ }
private function classifyData()
{
@@ -136,4 +152,10 @@ private function classifyData()
"Predicted Labels" => $predictedLabels,
]);
}
+
+ public function resetData()
+ {
+ TestData::query()->delete();
+ return back()->with('success', 'Data uji telah direset.');
+ }
}
diff --git a/resources/views/layouts/sidebar.blade.php b/resources/views/layouts/sidebar.blade.php
index e69de29..c6309f3 100644
--- a/resources/views/layouts/sidebar.blade.php
+++ b/resources/views/layouts/sidebar.blade.php
@@ -0,0 +1,292 @@
+@extends('layouts.app-admin')
+
Dashboard Admin | SR Klasifikasi
+@section('content')
+
+
+
+
Halo {{ ucwords($user->role) }} 👋
+
+
+
+
+
+
+ @if(session('success'))
+
+ {{ session('success') }}
+
+ @endif
+
+
+
+
+
+
+
Tepat Waktu | Jumlah
+
+
+
+
+
+
+
+
+
Klasifikasi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tanggal Hari Ini
+
+
+
+
+
+
Loading...
+
+
+
+
+
+
+
+
+
+
+
+
Waktu Saat Ini
+
+
+
+
+
+
Loading...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/pages/admin/add-admin.blade.php b/resources/views/pages/admin/add-admin.blade.php
index e532464..2109f1e 100644
--- a/resources/views/pages/admin/add-admin.blade.php
+++ b/resources/views/pages/admin/add-admin.blade.php
@@ -6,7 +6,8 @@
Tambah Admin
-