132 lines
4.3 KiB
PHP
132 lines
4.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\OpsiSubkriteria;
|
|
use App\Models\Alternatif; // Pastikan model Alternatif digunakan
|
|
use App\Models\Subkriteria;
|
|
use App\Models\Crip;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
|
|
class OpsiSubkriteriaController extends Controller
|
|
{
|
|
public function opsisubkriteria()
|
|
{
|
|
// Mengambil data opsi subkriteria, dengan relasi ke subkriteria, crips, dan alternatif
|
|
$opsisubkriterias = OpsiSubkriteria::with(['subkriteria', 'crips', 'alternatif'])->get();
|
|
|
|
// Mengambil semua data crips dan alternatif
|
|
$crips = Crip::all();
|
|
$alternatifs = Alternatif::all();
|
|
$subkriterias = Subkriteria::all();
|
|
|
|
return view('admin.opsisubkriteria', compact('opsisubkriterias', 'crips', 'alternatifs', 'subkriterias'));
|
|
}
|
|
|
|
public function tambahopsisubkriteria(Request $request)
|
|
{
|
|
// Validasi input
|
|
$request->validate([
|
|
'subkriteria_id' => 'required|exists:subkriterias,id',
|
|
'alternatif_id' => 'required|exists:alternatifs,id',
|
|
'crips_id' => 'required|exists:crips,id',
|
|
'opsi' => 'required|string',
|
|
]);
|
|
|
|
// Cek duplikat opsi untuk kombinasi subkriteria + alternatif
|
|
$duplikat = OpsiSubkriteria::where('subkriteria_id', $request->subkriteria_id)
|
|
->where('alternatif_id', $request->alternatif_id)
|
|
->where('opsi', $request->opsi)
|
|
->exists();
|
|
|
|
if ($duplikat) {
|
|
toastr()->error('Opsi tersebut sudah ada untuk kombinasi subkriteria dan alternatif ini.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
// Simpan data opsi subkriteria
|
|
$opsi = new OpsiSubkriteria();
|
|
$opsi->subkriteria_id = $request->subkriteria_id;
|
|
$opsi->alternatif_id = $request->alternatif_id;
|
|
$opsi->crips_id = $request->crips_id;
|
|
$opsi->opsi = $request->opsi;
|
|
|
|
if ($opsi->save()) {
|
|
toastr()->success('Opsi subkriteria berhasil ditambahkan.');
|
|
} else {
|
|
toastr()->error('Gagal menambahkan opsi subkriteria.');
|
|
}
|
|
|
|
return redirect()->route('opsisubkriteria');
|
|
}
|
|
|
|
public function updateopsisubkriteria(Request $request, $id)
|
|
{
|
|
// Validasi input
|
|
$request->validate([
|
|
'subkriteria_id' => 'required|exists:subkriterias,id',
|
|
'alternatif_id' => 'required|exists:alternatifs,id',
|
|
'crips_id' => 'required|exists:crips,id',
|
|
'opsi' => 'required|string',
|
|
]);
|
|
|
|
// Ambil data berdasarkan ID
|
|
$opsi = OpsiSubkriteria::findOrFail($id);
|
|
|
|
// Cek duplikat (kecuali jika data yang sama persis dengan yang sedang diedit)
|
|
$duplikat = OpsiSubkriteria::where('subkriteria_id', $request->subkriteria_id)
|
|
->where('alternatif_id', $request->alternatif_id)
|
|
->where('opsi', $request->opsi)
|
|
->where('id', '!=', $id)
|
|
->exists();
|
|
|
|
if ($duplikat) {
|
|
toastr()->error('Opsi tersebut sudah ada untuk kombinasi subkriteria dan alternatif ini.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
// Update data
|
|
$opsi->subkriteria_id = $request->subkriteria_id;
|
|
$opsi->alternatif_id = $request->alternatif_id;
|
|
$opsi->crips_id = $request->crips_id;
|
|
$opsi->opsi = $request->opsi;
|
|
|
|
if ($opsi->save()) {
|
|
toastr()->success('Opsi subkriteria berhasil diperbarui.');
|
|
} else {
|
|
toastr()->error('Gagal memperbarui opsi subkriteria.');
|
|
}
|
|
|
|
return redirect()->route('opsisubkriteria')->with('reload', true);
|
|
}
|
|
|
|
public function hapusopsisubkriteria($id)
|
|
{
|
|
// Cari data opsi subkriteria berdasarkan ID
|
|
$opsisubkriteria = OpsiSubkriteria::findOrFail($id);
|
|
|
|
// Hapus data opsi subkriteria
|
|
$opsisubkriteria->delete();
|
|
|
|
// Tampilkan pesan sukses
|
|
toastr()->success('Data opsi subkriteria berhasil dihapus.');
|
|
|
|
// Redirect kembali ke halaman opsi subkriteria
|
|
return redirect()->route('opsisubkriteria');
|
|
}
|
|
|
|
public function downloadopsisubkriteria()
|
|
{
|
|
// Ambil data sekolah dari database
|
|
$opsisubkriterias = OpsiSubkriteria::all();
|
|
$subkriterias = Subkriteria::all();
|
|
$pdf = Pdf::loadView('admin.opsubpdf', compact('opsisubkriterias', 'subkriterias'));
|
|
// Download file PDF
|
|
return $pdf->download('data_opsisubkriterias.pdf');
|
|
}
|
|
|
|
|
|
|
|
}
|