131 lines
3.7 KiB
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');
|
|
}
|
|
|
|
}
|