<?php
//$Id$ 
//gen openMairie le 06/05/2024 12:08

require_once "../gen/obj/document_type.class.php";

class document_type extends document_type_gen {

    /**
     * Permet de modifier le fil d'Ariane.
     * 
     * @param string $ent Fil d'Ariane.
     *
     * @return string
     */
    public function getFormTitle($ent) {
        // Fil d'ariane par défaut
        $ent = __("Parametrage")." -> ".__("Gestion des documents")." -> ".__("document_type");

        // Si différent de l'ajout
        if($this->getParameter("maj") != 0) {
            // Affiche la clé primaire
            $ent .= " -> ".$this->getVal("document_type");
            // Affiche le code
            $ent .= " ".mb_strtoupper($this->getVal("libelle"), 'UTF-8');
        }

        // Change le fil d'Ariane
        return $ent;
    }


    /**
     * Permet de modifier le fil d'Ariane depuis l'objet pour un sous-formulaire
     * @param string    $ent Fil d'Ariane récupéréré
     * @return          Fil d'Ariane
     */
    function getSubFormTitle($ent) {
        return $this->getFormTitle($ent);
    }


    /**
     * SETTER_FORM - setType.
     *
     */
    function setType(&$form, $maj) {
        parent::setType($form, $maj);
        // Récupération du mode de l'action
        $crud = $this->get_action_crud($maj);

        $form->setType("document_type_categorie", "selectstatic");

        // MODE AJOUTER
        if ($maj == 0 || $maj == 1) {
            $form->setType("document_type", "hidden");
            $form->setType("document_type_categorie", "select");
        }
    }


    /**
     * TRIGGER - triggerajouter.
     *
     * @return boolean
     */
    function triggerajouter($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
        parent::triggerajouter($id, $dnu1, $val, $dnu2);
        // Vérifie si c'est un type appartenant à la catégorie plat'au et si c'est le cas
        // empêche son ajout
        if ($this->f->get_id_document_type_categorie_platau() === $val['document_type_categorie']) {
            $this->addToMessage(__("Les types de documents de catégorie Plat'AU ne peuvent pas être ajoutés."));
            return false;
        }
        return true;
    }

    
    /**
     * TRIGGER - triggermodifier.
     *
     * @return boolean
     */
    function triggermodifier($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
        $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
        // Vérifie si c'est un type appartenant à la catégorie plat'au et si c'est le cas
        // empêche sa modification
        if ($this->f->is_categorie_platau('document_type_categorie', $this->getVal('document_type_categorie'), 'code')) {
            $this->addToMessage(__("Les types de documents de catégorie Plat'AU ne peuvent pas être modifiés."));
            return false;
        }
        // Dans le contexte d'une catégorie "Autres", il est impossible de choisir la catégorie plat'au
        if ($this->f->get_id_document_type_categorie_platau() === $val['document_type_categorie']) {
            $this->addToMessage(__("Le type de document de catégorie Plat'AU ne peut pas être choisi."));
            return false;
        }
        //
        return true;
    }


    /**
     * TRIGGER - triggersupprimer.
     *
     * Vérifie si la categorie supprimée est la cétagorie PLATAU et si c'est le cas
     * empêche la suppression.
     *
     * @return boolean
     */
    function triggersupprimer($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
        $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
        // Vérifie si c'est un type appartenant à la catégorie plat'au et si c'est le cas
        // empêche sa suppression
        if ($this->f->is_categorie_platau('document_type_categorie', $this->getVal('document_type_categorie'), 'code')) {
            $this->addToMessage(__("Les types de documents de catégorie Plat'AU ne peuvent pas être supprimés."));
            return false;
        }
    }


    /**
     * SETTER_FORM - setLib
     *
     * @return void
     */
    function setLib(&$form, $maj) {
        parent::setLib($form, $maj);
        //
        $form->setLib('document_type', __('Type de documents'));
        $form->setLib('document_type_categorie', __('Catégorie de documents'));
    }
}
