<?php
//$Id$ 

require_once ("../obj/demandeur.class.php");

/*
 * Classe qui hérite de la classe demandeur
 */
class petitionnaire extends demandeur {

    function petitionnaire($id,&$db,$debug) {
        //On active les nouvelles actions
        $this->activate_class_action = true;
        $this->constructeur($id,$db,$debug);
    }// fin constructeur

    // {{{ Gestion de la confidentialité des données spécifiques
    
    /**
     * Définition des actions disponibles sur la classe.
     *
     * @return void
     */
    function init_class_actions() {

        parent::init_class_actions();

        // ACTION - 001 - modifier
        // Modifie la condition et le libellé du bouton modifier
        $this->class_actions[1]["condition"] = array("is_not_frequent");

        // ACTION - 100 - non_frequent
        // Finalise l'enregistrement
        $this->class_actions[100] = array(
            "identifier" => "non_frequent",
            "portlet" => array(
                "type" => "action-direct",
                "libelle" => _("Marquer non frequent"),
                "order" => 100,
                "class" => "radiation-16",
            ),
            "view" => "formulaire",
            "method" => "set_non_frequent",
            "permission_suffix" => "modifier_frequent",
            "condition" => array("is_frequent"),
        );

        // ACTION - 110 - recuperer_frequent
        // Finalise l'enregistrement
        $this->class_actions[110] = array(
            "identifier" => "recuperer_frequent",
            "view" => "formulaire",
            "method" => "modifier",
            "button" => "valider",
            "permission_suffix" => "modifier",
        );
    }

    //}}}
    
    /**
     * Retourne true si pétitionnaire frequent false sinon.
     *
     * @return boolean retourne true si frequent false sinon.
     */
    function is_frequent() {
        if($this->getVal("frequent") == 't') {
            return true;
        }
        return false;
    }

    /**
     * Retourne false si pétitionnaire frequent true sinon.
     *
     * @return boolean retourne false si frequent true sinon.
     */
    function is_not_frequent() {
        return !$this->is_frequent();
    }

    /**
     * TREATMENT - set_non_frequent.
     * 
     * Cette methode permet de passer le pétitionnaire en non fréquent.
     *
     * @return boolean true si maj effectué false sinon
     */
    function set_non_frequent($val) {
        // Cette méthode permet d'exécuter une routine en début des méthodes
        // dites de TREATMENT.
        $this->begin_treatment(__METHOD__);

        if($this->getVal("frequent") == 't') {
            $this->correct = true;
            $this->valF["frequent"] = false;
        
            $res = $this->f->db->autoExecute(
                        DB_PREFIXE.$this->table, 
                        $this->valF, 
                        DB_AUTOQUERY_UPDATE,
                        $this->clePrimaire."=".$this->getVal($this->clePrimaire)
                    );
            if ($this->f->isDatabaseError($res, true)) {
                // Appel de la methode de recuperation des erreurs
                $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
                $this->correct = false;
                // Termine le traitement
                return $this->end_treatment(__METHOD__, false);
            } else {
                $this->addToMessage(_("Mise a jour effectuee avec succes"));
                return $this->end_treatment(__METHOD__, true);
            }

        } else {
            $this->addToMessage(_("Element deja frequent"));
        }

        // Termine le traitement
        return $this->end_treatment(__METHOD__, false);
    }

    /*
     * Cache le champ type_demandeur.
     */
    function setType(&$form,$maj) {
        parent::setType($form,$maj);
    // Champs disabled pour la modif de petitionnaires frequents 

    if ($maj==110){ //modifier
        if($this->getVal('frequent') == 't') {
            $form->setType('qualite','selecthiddenstatic');
            $form->setType('particulier_nom','static');
            $form->setType('particulier_prenom','static');
            $form->setType('particulier_date_naissance','datestatic');
            $form->setType('particulier_commune_naissance','static');
            $form->setType('particulier_departement_naissance','static');
            $form->setType('personne_morale_denomination','static');
            $form->setType('personne_morale_raison_sociale','static');
            $form->setType('personne_morale_siret','static');
            $form->setType('personne_morale_categorie_juridique','static');
            $form->setType('personne_morale_nom','static');
            $form->setType('personne_morale_prenom','static');
            $form->setType('numero','static');
            $form->setType('voie','static');
            $form->setType('complement','static');
            $form->setType('lieu_dit','static');
            $form->setType('localite','static');
            $form->setType('code_postal','static');
            $form->setType('bp','static');
            $form->setType('cedex','static');
            $form->setType('pays','static');
            $form->setType('division_territoriale','static');
            $form->setType('telephone_fixe','static');
            $form->setType('telephone_mobile','static');
            $form->setType('fax','static');
            $form->setType('indicatif','static');
            $form->setType('courriel','static');
            $form->setType('notification','checkboxstatic');
            $form->setType('frequent','checkboxstatic');
            $form->setType('particulier_civilite','selecthiddenstatic');
            $form->setType('personne_morale_civilite','selecthiddenstatic');
        }
    }// fin modifier
        
        $form->setType('type_demandeur', 'hidden');

    }
    /*
    * Ajout du fielset
    * Add fieldset
    */
    function setLayout(&$form, $maj){
        //
        $form->setBloc('particulier_civilite','D',"", "particulier_fields");
        
            $form->setBloc('particulier_civilite','D',"");
            $form->setBloc('particulier_civilite','F');
            if($this->getVal('frequent') != 't' OR $maj==0) {
                $form->setBloc('particulier_nom','D',"","group ".($maj<2 ? "search_fields":""));
            } else {
                $form->setBloc('particulier_nom','D',"","group");
            }
            $form->setBloc('particulier_prenom','F');
            
            $form->setFieldset('particulier_date_naissance','D',_("Etat civil"),"group");
                $form->setBloc('particulier_date_naissance','D',"","group");
                $form->setBloc('particulier_commune_naissance','F');
            $form->setFieldset('particulier_departement_naissance','F');
            
            
        $form->setBloc('particulier_departement_naissance','F');
        
        $form->setBloc('personne_morale_denomination','D',"", "personne_morale_fields");
        
            $form->setBloc('personne_morale_denomination','D',"","group");
                if($this->getVal('frequent') != 't' OR $maj==0) {
                    $form->setBloc('personne_morale_denomination','D',"", ($maj<2 ? "search_fields":""));
                } else {
                    $form->setBloc('personne_morale_denomination','D',"", "");
                }
                $form->setBloc('personne_morale_denomination','F');
            $form->setBloc('personne_morale_raison_sociale','F');
            
            $form->setFieldset('personne_morale_siret','D',_("Personne morale"));

                $form->setBloc('personne_morale_siret','D',"");
                $form->setBloc('personne_morale_siret','F');
                
                $form->setBloc('personne_morale_categorie_juridique','D',"");
                $form->setBloc('personne_morale_categorie_juridique','F');
                
                $form->setBloc('personne_morale_civilite','D',"");
                $form->setBloc('personne_morale_civilite','F');
                
                $form->setBloc('personne_morale_nom','D',"", "group");
                $form->setBloc('personne_morale_prenom','F');

            $form->setFieldset('personne_morale_prenom','F');
            
        $form->setBloc('personne_morale_prenom','F');
    
        $form->setFieldset('numero','D',_("Adresse"), "");
        
            $form->setBloc('numero','D',"","group");
            $form->setBloc('voie','F');
            
            $form->setBloc('complement','D',"");
            $form->setBloc('complement','F');
            
            $form->setBloc('lieu_dit','D',"","group");
            $form->setBloc('localite','F');
            
            $form->setBloc('code_postal','D',"","group");
            $form->setBloc('cedex','F');
            
            $form->setBloc('pays','D',"", "","group");
            $form->setBloc('division_territoriale','F');
        $form->setFieldset('division_territoriale','F');

        $form->setFieldset('telephone_fixe','D',_("Coordonnees"), "");
            $form->setBloc('telephone_fixe','D',"", "group");
            $form->setBloc('indicatif','F');

            $form->setBloc('fax','D',"", "group");
            $form->setBloc('notification','F');

        $form->setFieldset('notification','F');
                    
    }

    function setLib(&$form,$maj) {
        //libelle des champs
        parent::setLib($form, $maj);
        $form->setLib('frequent',"<span class=\"om-form-button copy-16\"
                      title=\""._("Sauvegarder ce petitionnaire")."\">"._("Sauvegarder (petitionnaire frequent)")."</span>");

    }
    /*
     * Met le champ type_demandeur à delegataire par défaut
     */
    function setVal(&$form, $maj, $validation, &$db) {
        parent::setVal($form, $maj, $validation, $db);
        $form->setVal("type_demandeur","petitionnaire");
    }
    /*
     * Met le champ type_demandeur à delegataire par défaut
     */
    function setValsousformulaire(&$form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire, &$dnu1 = null, $dnu2 = null) {
       parent::setValsousformulaire($form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire, $dnu1, $dnu2);
        $form->setVal("type_demandeur","petitionnaire");
        if($maj == 0) {
            // Récupération des infos du demandeur passé en paramètre
            if($this->getParameter('idx_demandeur') != "") {
                include '../sql/pgsql/petitionnaire.form.inc.php';
                $sql = "SELECT ".implode(", ",$champs)." FROM ".DB_PREFIXE."demandeur ".
                        "WHERE demandeur=".$this->getParameter('idx_demandeur');
                $res = $this->db->query($sql);
                $this->f->addToLog("setValSousFormulaire() : db->query(\"".$sql."\")");
                if ( database::isError($res)){
                    die();
                }
                $row = & $res->fetchRow(DB_FETCHMODE_ASSOC);
                foreach ($row as $key => $value) {
                    $form->setVal($key, $value);
                }
                $form->setVal("frequent","f");
            }
        }
    }

    /**
     * Surcharge du bouton pour empécher l'utilisateur de modifier un fréquent
     * Et ajout d'un bouton pour vider le formulaire
     */
    function boutonsousformulaire($datasubmit, $maj, $val=null) {
        if($maj == 0 OR $this->getVal('frequent') != 't') {
            if (!$this->correct) {
                //
                switch ($maj) {
                    case 0:
                        $bouton = _("Ajouter");
                        break;
                    case 1:
                        $bouton = _("Modifier");
                        break;
                    case 2:
                        $bouton = _("Supprimer");
                        break;
                }
                //
                echo "<input type=\"button\" value=\"".$bouton."\" ";
                echo "onclick=\"affichersform('".get_class($this)."', '$datasubmit', this.form);\" ";
                echo "class=\"om-button\" />";
            }
        }
        if(!$this->correct) {
            echo '<span class="om-form-button erase-petitionnaire delete-16" '. 
                        'title="Supprimer le contenu">'._("Vider le formulaire").'</span>';
        }
    }
}// fin classe
?>