232 lines
7.2 KiB
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,
|
|
]);
|
|
}
|
|
}
|