119 lines
4.5 KiB
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.');
|
|
}
|
|
} |