TIF_E41201014/app/Http/Controllers/Server/SiswaController.php

213 lines
6.2 KiB
PHP

<?php
namespace App\Http\Controllers\Server;
use App\Http\Controllers\Controller;
use App\Http\Requests\SiswaRequest;
use App\Models\Siswa;
use Illuminate\Http\Request;
use App\Models\Jurusan;
use App\Models\Penilaian;
use App\Models\User;
use App\Models\UserRole;
use Illuminate\Support\Facades\Hash;
class SiswaController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$numb = 1;
$data = Siswa::all();
return view('server-side.siswa.index', compact('data', 'numb'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$jurusan = Jurusan::all();
return view('server-side.siswa.create', compact('jurusan'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(SiswaRequest $request)
{
$data = $request->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');
}
}