MIF_E31230302/app/Http/Controllers/DataTrainingController.php

119 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\DataTraining;
use App\Services\PreprocessingService;
class DataTrainingController extends Controller
{
protected $preprocessing;
// Inject PreprocessingService ke controller
public function __construct(PreprocessingService $preprocessing)
{
$this->preprocessing = $preprocessing;
}
public function index()
{
$data = DataTraining::all();
return view('training.index', compact('data'));
}
public function create()
{
return view('training.create');
}
public function store(Request $request)
{
// 1. Tambahkan validasi untuk mapel_favorit
$request->validate([
'nilai' => 'required|numeric',
'mapel_favorit' => 'required|string', // [DITAMBAHKAN]
'minat' => 'required|string',
'cita_cita' => 'required|string',
'preferensi_studi' => 'required|string',
'jurusan' => 'required|string'
]);
// 2. Ambil nilai input asli dari form
$nilaiRaw = $request->input('nilai');
$mapelRaw = $request->input('mapel_favorit'); // [DITAMBAHKAN]
$minatRaw = $request->input('minat');
$citaRaw = $request->input('cita_cita');
$studiRaw = $request->input('preferensi_studi');
$jurusan = $request->input('jurusan');
// 3. Konversi menggunakan PreprocessingService yang sudah dipetakan
$nilaiKategori = $this->preprocessing->kategoriNilai($nilaiRaw);
$minatKategori = $this->preprocessing->kategoriMinat($minatRaw);
$citaKategori = $this->preprocessing->kategoriCitaCita($citaRaw);
$studiKategori = $this->preprocessing->kategoriPreferensi($studiRaw);
// 4. Simpan data teks asli (_raw) dan data hasil konversi ke database
DataTraining::create([
'nilai_raw' => $nilaiRaw,
'mapel_favorit_raw' => $mapelRaw, // [DITAMBAHKAN]
'minat_raw' => $minatRaw,
'cita_cita_raw' => $citaRaw,
'preferensi_studi_raw' => $studiRaw,
'nilai' => $nilaiKategori,
'mapel_favorit' => $mapelRaw, // [DITAMBAHKAN] jika berupa pilihan dropdown langsung
'minat' => $minatKategori,
'cita_cita' => $citaKategori,
'preferensi_studi' => $studiKategori,
'jurusan' => $jurusan
]);
return redirect()->route('training.index')->with('success', 'Data Latih Berhasil Dikonversi & Disimpan.');
}
public function edit(string $id)
{
$data = DataTraining::findOrFail($id);
return view('training.edit', compact('data'));
}
public function update(Request $request, string $id)
{
// 1. Tambahkan validasi untuk mapel_favorit
$request->validate([
'nilai' => 'required|numeric',
'mapel_favorit' => 'required|string', // [DITAMBAHKAN]
'minat' => 'required|string',
'cita_cita' => 'required|string',
'preferensi_studi' => 'required|string',
'jurusan' => 'required|string'
]);
$data = DataTraining::findOrFail($id);
// 2. Update baik data mentah (_raw) maupun data hasil konversinya
$data->update([
'nilai_raw' => $request->nilai,
'mapel_favorit_raw' => $request->mapel_favorit, // [DITAMBAHKAN]
'minat_raw' => $request->minat,
'cita_cita_raw' => $request->cita_cita,
'preferensi_studi_raw' => $request->preferensi_studi,
'nilai' => $this->preprocessing->kategoriNilai($request->nilai),
'mapel_favorit' => $request->mapel_favorit, // [DITAMBAHKAN]
'minat' => $this->preprocessing->kategoriMinat($request->minat),
'cita_cita' => $this->preprocessing->kategoriCitaCita($request->cita_cita),
'preferensi_studi' => $this->preprocessing->kategoriPreferensi($request->preferensi_studi),
'jurusan' => $request->jurusan
]);
return redirect('/training')->with('success', 'Data Latih Berhasil Diperbarui.');
}
public function destroy(string $id)
{
DataTraining::destroy($id);
return redirect('/training')->with('success', 'Data Latih Berhasil Dihapus.');
}
}