255 lines
8.9 KiB
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
|
|
]);
|
|
}
|
|
}
|