MIF_E31222313/app/Http/Controllers/AlternatifController.php

121 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Alternatif;
use App\Models\Mapel;
use App\Models\Kurikulum;
use Barryvdh\DomPDF\Facade\Pdf;
class AlternatifController extends Controller
{
public function alternatif()
{
$mapels = Mapel::where('kategori', 'Mata Pelajaran Pilihan')->get();
$kurikulums = Kurikulum::all();
$alternatifs = Alternatif::with('mapels')->get();
return view('admin.alternatif', compact('alternatifs','mapels', 'kurikulums'));
}
public function tambahalternatif(Request $request)
{
$request->validate([
'nama' => 'required|string|max:255',
'kurikulum_id' => 'required|exists:kurikulums,id',
'mapel_id' => 'required|array|min:1',
'mapel_id.*' => 'exists:mapels,id',
]);
// Cek duplikat nama
$duplikatNama = Alternatif::where('nama', $request->nama)
->where('kurikulum_id', $request->kurikulum_id)
->exists();
if ($duplikatNama) {
toastr()->error('Nama alternatif sudah ada dalam kurikulum yang sama.');
return redirect()->back()->withInput();
}
// Simpan alternatif dulu
$alternatif = new Alternatif();
$alternatif->nama = $request->nama;
$alternatif->kurikulum_id = $request->kurikulum_id;
if ($alternatif->save()) {
$alternatif->mapels()->sync($request->mapel_id); // sinkronisasi setelah tersimpan
toastr()->success('Alternatif berhasil ditambahkan');
} else {
toastr()->error('Gagal menambahkan alternatif');
}
return redirect()->route('alternatif');
}
public function updatealternatif(Request $request, $id)
{
$request->validate([
'nama' => 'required|string|max:255',
'kurikulum_id' => 'required|exists:kurikulums,id',
'mapel_id' => 'required|array|min:1',
'mapel_id.*' => 'exists:mapels,id',
]);
$alternatif = Alternatif::findOrFail($id);
// Cek duplikat nama (kecuali milik sendiri)
$duplikatNama = Alternatif::where('nama', $request->nama)
->where('kurikulum_id', $request->kurikulum_id)
->where('id', '!=', $id)
->exists();
if ($duplikatNama) {
toastr()->error('Nama alternatif sudah ada dalam kurikulum yang sama.');
return redirect()->back()->withInput();
}
// Update data
$alternatif->nama = $request->nama;
$alternatif->kurikulum_id = $request->kurikulum_id;
if ($alternatif->save()) {
$alternatif->mapels()->sync($request->mapel_id);
toastr()->success('Alternatif berhasil diperbarui');
} else {
toastr()->error('Gagal memperbarui alternatif');
}
return redirect()->route('alternatif')->with('reload', true);
}
public function hapusalternatif($id)
{
$alternatif = Alternatif::findOrFail($id);
if ($alternatif->delete()) {
toastr()->success('Alternatif berhasil dihapus');
} else {
toastr()->error('Gagal menghapus alternatif');
}
return redirect()->route('alternatif');
}
public function downloadalternatif()
{
// Ambil data sekolah dari database
$alternatifs = Alternatif::all();
$pdf = Pdf::loadView('admin.alternatifpdf', compact('alternatifs'));
// Download file PDF
return $pdf->download('data_alternatif.pdf');
}
}