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 @@