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

232 lines
7.2 KiB
PHP

<?php
namespace App\Http\Controllers\Server;
use App\Http\Controllers\Controller;
use App\Http\Requests\GuruRequest;
use App\Models\Guru;
use App\Models\Jurusan;
use App\Models\User;
use App\Models\UserRole;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
class GuruController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$numb = 1;
$data = Guru::all();
return view('server-side.guru.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.guru.create', compact('jurusan'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(GuruRequest $request)
{
$data = $request->all();
$totalJuri = Guru::where('jurusan_id', $request->jurusan_id)->count();
if ($totalJuri >= 2) {
return redirect()->route('guru.index')->with('errorr', 'Maksimal juri yang terdaftar hanya 2 saja. Tidak dapat menambah juri lagi untuk jurusan tersebut!');
}
// 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/guru'), $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' => 2,
]);
$guru = Guru::create([
'user_id' => $user->user_id,
'nama' => $request->nama,
'nip' => $request->nip,
'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,
'jurusan_id' => $request->jurusan_id,
'status_juri' => $request->status_juri,
]);
// Redirect ke halaman siswa.index dengan pesan sukses
return redirect()->route('guru.index')->with('message', 'Data berhasil ditambahkan');
}
/**
* Display the specified resource.
*
* @param \App\Models\Guru $guru
* @return \Illuminate\Http\Response
*/
public function show(Guru $guru)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Guru $guru
* @return \Illuminate\Http\Response
*/
public function edit(Guru $guru)
{
$guru->load('user');
$hasJuri = UserRole::where('user_id', $guru->user_id)->where('role_id', 2)->exists();
$hasAdmin = UserRole::where('user_id', $guru->user_id)->where('role_id', 1)->exists();
$jurusan = Jurusan::all();
return view('server-side.guru.edit', compact('guru', 'jurusan', 'hasJuri', 'hasAdmin'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Guru $guru
* @return \Illuminate\Http\Response
*/
public function update(GuruRequest $request, $id)
{
$guru = Guru::findOrFail($id);
// $guru->user->update([
// 'password' => bcrypt($request->password),
// ]);
$guru->update([
'nama' => $request->nama,
'nip' => $request->nip,
'tempat_lahir' => $request->tempat_lahir,
'tanggal_lahir' => $request->tanggal_lahir,
'jenis_kelamin' => $request->jenis_kelamin,
'no_hp' => $request->no_hp,
'alamat' => $request->alamat,
'jurusan_id' => $request->jurusan_id,
'status_juri' => $request->status_juri,
]);
// // Periksa apakah checkbox untuk peran "juri" dicentang
// if ($request->has('role_juri')) {
// // Tambahkan peran "juri" jika checkbox dicentang
// $userRole = UserRole::updateOrCreate(
// ['user_id' => $guru->user_id, 'role_id' => 2],
// ['user_id' => $guru->user_id, 'role_id' => 2]
// );
// } else {
// // Hapus peran "juri" jika checkbox tidak dicentang
// UserRole::where('user_id', $guru->user_id)->where('role_id', 2)->delete();
// }
// if ($request->has('role_admin')) {
// $userRole = UserRole::updateOrCreate(
// ['user_id' => $guru->user_id, 'role_id' => 1],
// ['user_id' => $guru->user_id, 'role_id' => 1]
// );
// } else {
// UserRole::where('user_id', $guru->user_id)->where('role_id', 1)->delete();
// }
// Periksa apakah ada file foto yang diunggah
if ($request->hasFile('foto')) {
// Hapus foto sebelumnya jika ada
if ($guru->foto) {
// Hapus foto sebelumnya dari direktori
$oldFotoPath = public_path('assets/images/guru/' . $guru->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/guru'), $fotoName);
// Perbarui nama foto dalam database
$guru->update(['foto' => $fotoName]);
}
return redirect()->route('guru.index')->with('message', 'Data berhasil diperbarui');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Guru $guru
* @return \Illuminate\Http\Response
*/
Public function destroy($id)
{
$guru = Guru::findOrFail($id);
$user = User::where('user_id', $guru->user_id)->firstOrFail();
// Menghapus semua entri UserRole yang terkait dengan pengguna
UserRole::where('user_id', $user->user_id)->delete();
// Sekarang Anda dapat menghapus guru, user, dan foto (jika ada)
if ($guru->foto) {
$fotoPath = public_path('assets/images/guru/' . $guru->foto);
if (file_exists($fotoPath)) {
unlink($fotoPath);
}
}
$guru->delete();
$user->delete();
return redirect()->route('guru.index')->with('message', 'Data berhasil dihapus');
}
public function juri($id)
{
$guru = Guru::findOrFail($id);
$user = User::where('user_id', $guru->user_id)->firstOrFail();
$userRole = UserRole::create([
'user_id' => $id,
'role_id' => 4,
]);
}
}