MIF_E31221105/app/Http/Controllers/HasilKmeansController.php

255 lines
8.9 KiB
PHP

<?php
// 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)
// {
// $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
// $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
]);
}
}