MIF_E31222313/app/Http/Controllers/MapelController.php

110 lines
3.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Mapel;
use App\Models\Kurikulum;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
class MapelController extends Controller
{
public function mapel()
{
$mapels = Mapel::with('kurikulum')->get();
$kurikulums = Kurikulum::all();
return view('admin.mapel', compact('mapels', 'kurikulums'));
}
public function tambahmapel(Request $request)
{
$request->validate([
'kurikulum_id' => 'required|exists:kurikulums,id',
'nama' => 'required|string',
'kategori' => 'required|string',
]);
$nama = $request->input('nama');
// Cek apakah ada mapel dengan nama yang duplikat, tanpa memperhatikan kategori dan kurikulum
$duplikatNama = Mapel::where('nama', $nama)
->exists();
if ($duplikatNama) {
toastr()->error('Mapel dengan nama tersebut sudah ada.');
return redirect()->back();
}
$mapel = new Mapel();
$mapel->kurikulum_id = $request->kurikulum_id;
$mapel->nama = $nama;
$mapel->kategori = $request->kategori;
if ($mapel->save()) {
toastr()->success('Data mata pelajaran berhasil ditambahkan.');
} else {
toastr()->error('Gagal menambahkan data mata pelajaran.');
}
return redirect()->route('mapel');
}
public function updatemapel(Request $request, $id)
{
$request->validate([
'kurikulum_id' => 'required|exists:kurikulums,id',
'nama' => 'required|string',
'kategori' => 'required|string',
]);
$mapel = Mapel::findOrFail($id);
// Ambil nilai dari request
$nama = $request->input('nama');
// Cek apakah ada mapel dengan nama yang duplikat, tanpa memperhatikan kategori dan kurikulum
$duplikatNama = Mapel::where('nama', $nama)
->where('id', '!=', $id)
->exists();
if ($duplikatNama) {
toastr()->error('Mata pelajaran dengan nama tersebut sudah ada.');
return redirect()->back();
}
$mapel->kurikulum_id = $request->kurikulum_id;
$mapel->nama = $nama;
$mapel->kategori = $request->kategori;
if ($mapel->save()) {
toastr()->success('Data mata pelajaran berhasil diperbarui.');
} else {
toastr()->error('Gagal memperbarui data mata pelajaran.');
}
return redirect()->route('mapel')->with('reload', true);
}
public function hapusmapel($id)
{
$mapel = Mapel::findOrFail($id);
$mapel->delete();
toastr()->success('Data mata pelajaran berhasil dihapus.');
return redirect()->route('mapel');
}
public function downloadmapel()
{
// Ambil data sekolah dari database
$mapels = Mapel::all();
$pdf = Pdf::loadView('admin.mapelpdf', compact('mapels'));
// Download file PDF
return $pdf->download('data_mapels.pdf');
}
}