<?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
        ]);
    }
}
