<?php

namespace Controllers;

use Bases\Controller;
use Models\Categorie;

class categorieController extends Controller
{

    /**
     * Traite la création d'une catégorie
     *
     * @return void
     */
    public function store()
    {
        // Paramètres présents
        if (
            empty($_POST["nom"])
        ) {
            $this->rediriger("gestion?infos_requises");
        }

        // Sauvegarde des informations du compte
        $modele_categorie = new Categorie;
        $succes = $modele_categorie->inserer(
            $_POST["nom"]
        );

        if (!$succes) {
            $this->rediriger("gestion?echec_creation_categorie");
        }

        $this->rediriger("gestion?succes_creation_categorie");
    }

    /**
     * Affiche le formulaire de modification
     */
    public function edit()
    {

        // Valider
        if (empty($_GET["id"])) {
            $this->rediriger("gestion?id_inexistant");
        }

        $this->vue("gestion/editCategorie", [
            "categorie" => (new Categorie)->categorieParId($_GET["id"]),
        ]);
    }

    /**
     * Traite le formulaire de modification
     */
    public function update()
    {

        // Valider
        if (empty($_POST["id"])) {
            $this->rediriger("gestion?id_inexistant");
        }

        // Paramètres présents
        if (
            empty($_POST["id"]) ||
            empty($_POST["nom"])
        ) {
            $this->rediriger("categorie-modifier?infos_requises&id=" . $_POST["id"]);
        }

        // Sauvegarde des informations du compte
        $modele_categorie = new Categorie;
        $succes = $modele_categorie->modifier(
            $_POST["id"],
            $_POST["nom"]
        );

        if (!$succes) {
            $this->rediriger("gestion?echec_modification_utilisateur");
        }

        $this->rediriger("gestion?succes_modification_utilisateur");
    }

    /**
     * Traite la suppression d'une categorie
     *
     */
    public function destroy()
    {

        // Protection de la route
        if (empty($_SESSION["utilisateur_id"])) {
            $this->rediriger("compte-connexion");
        }

        // Valider
        if (empty($_GET["id"])) {
            $this->rediriger("gestion?id_inexistant");
        }

        $succes = (new Categorie)->supprimer($_GET["id"]);

        if (!$succes) {
            $this->rediriger("gestion?echec_suppression_categorie");
        }

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