<?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');
    }

}
