<?php

/**
 * Classe de gestion des formulaire metier
 */
class Formulaire
{

    public $buf_user = null;

    /**
     * Constructeur de la classe
     *
     * @param
     *            array buf_users
     */
    function __construct()
    {
        global $buf_user;
        $this->buf_user = & $buf_user;
        $this->CODE_SOC = $_SESSION['Session_SocUsr'];
        $this->CODE_CTR = $_SESSION['Session_CodeCtrEmetteur'];
        $this->CODE_USR = $_SESSION['Session_Login'];
    }

    /**
     * Function permettant de rappatrier l'ensemble des formulaire simples accessibles par un utilisateurs
     *
     * @return array liste des formulaires
     */
    function GetFormulaireSimple()
    {
        $reqSql = SqlPanier::rqGetFormulaireSimple_1($this->CODE_USR);
        if ($_SESSION['Session_UsrMultiSoc']) { // Totale visibilité hors mis la gestion de date
                                                    // Pas de filtre sur la societe
        }        // Visibilité uniquement des formulaires de la societe
        else
            $reqSql = SqlPanier::rqGetFormulaireSimple_2($reqSql->TexteSql());
        return $reqSql->TrouveTous();
    }

    /**
     *
     * Function permettant d'obtenir le record relatif a un code formulaire
     *
     * @param char $CODE_FM
     * @return array tableau de resultat
     *        
     */
    public static function &GetRecFormulaire(& $CODE_FM)
    {
        return SqlPanier::rqGetRecFormulaire($CODE_FM)->Trouve1();
    }

    /**
     * Function permettant de rappatrier l'ensemble des formulaire accessibles par un utilisateurs
     *
     * @return array liste des formulaires
     */
    public static function &GetFormulaireMetier()
    {
        return SqlPanier::rqGetFormulaireMetier($this)->TrouveTous();
    }

    /**
     * Permet de savoir s'il existe des favori pour l'utilisateur de ce formulaire
     *
     * @param char $CODE_FM
     *            code formulaire
     * @return boolean existe ou non
     *        
     */
    public static function IsFavorExiste(& $CODE_FM)
    {
        return (SqlPanier::rqIsFavorExiste($CODE_FM)->Trouve1() ? 1 : 0);
    }

    /**
     * GetMetierLib
     *
     * @param char $CODE_FM
     *            code formulaire
     * @param char $CODE_MET
     *            code metier
     *            
     * @return libelle du metier
     *        
     */
    public static function GetMetierLib(& $CODE_FM, & $CODE_MET)
    {
        if ($result = SqlPanier::rqGetMetierLib($CODE_FM, $CODE_MET)->Trouve1())
            return $result['LIB_MET'];
        else
            return '';
    }

    /**
     * GetMetierComment
     *
     * retourne le commentaire lié au code métier $CODE_MET du formulaire métier $CODE_FM
     */
    function GetMetierComment($CODE_FM, $CODE_MET)
    {
        if ($result = SqlPanier::rqGetMetierComment($CODE_FM, $CODE_MET)->Trouve1())
            return $result['CONTMEMO'];
        else
            return '';
    }

    /**
     * GetFormulaireLib
     */
    function GetFormulaireLib($CODE_FM)
    {
        if ($result = SqlPanier::rqGetFormulaireLib($CODE_FM)->Trouve1())
            return $result['LIB_FM'];
        else
            return '';
    }

    /**
     * GetFormulaireComment
     * retourne le commentaire lié au formulaire métier $CODE_FM
     */
    function GetFormulaireComment($CODE_FM)
    {
        if ($result = SqlPanier::rqGetFormulaireComment($CODE_FM)->Trouve1())
            return $result['CONTMEMO'];
        else
            return '';
    }

    /**
     * GetSpecialiteLib
     *
     * @param char $CODE_FM
     *            code formulaire
     * @param char $CODE_MET
     *            code metier
     * @param char $CODE_SPEC
     *            code de la specialité du metier
     *            
     * @return libelle de la specialité
     *        
     */
    function GetSpecialiteLib($CODE_FM, $CODE_MET, $CODE_SPEC)
    {
        if ($result = SqlPanier::rqGetSpecialiteLib($CODE_FM, $CODE_MET, $CODE_SPEC)->Trouve1())
            return $result['LIB_SPE'];
        else
            return '';
    }

    function GetSpecialiteComment($CODE_FM, $CODE_MET, $CODE_SPEC)
    {
        if ($result = SqlPanier::rqGetSpecialiteComment($CODE_FM, $CODE_MET, $CODE_SPEC)->Trouve1())
            return $result['CONTMEMO'];
        else
            return '';
    }

    /**
     * Function permattant de revoyer un array des metiers d'un formulaire
     *
     * @param char $CODE_FM
     *            code du formualire
     * @param boolean $mode
     *            true / false mode favori ou non
     *            
     * @return array Array de tous les metiers du formulaire
     */
    function &GetMetiers($CODE_FM, $mode = false)
    {
        if ($mode)
            $reqSql = SqlPanier::rqGetMetiersOnlyFavoriByFormMet($CODE_FM);
        else
            $reqSql = SqlPanier::rqGetMetiersByFormMet($CODE_FM);
        
        return $reqSql->TrouveTous();
    }

    /**
     * Function permettant de renvoyer toutes les specialites d'un metier d'un formulaire
     *
     * @param char $CODE_FM
     *            code du formulaire
     * @param char $CODE_MET
     *            code du metier du formulaire
     * @param char $mode
     *            True si favori
     *            
     * @return array Array de toutes les specilaites d'un metizer d'un formulaire
     */
    function &GetSpecialite($CODE_FM, $CODE_MET, $mode = false)
    {
        if ($mode)
            $reqSql = SqlPanier::rqGetSpecialitesOnlyFavoriByFormMetAndMet($CODE_FM, $CODE_MET);
        else
            $reqSql = SqlPanier::rqGetAllSpecialitesByFormMetAndMet($CODE_FM, $CODE_MET);
        
        return $reqSql->TrouveTous();
    }

    /**
     * Function permettant de renvoyer toutes les informations des articles d'un specialité
     *
     * @param char $CODE_FM
     *            code formulaire
     * @param char $CODE_MET
     *            code metier
     * @param char $CODE_SPE
     *            code specialité
     *            
     * @return array liste
     */
    function &GetArticle($CODE_FM, $CODE_MET, $CODE_SPE, $CODE_ART = '')
    {
        return SqlPanier::rqGetArticle($CODE_FM, $CODE_MET, $CODE_SPE, $CODE_ART)->TrouveTous();
    }
}
