From ae2368c8f8995d6e2db811bd4230def64c1a621a Mon Sep 17 00:00:00 2001 From: ghozahimma65 Date: Wed, 12 Nov 2025 16:12:58 +0700 Subject: [PATCH] Data Master (Peserta Didik) bismillah aman semua --- .../Controllers/Admin/SiswaController.php | 75 ++++++----- app/Models/Kelas.php | 5 +- app/Models/Siswa.php | 8 +- app/Models/WaliMurid.php | 8 +- resources/views/admin/guru/edit.blade.php | 72 ++++++---- resources/views/admin/siswa/create.blade.php | 80 ++++++----- resources/views/admin/siswa/edit.blade.php | 127 +++++++++--------- resources/views/admin/siswa/index.blade.php | 67 +++++---- .../views/admin/wali_murid/edit.blade.php | 46 +++++-- 9 files changed, 281 insertions(+), 207 deletions(-) diff --git a/app/Http/Controllers/Admin/SiswaController.php b/app/Http/Controllers/Admin/SiswaController.php index a1e155e..9bc3007 100644 --- a/app/Http/Controllers/Admin/SiswaController.php +++ b/app/Http/Controllers/Admin/SiswaController.php @@ -13,63 +13,74 @@ class SiswaController extends Controller { public function index() { - $siswa = Siswa::with(['kelas','wali'])->paginate(10); - return view('admin.siswa.index', compact('siswa')); + $siswas = Siswa::with(['waliMurid', 'kelas'])->orderBy('created_at', 'desc')->get(); + return view('admin.siswa.index', compact('siswas')); } public function create() { $kelas = Kelas::all(); - $wali = WaliMurid::all(); - return view('admin.siswa.create', compact('kelas','wali')); + $wali_murids = WaliMurid::all(); + return view('admin.siswa.create', compact('kelas', 'wali_murids')); } - + public function store(Request $request) { $validated = $request->validate([ - 'nama' => 'required|string|max:100', - 'nis' => 'required|string|max:50|unique:siswa,nis', - 'tanggal_lahir' => 'required|date', - 'kelas_id' => 'required|exists:kelas,id', - 'wali_id' => 'required|exists:wali_murid,id', - 'foto' => 'nullable|image|max:2048' + 'nama' => 'required|string|max:255', + 'tempat_lahir' => 'nullable|string|max:255', + 'tanggal_lahir' => 'nullable|date', + 'alamat' => 'nullable|string', + 'kelas_id' => 'nullable|exists:kelas,id', + 'wali_id' => 'nullable|exists:wali_murids,id', + 'keterangan' => 'nullable|string', + 'foto' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', ]); - + if ($request->hasFile('foto')) { - $validated['foto'] = $request->file('foto')->store('siswa','public'); + $validated['foto'] = $request->file('foto')->store('fotosiswa', 'public'); } - + Siswa::create($validated); - return redirect()->route('siswa.index')->with('success','Siswa berhasil ditambahkan'); + + return redirect()->route('siswa.index')->with('success', 'Data peserta didik berhasil ditambahkan.'); } public function edit(Siswa $siswa) { $kelas = Kelas::all(); - $wali = WaliMurid::all(); - return view('admin.siswa.edit', compact('siswa','kelas','wali')); + $wali_murids = WaliMurid::all(); + + return view('admin.siswa.edit', compact('siswa', 'kelas', 'wali_murids')); } public function update(Request $request, Siswa $siswa) { - $validated = $request->validate([ - 'nama' => 'required|string|max:100', - 'nis' => 'required|string|max:50|unique:siswa,nis,'.$siswa->id, - 'tanggal_lahir' => 'required|date', - 'kelas_id' => 'required|exists:kelas,id', - 'wali_id' => 'required|exists:wali_murid,id', - 'foto' => 'nullable|image|max:2048' + $request->validate([ + 'nama' => 'required|string|max:255', + 'tempat_lahir' => 'nullable|string|max:100', + 'tanggal_lahir' => 'nullable|date', + 'kelas_id' => 'nullable|exists:kelas,id', + 'wali_id' => 'nullable|exists:wali_murids,id', + 'foto' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', ]); - + + // simpan foto baru kalau diupload if ($request->hasFile('foto')) { - if ($siswa->foto && Storage::disk('public')->exists($siswa->foto)) { - Storage::disk('public')->delete($siswa->foto); - } - $validated['foto'] = $request->file('foto')->store('siswa','public'); + $fotoPath = $request->file('foto')->store('foto_siswa', 'public'); + $siswa->foto = $fotoPath; } - - $siswa->update($validated); - return redirect()->route('siswa.index')->with('success','Siswa berhasil diupdate'); + + // update data siswa + $siswa->update([ + 'nama' => $request->nama, + 'tempat_lahir' => $request->tempat_lahir, + 'tanggal_lahir' => $request->tanggal_lahir, + 'kelas_id' => $request->kelas_id, + 'wali_id' => $request->wali_id, + ]); + + return redirect()->route('siswa.index')->with('success', 'Data siswa berhasil diperbarui.'); } public function destroy(Siswa $siswa) diff --git a/app/Models/Kelas.php b/app/Models/Kelas.php index 5b0135f..5c792c9 100644 --- a/app/Models/Kelas.php +++ b/app/Models/Kelas.php @@ -9,8 +9,9 @@ class Kelas extends Model protected $table = 'kelas'; protected $fillable = ['nama_kelas','umur_group']; - public function siswa() + public function siswas() { - return $this->hasMany(Siswa::class); + return $this->hasMany(Siswa::class, 'kelas_id'); } + } \ No newline at end of file diff --git a/app/Models/Siswa.php b/app/Models/Siswa.php index 076a8df..0f1c600 100644 --- a/app/Models/Siswa.php +++ b/app/Models/Siswa.php @@ -6,12 +6,12 @@ class Siswa extends Model { - use HasFactory; - protected $fillable = [ 'nama', - 'nis', + 'tempat_lahir', 'tanggal_lahir', + 'alamat', + 'keterangan', 'kelas_id', 'wali_id', 'foto', @@ -22,7 +22,7 @@ public function kelas() return $this->belongsTo(Kelas::class); } - public function wali() + public function waliMurid() { return $this->belongsTo(WaliMurid::class, 'wali_id'); } diff --git a/app/Models/WaliMurid.php b/app/Models/WaliMurid.php index 362bb8e..b153333 100644 --- a/app/Models/WaliMurid.php +++ b/app/Models/WaliMurid.php @@ -17,4 +17,10 @@ class WaliMurid extends Model 'no_hp', 'alamat', ]; -} + + // Tambahin relasi ke siswa + public function siswas() + { + return $this->hasMany(Siswa::class, 'wali_id'); + } +} \ No newline at end of file diff --git a/resources/views/admin/guru/edit.blade.php b/resources/views/admin/guru/edit.blade.php index a9777cd..086ba26 100644 --- a/resources/views/admin/guru/edit.blade.php +++ b/resources/views/admin/guru/edit.blade.php @@ -5,30 +5,52 @@

✏️ Edit Guru

- @csrf - @method('PUT') - -
- - -
- -
- - -
- -
- - -
- -
- - -
- - -
+ @csrf + @method('PUT') + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + Batal + + +
+ @endsection diff --git a/resources/views/admin/siswa/create.blade.php b/resources/views/admin/siswa/create.blade.php index 8f7f7a0..81f137e 100644 --- a/resources/views/admin/siswa/create.blade.php +++ b/resources/views/admin/siswa/create.blade.php @@ -1,54 +1,68 @@ @extends('layouts.app') @section('content') -
-

➕ Tambah Peserta Didik

+
+

➕ Tambah Peserta Didik

-
+ @csrf -
- - +
+ +
-
- - +
+
+ + +
+ +
+ + +
-
- - +
+ +
-
- - +
+
+ + +
+ +
+ + +
-
- - +
+ +
-
- - +
+ +
-
- Batal +
+ Batal
diff --git a/resources/views/admin/siswa/edit.blade.php b/resources/views/admin/siswa/edit.blade.php index 52e00f1..d68026a 100644 --- a/resources/views/admin/siswa/edit.blade.php +++ b/resources/views/admin/siswa/edit.blade.php @@ -1,68 +1,73 @@ @extends('layouts.app') @section('content') -
-

✏️ Edit Peserta Didik

+
+

✏️ Edit Data Peserta Didik

-
- @csrf - @method('PUT') - -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - @if($siswa->foto) -
- + + @csrf + @method('PUT') + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
- @endif - -

Kosongkan jika tidak ingin mengubah foto

-
- -
- Batal - -
- + +
+ + +
+
+ +
+ + + @if ($siswa->foto) + Foto {{ $siswa->nama }} + @endif +
+ +
+ Batal + +
+
@endsection diff --git a/resources/views/admin/siswa/index.blade.php b/resources/views/admin/siswa/index.blade.php index 1faa8a7..e267ed1 100644 --- a/resources/views/admin/siswa/index.blade.php +++ b/resources/views/admin/siswa/index.blade.php @@ -14,49 +14,46 @@ class="bg-green-600 text-white px-4 py-2 rounded hover:bg-green-700 transition"> # - Nama - NIS + Nama Anak + Tempat, Tgl Lahir + Alamat Kelas Wali Murid + Keterangan Foto Aksi - @forelse ($siswa as $i => $item) - - {{ $i+1 }} - {{ $item->nama }} - {{ $item->nis }} - {{ $item->kelas->nama ?? '-' }} - {{ $item->wali->nama ?? '-' }} - - @if($item->foto) - - @else - - - @endif - - - - Edit - -
- @csrf - @method('DELETE') - -
- - + @forelse ($siswas as $siswa) + + {{ $loop->iteration }} + {{ $siswa->nama }} + {{ $siswa->tempat_lahir }}, {{ $siswa->tanggal_lahir }} + {{ $siswa->alamat }} + {{ $siswa->kelas->nama_kelas ?? '-' }} + {{ $siswa->waliMurid->nama_wali ?? '-' }} + {{ $siswa->keterangan ?? '-' }} + + @if ($siswa->foto) + {{ $siswa->nama }} + @else + - + @endif + + + Edit +
+ @csrf + @method('DELETE') + +
+ + @empty - - Belum ada data siswa - + + Belum ada data siswa + @endforelse diff --git a/resources/views/admin/wali_murid/edit.blade.php b/resources/views/admin/wali_murid/edit.blade.php index bd689b1..6594ba9 100644 --- a/resources/views/admin/wali_murid/edit.blade.php +++ b/resources/views/admin/wali_murid/edit.blade.php @@ -1,36 +1,54 @@ @extends('layouts.app') @section('content') -
-

Edit Data Wali Murid

+
+

✏️ Edit Data Wali Murid

-
+ @csrf @method('PUT') -
+ +
- +
-
+ +
- +
-
+ +
- +
-
+ +
- +
-
- Batal - + +
+ + Batal + +