<?php

namespace Controllers;

use Bases\Controller;
use Models\Categorie;

class CategorieController extends Controller
{

    /**
     * Traite l'ajout d'une nouvelle catégorie
     */
    public function store()
    {
        // Protection de la route
        if (empty($_SESSION["role"])) {
            $this->rediriger("menus");
        }

        // Validation du champ obligatoire
        if (empty($_POST["nom_ajouter"])) {
            $this->rediriger("employes-menu?nom_categorie");
        }

        // Vérifier si la catégorie existe déjà
        $categories = (new Categorie)->toutCategories();

        foreach ($categories as $categorie) {
            if ($categorie->nom === $_POST["nom_ajouter"]) {
                $this->rediriger("employes-menu?categorie_existe");
            }
        }

        $succes_ajout = (new Categorie)->inserer($_POST["nom_ajouter"]);

        if (!$succes_ajout) {
            $this->rediriger("employes-menu?echec_ajout_categorie");
        }

        $this->rediriger("employes-menu?succes_ajout_categorie");
    }

    /**
     * Traite la modification du nom d'une catégorie
     */
    public function update()
    {
        // Protection de la route
        if (empty($_SESSION["role"])) {
            $this->rediriger("menus");
        }

        // Validation des champs $_POST obligatoire
        if(empty($_POST["id"]) || empty($_POST["nom"])){
            $this->rediriger("employes-menu?modif_infos_requises");
        }

        // Vérifier si la catégorie existe
        $categorie_existe = (new Categorie)->categorieParNom($_POST["Nom"]);

        if($categorie_existe){
            $this->rediriger("employes-menu?categorie_existe");
        }

        $categorie_modifier = (new Categorie)->modifier(
            $_POST["id"], 
            $_POST["nom"]
        );

        if(!$categorie_modifier){
            $this->rediriger("employes-menu?echec_modification_categorie");
        }

        $this->rediriger("employes-menu?succes_modification_categorie");
    }

    /**
     * Traite la suppression d'une catégorie et des plats du menu avec cette catégorie
     */
    public function delete(){
        // Protection de la route
        if(empty($_SESSION["role"])){
            $this->rediriger("menus");
        }

        // Validation du champ POST obligatoire
        if(empty($_POST["id"])){
            $this->rediriger("employes-menu?supp_infos_requises");
        }

        $categorie_supprimer = (new Categorie)->supprimer($_POST["id"]);

        if(!$categorie_supprimer){
            $this->rediriger("employes-menu?erreur_suppression_categorie");
        }

        $this->rediriger("employes-menu?succes_suppression_categorie");
    }
}
