191 lines
7.2 KiB
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)
|
|
{
|
|
//
|
|
}
|
|
}
|