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

191 lines
7.2 KiB
PHP

<?php
namespace App\Http\Controllers\Server;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Siswa;
use App\Http\Requests\SiswaRequest;
use App\Models\Penilaian;
class ProfileController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$profile = auth()->user();
$siswa = Siswa::where('user_id', $profile->user_id)
->join('penilaians', 'siswas.id', '=', 'penilaians.siswa_id')
->join('jurusans', 'siswas.jurusan_id', '=', 'jurusans.id_jurusan')
->select('siswas.*', 'jurusans.nama_jurusan', 'penilaians.nilai_raport', 'penilaians.nilai_keterampilan', 'penilaians.bukti_nilai_raport', 'penilaians.bukti_nilai_keterampilan')
->first();
if($siswa) {
$siswa->nis = $siswa->nis ?? 'Informasi tidak tersedia';
$siswa->nama = $siswa->nama ?? 'Informasi tidak tersedia';
$siswa->no_hp = $siswa->no_hp ?? 'Informasi tidak tersedia';
$siswa->alamat = $siswa->alamat ?? 'Informasi tidak tersedia';
$siswa->tempat_lahir = $siswa->tempat_lahir ?? 'Informasi tidak tersedia';
$siswa->tanggal_lahir = $siswa->tanggal_lahir ?? 'Informasi tidak tersedia';
$siswa->jenis_kelamin = $siswa->jenis_kelamin ?? 'Informasi tidak tersedia';
$siswa->nama_ayah = $siswa->nama_ayah ?? 'Informasi tidak tersedia';
$siswa->nama_ibu = $siswa->nama_ibu ?? 'Informasi tidak tersedia';
$siswa->nilai_raport = $siswa->nilai_raport ?? 'Informasi tidak tersedia';
$siswa->nilai_keterampilan = $siswa->nilai_keterampilan ?? 'Informasi tidak tersedia';
$siswa->bukti_nilai_raport = $siswa->bukti_nilai_raport ?? 'Informasi tidak tersedia';
$siswa->bukti_nilai_keterampilan = $siswa->bukti_nilai_keterampilan ?? 'Informasi tidak tersedia';
}
return view('server-side.profile.index', compact('profile', 'siswa'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$profile = auth()->user();
$siswa = Siswa::where('user_id', $profile->user_id)
->join('penilaians', 'siswas.id', '=', 'penilaians.siswa_id')
->join('jurusans', 'siswas.jurusan_id', '=', 'jurusans.id_jurusan')
->select('siswas.*', 'jurusans.nama_jurusan', 'penilaians.nilai_raport', 'penilaians.nilai_keterampilan', 'penilaians.nilai_ujian')
->first();
return view('server-side.profile.edit', compact('siswa'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @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,
'no_hp' => $request->no_hp,
'alamat' => $request->alamat,
'tempat_lahir' => $request->tempat_lahir,
'tanggal_lahir' => $request->tanggal_lahir,
'jenis_kelamin' => $request->jenis_kelamin,
'nama_ayah' => $request->nama_ayah,
'nama_ibu' => $request->nama_ibu,
]);
// 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();
$penilaianData = [
'nilai_raport' => $request->nilai_raport,
'nilai_keterampilan' => $request->nilai_keterampilan,
];
if ($request->hasFile('bukti_nilai_raport') && $request->file('bukti_nilai_raport')->isValid()) {
// Menggunakan isValid() untuk memastikan file diunggah
if ($penilaian->bukti_nilai_raport) {
$oldBuktiNilaiRaportPath = public_path('assets/bukti_nilai_raport/' . $penilaian->bukti_nilai_raport);
if (file_exists($oldBuktiNilaiRaportPath)) {
unlink($oldBuktiNilaiRaportPath);
}
}
$request->validate([
'bukti_nilai_raport' => 'required|mimes:pdf|max:2048',
]);
$buktiNilaiRaportName = $request->file('bukti_nilai_raport')->getClientOriginalName();
$request->file('bukti_nilai_raport')->move(public_path('assets/bukti_nilai_raport'), $buktiNilaiRaportName);
$penilaianData['bukti_nilai_raport'] = $buktiNilaiRaportName;
}
if ($request->hasFile('bukti_nilai_keterampilan') && $request->file('bukti_nilai_keterampilan')->isValid()) {
// Menggunakan isValid() untuk memastikan file diunggah
if ($penilaian->bukti_nilai_keterampilan) {
$oldBuktiNilaiKeterampilanPath = public_path('assets/bukti_nilai_keterampilan/' . $penilaian->bukti_nilai_keterampilan);
if (file_exists($oldBuktiNilaiKeterampilanPath)) {
unlink($oldBuktiNilaiKeterampilanPath);
}
}
$request->validate([
'bukti_nilai_keterampilan' => 'required|mimes:pdf|max:2048',
]);
$buktiNilaiKeterampilanName = $request->file('bukti_nilai_keterampilan')->getClientOriginalName();
$request->file('bukti_nilai_keterampilan')->move(public_path('assets/bukti_nilai_keterampilan'), $buktiNilaiKeterampilanName);
$penilaianData['bukti_nilai_keterampilan'] = $buktiNilaiKeterampilanName;
}
$penilaian->update($penilaianData);
return redirect()->route('profile.index')->with('message', 'Profile berhasil diperbarui');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}