MIF_E31222313/app/Http/Controllers/UserController.php

131 lines
3.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Barryvdh\DomPDF\Facade\Pdf;
class UserController extends Controller
{
public function user()
{
$users = User::where('usertype', 'user')->get();
return view('admin.user', compact('users'));
}
public function tambahuser(Request $request)
{
// Validasi input
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email', // Pastikan email unik
]);
// CEK ADMIN - BAGIAN YANG DITAMBAH
if ($request->input('usertype') == 'admin') {
$adminExists = User::where('usertype', 'admin')->exists();
if ($adminExists) {
toastr()->error('Admin sudah ada! Tidak bisa menambah admin lagi.');
return redirect()->route('user');
}
}
$name = $request->input('name');
$email = $request->input('email');
// Membuat user baru dengan password default dan usertype
$user = new User();
$user->name = $name;
$user->email = $email;
$user->password = bcrypt('1234567890'); // Password default
$user->usertype = $request->input('usertype', 'user'); // Usertype otomatis, fallback ke 'user' jika tidak ada input
// Simpan data user
if ($user->save()) {
toastr()->success('Data user berhasil ditambahkan.');
} else {
toastr()->error('Gagal menambahkan data user.');
}
return redirect()->route('user');
}
public function updateuser(Request $request, $id)
{
// Validasi input
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $id, // Pastikan email unik, kecuali untuk user yang sedang diupdate
'password' => 'nullable|min:6', // Validasi password jika diisi
'usertype' => 'required' // Pastikan usertype ada
]);
// CEK ADMIN - BAGIAN YANG DITAMBAH
if ($request->input('usertype') == 'admin') {
// Cek apakah sudah ada admin lain (selain user yang sedang diupdate)
$adminExists = User::where('usertype', 'admin')->where('id', '!=', $id)->exists();
if ($adminExists) {
toastr()->error('Admin sudah ada! Tidak bisa mengubah user lain menjadi admin.');
return redirect()->route('user');
}
}
// Cari user yang akan diupdate berdasarkan ID
$user = User::find($id);
if (!$user) {
toastr()->error('User tidak ditemukan.');
return redirect()->route('user');
}
// Update data user
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->usertype = $request->input('usertype'); // Update usertype
// Jika ada password baru yang diinput, update password-nya
if ($request->filled('password')) {
$user->password = bcrypt($request->input('password')); // Password baru jika diisi
}
// Simpan perubahan
if ($user->save()) {
toastr()->success('Data user berhasil diperbarui.');
} else {
toastr()->error('Gagal memperbarui data user.');
}
return redirect()->route('user')->with('reload', true);
}
public function hapususer($id)
{
// Cari user berdasarkan ID
$user = User::findOrFail($id);
// Hapus data user
$user->delete();
// Berikan notifikasi sukses
toastr()->success('Data user berhasil dihapus.');
// Redirect kembali ke halaman user
return redirect()->route('user');
}
public function downloaduser()
{
// Ambil data sekolah dari database
$users = User::all();
$pdf = Pdf::loadView('admin.userpdf', compact('users'));
// Download file PDF
return $pdf->download('data_user.pdf');
}
}