355 lines
11 KiB
PHP
355 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Sekolah;
|
|
use App\Models\Kelas;
|
|
use App\Models\Siswa;
|
|
use App\Models\User;
|
|
use App\Models\TahunAjaran;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
|
|
class SekolahController extends Controller
|
|
{
|
|
public function sekolah()
|
|
{
|
|
$sekolahs = Sekolah::all();
|
|
return view('admin.sekolah', compact('sekolahs'));
|
|
}
|
|
|
|
public function tambahsekolah(Request $request)
|
|
{
|
|
$request->validate([
|
|
'nama' => 'required',
|
|
'alamat' => 'required',
|
|
]);
|
|
|
|
// Ambil nilai dari request
|
|
$nama = $request->input('nama');
|
|
$alamat = $request->input('alamat');
|
|
|
|
// Cek apakah ada kombinasi nama dan alamat yang sudah ada
|
|
$duplikatNamaAlamat = Sekolah::where('nama', $nama)
|
|
->where('alamat', $alamat)
|
|
->exists();
|
|
|
|
// Cek apakah ada nama yang duplikat
|
|
$duplikatNama = Sekolah::where('nama', $nama)->exists();
|
|
|
|
// Cek apakah ada alamat yang duplikat
|
|
$duplikatAlamat = Sekolah::where('alamat', $alamat)->exists();
|
|
|
|
if ($duplikatNamaAlamat) {
|
|
toastr()->error('Sekolah dengan nama dan alamat tersebut sudah ada.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
if ($duplikatNama) {
|
|
toastr()->error('Sekolah dengan nama tersebut sudah ada.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
if ($duplikatAlamat) {
|
|
toastr()->error('Sekolah dengan alamat tersebut sudah ada.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
|
|
$sekolah = new Sekolah();
|
|
$sekolah->nama = $request->input('nama');
|
|
$sekolah->alamat = $request->input('alamat');
|
|
|
|
if ($sekolah->save()) {
|
|
toastr()->success('Data sekolah berhasil ditambahkan.');
|
|
} else {
|
|
toastr()->error('Gagal menambahkan data sekolah.');
|
|
}
|
|
|
|
return redirect()->route('sekolah');
|
|
}
|
|
|
|
public function updatesekolah(Request $request, $id)
|
|
{
|
|
$request->validate([
|
|
'nama' => 'required',
|
|
'alamat' => 'required',
|
|
]);
|
|
|
|
// Ambil data sekolah berdasarkan ID
|
|
$sekolah = Sekolah::findOrFail($id);
|
|
|
|
// Ambil nilai dari request
|
|
$nama = $request->input('nama');
|
|
$alamat = $request->input('alamat');
|
|
|
|
|
|
// Cek apakah ada nama yang duplikat (karena nama unique di database)
|
|
$duplikatNama = Sekolah::where('nama', $nama)
|
|
->where('id', '!=', $id)
|
|
->exists();
|
|
|
|
if ($duplikatNama) {
|
|
toastr()->error('Sekolah dengan nama tersebut sudah ada.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
// Cek apakah ada alamat yang duplikat
|
|
$duplikatAlamat = Sekolah::where('alamat', $alamat)
|
|
->where('id', '!=', $id)
|
|
->exists();
|
|
|
|
if ($duplikatAlamat) {
|
|
toastr()->error('Sekolah dengan alamat tersebut sudah ada.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
// Update data sekolah
|
|
$sekolah->nama = $nama;
|
|
$sekolah->alamat = $alamat;
|
|
$sekolah->save();
|
|
|
|
toastr()->success('Data sekolah berhasil diupdate.');
|
|
return redirect()->route('sekolah')->with('reload', true);
|
|
}
|
|
|
|
public function hapussekolah($id)
|
|
{
|
|
$sekolah = Sekolah::findOrFail($id);
|
|
$sekolah->delete();
|
|
|
|
toastr()->success('Data sekolah berhasil dihapus.');
|
|
return redirect()->route('sekolah');
|
|
}
|
|
|
|
public function downloadsekolah()
|
|
{
|
|
// Ambil data sekolah dari database
|
|
$sekolahs = Sekolah::all();
|
|
$pdf = Pdf::loadView('admin.sekolahpdf', compact('sekolahs'));
|
|
// Download file PDF
|
|
return $pdf->download('data_sekolah.pdf');
|
|
}
|
|
|
|
public function kelas()
|
|
{
|
|
$kelas = Kelas::all();
|
|
$sekolahs = Sekolah::all();
|
|
return view('admin.kelas', compact('kelas', 'sekolahs'));
|
|
}
|
|
|
|
public function getkelas($id)
|
|
{
|
|
$kelas = Kelas::where('sekolah_id', $id)->get();
|
|
// Balikkan dalam bentuk JSON
|
|
return response()->json(['kelas' => $kelas]);
|
|
}
|
|
|
|
|
|
public function tambahkelas(Request $request)
|
|
{
|
|
$request->validate([
|
|
'nama_kelas' => 'required',
|
|
'sekolah_id' => 'required|exists:sekolahs,id',
|
|
]);
|
|
|
|
// Ambil nilai dari request
|
|
$nama = $request->input('nama_kelas');
|
|
|
|
// Cek apakah ada nama yang duplikat
|
|
$duplikatNama = Kelas::where('nama_kelas', $nama)
|
|
->where('sekolah_id', $request->input('sekolah_id'))
|
|
->exists();
|
|
|
|
if ($duplikatNama) {
|
|
toastr()->error('Kelas dengan nama tersebut sudah ada.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
$kelas = new Kelas();
|
|
$kelas->nama_kelas = $request->input('nama_kelas');
|
|
$kelas->sekolah_id = $request->input('sekolah_id');
|
|
|
|
if ($kelas->save()) {
|
|
toastr()->success('Data kelas berhasil ditambahkan.');
|
|
} else {
|
|
toastr()->error('Gagal menambahkan data kelas.');
|
|
}
|
|
|
|
return redirect()->route('kelas');
|
|
}
|
|
|
|
public function updatekelas(Request $request, $id)
|
|
{
|
|
$request->validate([
|
|
'nama_kelas' => 'required',
|
|
'sekolah_id' => 'required|exists:sekolahs,id',
|
|
]);
|
|
|
|
// Ambil data kelas berdasarkan ID
|
|
$kelas = Kelas::findOrFail($id);
|
|
|
|
// Ambil nilai dari request
|
|
$nama = $request->input('nama_kelas');
|
|
|
|
// Cek apakah ada nama yang duplikat, kecuali untuk kelas yang sedang diupdate
|
|
$duplikatNama = Kelas::where('nama_kelas', $nama)
|
|
->where('sekolah_id', $request->input('sekolah_id'))
|
|
->where('id', '!=', $id) // Menghindari duplikasi pada kelas yang sedang diupdate
|
|
->exists();
|
|
|
|
if ($duplikatNama) {
|
|
toastr()->error('Kelas dengan nama tersebut sudah ada.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
// Update data kelas
|
|
$kelas->nama_kelas = $nama;
|
|
$kelas->sekolah_id = $request->input('sekolah_id');
|
|
|
|
if ($kelas->save()) {
|
|
toastr()->success('Data kelas berhasil diupdate.');
|
|
} else {
|
|
toastr()->error('Gagal memperbarui data kelas.');
|
|
}
|
|
|
|
return redirect()->route('kelas')->with('reload', true);
|
|
}
|
|
|
|
public function hapuskelas($id)
|
|
{
|
|
$kelas = Kelas::findOrFail($id);
|
|
$kelas->delete();
|
|
|
|
toastr()->success('Data kelas berhasil dihapus.');
|
|
return redirect()->route('kelas');
|
|
}
|
|
|
|
public function downloadkelas()
|
|
{
|
|
// Ambil data sekolah dari database
|
|
$kelas = Kelas::all();
|
|
$pdf = Pdf::loadView('admin.kelaspdf', compact('kelas'));
|
|
// Download file PDF
|
|
return $pdf->download('data_kelas.pdf');
|
|
}
|
|
|
|
public function siswa()
|
|
{
|
|
$users = User::where('usertype', 'user')->get();
|
|
$sekolahs = Sekolah::all(); // Untuk dropdown sekolah
|
|
$kelas = Kelas::all(); // Untuk dropdown kelas
|
|
$tahun_ajarans = TahunAjaran::where('is_active', 1)->get(); // Ambil tahun ajaran yang aktif
|
|
$siswas = Siswa::with('user', 'sekolah', 'kelas', 'tahunAjaran')->get(); // Tambahkan relasi 'tahunAjaran'
|
|
|
|
return view('admin.siswa', compact('siswas', 'users', 'sekolahs', 'kelas', 'tahun_ajarans'));
|
|
}
|
|
|
|
public function tambahsiswa(Request $request)
|
|
{
|
|
$request->validate([
|
|
'user_id' => 'required|exists:users,id',
|
|
'sekolah_id' => 'required|exists:sekolahs,id',
|
|
'kelas_id' => 'required|exists:kelas,id',
|
|
'tahun_ajaran_id' => 'required|exists:tahun_ajarans,id',
|
|
]);
|
|
|
|
$userId = $request->input('user_id');
|
|
$sekolahId = $request->input('sekolah_id');
|
|
$kelasId = $request->input('kelas_id');
|
|
$tahunAjaranId = $request->input('tahun_ajaran_id');
|
|
|
|
// Cek apakah siswa ini sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama
|
|
$duplikat = Siswa::where('user_id', $userId)
|
|
->where('sekolah_id', $sekolahId)
|
|
->where('kelas_id', $kelasId)
|
|
->where('tahun_ajaran_id', $tahunAjaranId)
|
|
->exists();
|
|
|
|
if ($duplikat) {
|
|
toastr()->error('Siswa tersebut sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
// Simpan data siswa
|
|
$siswa = new Siswa();
|
|
$siswa->user_id = $userId;
|
|
$siswa->sekolah_id = $sekolahId;
|
|
$siswa->kelas_id = $kelasId;
|
|
$siswa->tahun_ajaran_id = $tahunAjaranId;
|
|
|
|
if ($siswa->save()) {
|
|
toastr()->success('Data siswa berhasil ditambahkan.');
|
|
} else {
|
|
toastr()->error('Gagal menambahkan data siswa.');
|
|
}
|
|
|
|
return redirect()->route('siswa')->with('reload', true);
|
|
}
|
|
|
|
public function updatesiswa(Request $request, $id)
|
|
{
|
|
// Validasi input
|
|
$request->validate([
|
|
'user_id' => 'required|exists:users,id',
|
|
'sekolah_id' => 'required|exists:sekolahs,id',
|
|
'kelas_id' => 'required|exists:kelas,id',
|
|
'tahun_ajaran_id' => 'required|exists:tahun_ajarans,id',
|
|
]);
|
|
|
|
// Cari data siswa berdasarkan ID
|
|
$siswa = Siswa::findOrFail($id);
|
|
|
|
$userId = $request->input('user_id');
|
|
$sekolahId = $request->input('sekolah_id');
|
|
$kelasId = $request->input('kelas_id');
|
|
$tahunAjaranId = $request->input('tahun_ajaran_id');
|
|
|
|
// Cek apakah siswa ini sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama, kecuali untuk siswa yang sedang di-update
|
|
$duplikat = Siswa::where('user_id', $userId)
|
|
->where('sekolah_id', $sekolahId)
|
|
->where('kelas_id', $kelasId)
|
|
->where('tahun_ajaran_id', $tahunAjaranId)
|
|
->where('id', '!=', $id) // Hindari memeriksa siswa yang sedang di-update
|
|
->exists();
|
|
|
|
if ($duplikat) {
|
|
toastr()->error('Siswa tersebut sudah terdaftar di sekolah, kelas, dan tahun ajaran yang sama.');
|
|
return redirect()->back();
|
|
}
|
|
|
|
// Update data siswa
|
|
$siswa->user_id = $userId;
|
|
$siswa->sekolah_id = $sekolahId;
|
|
$siswa->kelas_id = $kelasId;
|
|
$siswa->tahun_ajaran_id = $tahunAjaranId;
|
|
|
|
if ($siswa->save()) {
|
|
toastr()->success('Data siswa berhasil di-update.');
|
|
} else {
|
|
toastr()->error('Gagal meng-update data siswa.');
|
|
}
|
|
|
|
return redirect()->route('siswa');
|
|
}
|
|
|
|
public function hapussiswa($id)
|
|
{
|
|
$siswa = Siswa::findOrFail($id);
|
|
$siswa->delete();
|
|
|
|
toastr()->success('Data siswa berhasil dihapus.');
|
|
return redirect()->route('siswa');
|
|
}
|
|
|
|
public function downloadsiswa()
|
|
{
|
|
// Ambil data siswa dengan relasi lengkap untuk PDF
|
|
$siswas = Siswa::with('user', 'sekolah', 'kelas', 'tahunAjaran')->get();
|
|
$pdf = Pdf::loadView('admin.siswapdf', compact('siswas'));
|
|
// Download file PDF
|
|
return $pdf->download('data_siswa.pdf');
|
|
}
|
|
} |