<?php

namespace App\Http\Controllers;

use App\Models\Admin;
use App\Models\Sang;
use App\Models\Sexes;
use App\Models\User;
use App\Models\Yeux;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Hash;
use RealRashid\SweetAlert\Facades\Alert;

class SuperController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $admins = Admin::orderBy('id', 'asc')->paginate(150);

        return view('super_admin.listes', compact('admins'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function search()
    {
        $search = request()->input('search');
        $admins =  Admin::where('nom', 'like', "%$search%")
            ->orwhere('matricule', 'like', "%$search%")
            ->orwhere('prenoms', 'like', "%$search%")
            ->paginate(6);
        return view('super_admin.seachAdmin')->with('admins', $admins);
    }
    public function create()
    {
        $sexes = Sexes::all();
        $groupeSanguin = Sang::all();
        $couleurYeux = Yeux::all();
        return view('super_admin.create', compact('sexes', 'groupeSanguin', 'couleurYeux'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $admin = new Admin();
        $admin->nom = $request->input('nom');
        $admin->matricule = $request->input('matricule');
        $admin->prenoms = $request->input('prenoms');
        $admin->dateNaissance = $request->input('dateNaissance');
        $admin->VilleNaissance = $request->input('VilleNaissance');
        $admin->sexe = $request->input('sexe');
        $admin->taille = $request->input('taille');
        $admin->couleurYeux = $request->input('couleurYeux');
        $admin->groupeSanguin = $request->input('groupeSanguin');
        $admin->telephone = $request->input('telephone');
        $admin->email = $request->input('email');
        $admin->signePart = $request->input('signePart');
        $admin->grade = $request->input('grade');
        $admin->corps = $request->input('corps');
        $admin->signature = $request->input('signature');

        if ($request->hasfile('photo')) {
            $file = $request->file('photo');
            $extension = $file->getClientOriginalExtension();
            $filename = time() . "." . $extension;
            $file->move('img/', $filename);
            $admin->photo = $filename;
        }

        $admin->save();

        // Création d'un nouvel utilisateur avec un ID incrémenté distinct
        $user = new User();
        $user->email = $request->input('matricule');
        $user->name = $request->input('nom');
        $user->password = Hash::make($request->input('dateNaissance'));
        $user->save();

        // Obtention de l'ID généré pour l'utilisateur
        $userId = $user->id;

        // Mise à jour de l'ID de l'administrateur pour correspondre à l'ID de l'utilisateur
        $admin->id = $userId;
        $admin->save();

        Alert::success('Message', 'Ajout effectué avec succès');
        return redirect()->route('admins.index')->with('modif', 'Ajout effectué avec succès.');
    }



    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */

    public function show(Admin $admin)
    {
        return view('super_admin.show', compact('admin'));
    }


    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Admin $admin)
    {

        /* $couleurYeux = CouleurYeux::all();
        $groupeSanguin = GroupeSanguin::all();
        $sexe = Sexe::all();
        [
            'couleurYeux'=>$couleurYeux,
            'groupeSanguin'=>$groupeSanguin,
            'sexe'=>$sexe,
        ]*/
        $sexes = Sexes::all();
        $sexes = Sexes::all();
        $groupeSanguin = Sang::all();
        $couleurYeux = Yeux::all();
        return view('super_admin.edit', compact('admin', 'sexes', 'groupeSanguin', 'couleurYeux'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $admin)
    {

        $police = Admin::find($admin);
        $police->nom = $request->input('nom');
        $police->prenoms = $request->input('prenoms');
        $police->dateNaissance = $request->input('dateNaissance');
        $police->VilleNaissance = $request->input('VilleNaissance');
        $police->sexe = $request->input('sexe');
        $police->taille = $request->input('taille');
        $police->couleurYeux = $request->input('couleurYeux');
        $police->groupeSanguin = $request->input('groupeSanguin');
        $police->telephone = $request->input('telephone');
        $police->email = $request->input('email');
        $police->signePart = $request->input('signePart');
        $police->grade = $request->input('grade');
        $police->matricule = $request->input('matricule');
        $police->corps = $request->input('corps');

        if ($request->hasfile('photo')) {
            //dd($request);
            $file = $request->file('photo');
            $extension = $file->getClientOriginalExtension();
            $filename = time() . "." . $extension;
            $file->move('img/', $filename);
            $police->photo = $filename;
        }
        $police->update();
        Alert::success('Message', ' update successfully');
        return redirect()->route('admins.index')
            ->with('modif', 'Modification effectuée avec succès.');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {

        $admin = Admin::find($id);

        if ($admin) {
            $admin->delete();

            // Supprimer également l'utilisateur correspondant
            $user = User::find($id);

            if ($user) {
                $user->delete();
            }
        }

        Alert::success('Message', 'Suppression effectuée avec succès');
        return back()->with('info', 'Suppression effectuée avec succès.');
    }
}
