213 lines
6.2 KiB
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');
|
|
}
|
|
}
|