<?php

namespace App\Controllers;
use App\Models\UsersModel;
use App\Models\PersonnelModel;
use App\Models\EnfantModel;

class ArbreNoelController extends BaseController
{
    public function index(): string
    {
        return view('welcome_message');
    }

    public function acceuil()
{
    $enfantModel = new EnfantModel();
    $enfant = null;

    if (!session()->get('isLoggedIn')) {
        return view('ArbreNoel/acceuil', [
            'enfant' => null
        ]);
    }

    $user = session()->get('user');

    $enfant = $enfantModel
        ->where('id_personnel', $user['id_personnel'])
        ->first();

    // ADMIN
    if ($user['status'] === 'admin') {
        return view('ArbreNoel/acceuil', [
            'enfant' => $enfant
        ]);
    }

    // UTILISATEUR NORMAL
    if ($enfant) {
        return redirect()
            ->to(base_url('/ArbreNoel'))
            ->with('success', 'Vous avez déjà inscrit un enfant.');
    }

    return view('ArbreNoel/acceuil', [
        'enfant' => null
    ]);
}

    public function authentification(): string
    {
        return view('ArbreNoel/authentification');
    }

// la fonction statistique
    public function statistique(): string
    {
        $model = new EnfantModel();
        $model1 = new PersonnelModel();
        $data['agents'] = $model->getAgentsAvecEnfantEtStructure();
        $data['total_enfants'] = $model->countEnfants();
        $data['gender'] = $model->countByGender();
        $data['ages'] = $model->countTranchesAge();
        $personnelAvecEnfant = $model->countEnfants();
        $data ['total_personnel']= $model1->countAllPersonnel();;
        $results = $model->getStatsByAgeAndSexe();

        // Initialisation de 1 à 18
        $ages = range(1, 18);
        $filles = array_fill(0, 18, 0);
        $garcons = array_fill(0, 18, 0);
        foreach ($results as $row) {
            $index = $row['age'] - 1;

        if ($row['sexe'] === 'f') {
            $filles[$index] = $row['total'];
        } else {
            $garcons[$index] = $row['total'];
        }
        }
        $data ['ageNorm'] = $ages;
        $data ['filles'] = $filles;
        $data ['garcons'] = $garcons;
        $garcons = 0;
        $filles  = 0;

        foreach ($results as $row) {
        if ($row['sexe'] === 'h') {
            $garcons += (int)$row['total'];
       }elseif ($row['sexe'] === 'f') {
            $filles += (int)$row['total'];
       }
       }

        $total = $garcons + $filles;

        $pourcentageGarcons = $total > 0 ? round(($garcons / $total) * 100, 0) : 0;
        $pourcentageFilles  = $total > 0 ? round(($filles / $total) * 100, 0) : 0;

        $data ['pourcentageFilles'] = $pourcentageFilles;
        $data ['pourcentageGarcons'] = $pourcentageGarcons;



        return view('ArbreNoel/statistique',$data);
    }
// Fin de la fonction Statistique

    public function enfant(): string
    {
        return view('ArbreNoel/enfant');
    }

// la fonction connection
    public function connection()
    {
        $email = $this->request->getPost('email');
        $mot_de_passe = $this->request->getPost('mot_de_passe');

        $model = new UsersModel();
        $enfantModel = new EnfantModel();
        $user = $model->getUserEtEnfantData($email);
        $enfant = $enfantModel->where('id_personnel', $user['id_personnel'])->first();

        if (!$user) {
            session()->setFlashdata('error', 'Utilisateur non trouvé.');
            return view('ArbreNoel/authentification');
        }

        // Vérification d’un mot de passe NON crypté
        if ($mot_de_passe !== $user['mot_de_passe']) {
            session()->setFlashdata('error', 'Mot de passe incorrect.');
            return view('ArbreNoel/authentification');
        }

        // Sauvegarde des infos de l'agent
        session()->set([
           'isLoggedIn' => true,
           'user' => $user,
           'status'       => $user['status'], // IMPORTANT
       ]);

    // 4️⃣ TEST ADMIN
        if ($user['status'] === 'admin') {
           if ($enfant) {
           // Il a déjà inscrit un enfant
           return redirect()->to(base_url('/ArbreNoel'))->with('success', 'Vous avez déjà inscrit un enfant.');
           
        }
        return redirect()->to(base_url('/ArbreNoel'));
        }
       // ---- NOUVEAU : Vérifier si l'utilisateur a déjà inscrit un enfant ----
        if ($enfant) {
           // Il a déjà inscrit un enfant
           
           return redirect()->to(base_url('/ArbreNoel'))->with('success', 'Vous avez déjà inscrit un enfant.');
           
        }

       return redirect()->to('/ArbreNoel/inscriptionEnfant');
    }
// fin de la fonction connection

// la fonction inscription enfant
    public function inscriptionEnfant()
    {
        if (!session()->get('isLoggedIn')) {
            return redirect()->to('authentification');
        }

        $user = session()->get('user');

        return view('ArbreNoel/inscriptionEnfant', ['user' => $user]);
    }
    public function inscription(): \CodeIgniter\HTTP\RedirectResponse
    {
        $EnfantModel = new EnfantModel();

    // 1️⃣ Récupération des données du formulaire
        $data = [
            'nom'         => $this->request->getPost('Enf_nom'),
            'prenom'      => $this->request->getPost('Enf_prenom'),
            'age'         => $this->request->getPost('Enf_age'),
            'sexe'        => $this->request->getPost('Enf_sexe'),
            'type_parent' => $this->request->getPost('Enf_tparent'),
        ];

    // 2️⃣ Récupération de l'agent connecté
        $user = session()->get('user');
        $id_personnel = $user['id_personnel'] ?? null;

        if (!$id_personnel) {
            return redirect()->back()->with('error', 'Agent non identifié.');
        }

    // 3️⃣ Vérifier si l'enfant existe déjà
        $enfantExistant = $EnfantModel
            ->where('id_personnel', $id_personnel)
            ->first();
            
        if ($enfantExistant) {
        // ✏️ MODIFICATION
        $EnfantModel->update($enfantExistant['id'], $data);
            if ($user['status'] === 'admin') {
                return redirect()->to(base_url('/ArbreNoel/statistique'))->with('success', 'Modification des informations réussie.');
           }

            return redirect()->to(base_url('/ArbreNoel'))->with('success', 'Modification des informations réussie.');
        } else {
        // ➕ INSCRIPTION
            $data['id_personnel'] = $id_personnel;
            $EnfantModel->insert($data);
        }

        return redirect()->to(base_url('/ArbreNoel'))->with('success', 'Inscription réussie.');
        }
 
    public function supprimer($id)
    {
        $model = new EnfantModel();
        $model->delete($id);
        
        return redirect()->to(base_url('/ArbreNoel/statistique'))->with('success', ' Personnel supprimé avec succès');
    }

    public function modificationEnfant($id)
    {
        $model = new EnfantModel();
        $enfant = $model->getUserEnfantData($id);
        $enfant['status'] = 'admin' ;
        return view('ArbreNoel/inscriptionEnfant',  ['user' => $enfant]);
    }
   
    

}
