121 lines
3.3 KiB
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');
|
|
}
|
|
|
|
}
|