all(); // Inisialisasi nama file foto $fotoName = null; // Jika ada file foto yang diunggah, pindahkan file dan dapatkan namanya if ($request->hasFile('foto')) { $fotoName = uniqid().'.'.$request->foto->extension(); $request->foto->move(public_path('assets/images/siswa'), $fotoName); } // Buat email dari username $email = $request->username . '@gmail.com'; $user = User::create([ 'username' => $request->username, 'email' => $email, 'password' => Hash::make('smk1tapen'), ]); $userRole = UserRole::create([ 'user_id' => $user->user_id, 'role_id' => 3, ]); $siswa = Siswa::create([ 'user_id' => $user->user_id, 'nama' => $request->nama, 'nis' => $request->nis, 'foto' => $fotoName, // Gunakan nama file foto jika ada 'tempat_lahir' => $request->tempat_lahir, 'tanggal_lahir' => $request->tanggal_lahir, 'jenis_kelamin' => $request->jenis_kelamin, 'no_hp' => $request->no_hp, 'alamat' => $request->alamat, 'nama_ayah' => $request->nama_ayah, 'nama_ibu' => $request->nama_ibu, 'jurusan_id' => $request->jurusan_id, ]); $penilaian = Penilaian::create([ 'siswa_id' => $siswa->id, 'nilai_raport' => 0, 'nilai_keterampilan' => 0, 'nilai_ujian' => 0, ]); // Redirect ke halaman siswa.index dengan pesan sukses return redirect()->route('siswa.index')->with('message', 'Data berhasil ditambahkan'); } /** * Display the specified resource. * * @param \App\Models\Siswa $siswa * @return \Illuminate\Http\Response */ public function show(Siswa $siswa) { // } /** * Show the form for editing the specified resource. * * @param \App\Models\Siswa $siswa * @return \Illuminate\Http\Response */ public function edit(Siswa $siswa) { $siswa->load('user'); $penilaian = Penilaian::where('siswa_id', $siswa->id)->firstOrFail(); $jurusan = Jurusan::all(); return view('server-side.siswa.edit', compact('siswa', 'jurusan', 'penilaian')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Siswa $siswa * @return \Illuminate\Http\Response */ public function update(SiswaRequest $request, $id) { $siswa = Siswa::findOrFail($id); $siswa->user->update([ 'password' => Hash::make('smk1tapen'), ]); $siswa->update([ 'nama' => $request->nama, 'nis' => $request->nis, 'tempat_lahir' => $request->tempat_lahir, 'tanggal_lahir' => $request->tanggal_lahir, 'jenis_kelamin' => $request->jenis_kelamin, 'no_hp' => $request->no_hp, 'alamat' => $request->alamat, 'nama_ayah' => $request->nama_ayah, 'nama_ibu' => $request->nama_ibu, 'jurusan_id' => $request->jurusan_id, ]); // Periksa apakah ada file foto yang diunggah if ($request->hasFile('foto')) { // Hapus foto sebelumnya jika ada if ($siswa->foto) { // Hapus foto sebelumnya dari direktori $oldFotoPath = public_path('assets/images/siswa/' . $siswa->foto); if (file_exists($oldFotoPath)) { unlink($oldFotoPath); } } // Pindahkan foto baru dan dapatkan namanya $fotoName = uniqid().'.'.$request->foto->extension(); $request->foto->move(public_path('assets/images/siswa'), $fotoName); // Perbarui nama foto dalam database $siswa->update(['foto' => $fotoName]); } $penilaian = Penilaian::where('siswa_id', $siswa->id)->first(); $penilaian->update([ 'nilai_raport' => $request->nilai_raport, 'nilai_keterampilan' => $request->nilai_keterampilan, ]); return redirect()->route('siswa.index')->with('message', 'Data berhasil diperbarui'); } /** * Remove the specified resource from storage. * * @param \App\Models\Siswa $siswa * @return \Illuminate\Http\Response */ public function destroy($id) { $siswa = Siswa::findOrFail($id); $penilaian = Penilaian::where('siswa_id', $siswa->id)->firstOrFail(); $user = User::where('user_id', $siswa->user_id)->firstOrFail(); $userRole = UserRole::where('user_id', $user->user_id)->firstOrFail(); if ($siswa->foto) { $fotoPath = public_path('assets/images/siswa/' . $siswa->foto); if (file_exists($fotoPath)) { unlink($fotoPath); } } $userRole->delete(); $penilaian->delete(); $user->delete(); $siswa->delete(); return redirect()->route('siswa.index')->with('message', 'Data berhasil dihapus'); } }