validate([ // 'data' => 'required|array', // 'centroid_awal' => 'required|string', // 'centroid_akhir' => 'required|string', // 'iterasi' => 'required|integer', // 'id_angkatan' => 'required|integer', // ]); // // Hapus hasil sebelumnya untuk angkatan ini // $ids = collect($request->data)->pluck('id'); // HasilKlasifikasi::whereIn('id_alumni', $ids)->delete(); // foreach ($request->data as $item) { // if (!isset($item['id']) || !isset($item['cluster'])) continue; // HasilKlasifikasi::create([ // 'id_alumni' => $item['id'], // 'cluster' => $item['cluster'], // 'iterasi' => $request->iterasi, // 'centroid_awal' => json_encode($request->centroid_awal), // 'centroid_akhir' => json_encode($request->centroid_akhir), // ]); // } // return redirect()->back()->with('success', 'Hasil klasifikasi berhasil disimpan.'); // } // public function index() // { // $angkatan = TahunAngkatan::all(); // return view('hasil_klasifikasi', compact('angkatan')); // } // public function show($id_angkatan) // { // $data = DataAlumni::with(['jabatan', 'kualifikasiBidang', 'hasilKlasifikasi']) // ->where('angkatan', $id_angkatan) // ->get(); // return view('hasil_klasifikasi', [ // 'data' => $data, // 'id_angkatan' => $id_angkatan // ]); // } // } // namespace App\Http\Controllers; // use Illuminate\Http\Request; // use App\Models\HasilKlasifikasi; // use App\Models\DataAlumni; // use App\Models\TahunAngkatan; // class HasilKmeansController extends Controller // { // // public function store(Request $request) // // { // // @dd($request->all()); // // $request->validate([ // // 'data' => 'required|array', // // 'centroid_awal' => 'required|string', // // 'centroid_akhir' => 'required|string', // // 'iterasi' => 'required|integer', // // 'id_angkatan' => 'required|integer', // // ]); // // // Hapus hasil sebelumnya untuk angkatan ini // // HasilKlasifikasi::whereHas('dataAlumni', function($query) use ($request) { // // $query->where('angkatan', $request->id_angkatan); // // })->delete(); // // foreach ($request->data as $item) { // // if (!isset($item['id']) || !isset($item['cluster'])) continue; // // HasilKlasifikasi::create([ // // 'id_alumni' => $item['id'], // // 'cluster' => $item['cluster'], // // 'iterasi' => $request->iterasi, // // 'centroid_awal' => $request->centroid_awal, // // 'centroid_akhir' => $request->centroid_akhir, // // ]); // // } // // return redirect()->back()->with('success', 'Hasil klasifikasi berhasil disimpan.'); // // } // public function store(Request $request) // { // dd($request->all()); // Debug data yang diterima // $request->validate([ // 'data' => 'required|array', // 'centroid_awal' => 'required|string', // 'centroid_akhir' => 'required|string', // 'iterasi' => 'required|integer', // 'id_angkatan' => 'required|integer', // ]); // // Decode centroid_awal dan centroid_akhir dari string JSON menjadi array // $centroid_awal = json_decode($request->centroid_awal, true); // $centroid_akhir = json_decode($request->centroid_akhir, true); // // Hapus hasil sebelumnya untuk angkatan ini // HasilKlasifikasi::whereHas('dataAlumni', function($query) use ($request) { // $query->where('angkatan', $request->id_angkatan); // })->delete(); // // Menyimpan hasil klasifikasi // foreach ($request->data as $item) { // if (!isset($item['id']) || !isset($item['cluster'])) continue; // HasilKlasifikasi::create([ // 'id_alumni' => $item['id'], // 'cluster' => $item['cluster'], // 'iterasi' => $validated['iterasi'], // 'centroid_awal' => $validated['centroid_awal'], // 'centroid_akhir' => $validated['centroid_akhir'], // 'id_angkatan' => $validated['id_angkatan'], // ]); // } // return redirect()->back()->with('success', 'Hasil klasifikasi berhasil disimpan.'); // } // public function index() // { // $angkatan = TahunAngkatan::all(); // return view('hasil_klasifikasi', compact('angkatan')); // } // public function show($id_angkatan) // { // // Ambil data alumni dengan relasi jabatan, kualifikasiBidang, dan hasilKlasifikasi berdasarkan angkatan // $data = DataAlumni::with(['jabatan', 'kualifikasiBidang', 'hasilKlasifikasi']) // ->where('angkatan', $id_angkatan) // ->get(); // // Mengirim data ke view // return view('hasil_klasifikasi', [ // 'data' => $data, // Data alumni yang sudah di-relasi-kan // 'id_angkatan' => $id_angkatan, // ID angkatan untuk filter // 'angkatan' => TahunAngkatan::all() // Menyertakan semua angkatan untuk dropdown // ]); // } // } namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\HasilKlasifikasi; use App\Models\DataAlumni; use App\Models\Jabatan; use App\Models\TahunAngkatan; class HasilKmeansController extends Controller { // Menyimpan hasil klasifikasi public function store(Request $request) { // Validasi data request $validated = $request->validate([ 'data' => 'required|array', 'centroid_awal' => 'required|string', 'centroid_akhir' => 'required|string', 'iterasi' => 'required|integer', 'id_angkatan' => 'required|integer', ]); // Ambil nilai dari validasi $data = $validated['data']; $centroid_awal = $validated['centroid_awal']; $centroid_akhir = $validated['centroid_akhir']; $iterasi = $validated['iterasi']; $id_angkatan = $validated['id_angkatan']; // Hapus hasil klasifikasi sebelumnya untuk angkatan tersebut HasilKlasifikasi::whereHas('dataAlumni', function ($query) use ($id_angkatan) { $query->where('angkatan', $id_angkatan); })->delete(); // Simpan hasil klasifikasi baru foreach ($data as $item) { if (!isset($item['id']) || !isset($item['cluster'])) { continue; // Skip jika data tidak lengkap } HasilKlasifikasi::create([ 'id_alumni' => $item['id'], 'cluster' => $item['cluster'], 'iterasi' => $iterasi, 'centroid_awal' => $centroid_awal, 'centroid_akhir' => $centroid_akhir, 'id_angkatan' => $id_angkatan, ]); } // Redirect ke halaman hasil klasifikasi berdasarkan angkatan return redirect()->route('hasil_klasifikasi.show', $id_angkatan) ->with('success', 'Hasil klasifikasi berhasil disimpan.'); } // Menampilkan dropdown semua angkatan public function index(Request $request) { $angkatan = TahunAngkatan::all(); // Jika user sudah memilih angkatan, arahkan langsung ke halaman show if ($request->has('id_angkatan') && $request->id_angkatan != '') { return redirect()->route('hasil_klasifikasi.show', $request->id_angkatan); } // Jika belum memilih, hanya tampilkan form dropdown saja return view('hasil_klasifikasi', [ 'angkatan' => $angkatan, 'data' => [], 'id_angkatan' => null, 'jabatanMap' => [], ]); } // Menampilkan hasil klasifikasi berdasarkan angkatan public function show($id_angkatan) { $data = DataAlumni::with(['jabatan', 'kualifikasiBidang', 'hasilKlasifikasi']) ->where('angkatan', $id_angkatan) ->get(); $angkatan = TahunAngkatan::all(); $jabatanMap = Jabatan::pluck('Kategori_bidang_kerja', 'id_kategori')->toArray(); return view('hasil_klasifikasi', [ 'data' => $data, 'id_angkatan' => $id_angkatan, 'angkatan' => $angkatan, 'jabatanMap' => $jabatanMap ]); } }