<?php

class DOA_Societe
{

    public static function &JavascriptCheckAllCheckboxes($TYPE)
    {
        $js = 'var formCourant = document.forms[\'' . DOA_Societes_Session::id_FORM_SOCIETE . '\'];
				var nbElement = formCourant.elements.length;
				var debug = 0;
				for (var i = 0 ; i < nbElement ; i++ ) {
					var e = formCourant.elements[i];
					if (e.type == \'checkbox\' && e.id != \'\' && e.disabled == false & e.id.indexOf(\'' . $TYPE . '\') > -1)
						e.checked = this.checked;
				}';
        return $js;
    }

    public static function &BuildXmlSociete($idDoa, $action)
    {
        $array = null;
        $infoSociete = null;
        $infoTmp = null;
        $array['ide']['!action'] = $action;
        
        $statut = DOA::GetStatut($idDoa);
        
        if ($reqSqlSociete = SqlDoaSociete::rqGetDoaSociete($idDoa)->TrouveTous()) {
            foreach ($reqSqlSociete as & $value) {
                if (Param::canCreateDoaModele())
                    $result = array(
                        '!code' => $value['CODE'],
                        '!supprimer_societe' => (DOA_Referentiel::STATUT_INITIAL == $statut || DOA_Referentiel::STATUT_INITIALISATION == $statut) ? 'if(window.confirm("' . cnv_to_javascript(trad("Confirmez vous la suppression de cette société ?")) . '")){CallUrlAsync("DOA_Societe.php","action=SupprimerSociete&idDoa=' . urlencode($value['ID_DOA']) . '&type=' . urlencode($value['TYPE_GS']) . '&code=' . urlencode($value['CODE']) . '");};' : '',
                        '!tooltip_suppression' => trad('Supprimer')
                    );
                else
                    $result = array(
                        '!code' => $value['CODE']
                    );
                
                if ($value['TYPE_GS'] == 'S') {
                    $result['!info'] = trad('Société');
                    $result['!libelle'] = DOA_Societe::getSocieteByCode($value['CODE'], 'RAIS_SOC');
                    
                    $infoSociete[] = $result;
                } else if ($value['TYPE_GS'] == 'G') {
                    $result['!info'] = trad('Groupe');
                    $result['!libelle'] = DOA_Societe::getGroupeSociete($value['CODE'], 'RS_GRP');
                    
                    $infoSociete[] = $result;
                }
            }
            $array['ide']['fiche']['DOA_SOCIETE'] = & $infoSociete;
        }
        
        if (DOA_Referentiel::STATUT_INITIAL == $statut || DOA_Referentiel::STATUT_INITIALISATION == $statut)
        {
            if (Param::canCreateDoaModele()) {
                $array['ide']['fiche']['ajouter_societe'] = array(
                    '!onclick' => 'window.open(\'DOA_Societe.php?action=AjouterSociete&idDoa=' . $idDoa . '\',\'win_pop\',\'width=500,height=200\');',
                    '!tooltip' => Trad('Ajouter société')
                );
            }
        }
        
        if ($action == 'AjouterSociete') {
            
            $DIV_SOCIETE = 'div_societe';
            $DIV_GROUPE = 'div_groupe';
            
            $array['ide']['fiche']['!dev_societe'] = DOA_Societe::JavascriptChangeOngletSociete($DIV_SOCIETE);
            $array['ide']['fiche']['!dev_groupe'] = DOA_Societe::JavascriptChangeOngletSociete($DIV_GROUPE);
            $array['ide']['fiche']['!id_form'] = DOA_Societes_Session::id_FORM_SOCIETE;
            $array['fenetre']['!titre'] = trad('Ajouter Société');
            $array['ide']['fiche']['!ajout_societe'] = (DOA_Referentiel::STATUT_INITIAL == $statut || DOA_Referentiel::STATUT_INITIALISATION == $statut) ? 'CallUrl(\'DOA_Societe.php?action=EnregistrerSociete&idDoa=' . $idDoa . '\');window.scrollTo(0,0);' : '';
            
            $infoSociete = array();
            
            if ($reqSqlSocieteUser = SqlSociete::rqPopupGetAllSocieteForUser($infoSociete, true)->TrouveTous()) {
                $infoSocieteUser = null;
                foreach ($reqSqlSocieteUser as & $value) {
                    $GROUPE = DOA_Societe::getSocieteByCode($value['CODE_STE'], 'GROUPE');
                    $infoSocieteUser[] = array(
                        'RAIS_SOC' => array(
                            '!valeur' => $value['RAIS_SOC'],
                            '!id' => DOA_Societes_Session::id_RAIS_SOC . '|' . $value['CODE_STE'],
                            '!onclick' => 'Traite("DOA_Societe.php?action=EnregistrerSessionSociete",this);',
                            '!actif' => DOA_Societe::getInfoDoaSoc($idDoa, 'S', $value['CODE_STE'])
                        ),
                        'CODE_STE' => array(
                            '!valeur' => $value['CODE_STE'],
                            '!id' => DOA_Societes_Session::id_CODE_STE . '|' . $value['CODE_STE']
                        ),
                        'GROUPE' => array(
                            '!valeur' => DOA_Societe::getGroupeSociete($GROUPE, 'RS_GRP'),
                            '!id' => DOA_Societes_Session::id_GROUPE . '|' . $GROUPE,
                            '!onclick' => 'Traite("DOA_Societe.php?action=EnregistrerSessionSociete",this);',
                            '!actif' => DOA_Societe::getInfoDoaSoc($idDoa, 'G', $GROUPE)
                        )
                    );
                }
                $array['ide']['fiche']['SOCIETE'] = & $infoSocieteUser;
            }
            
            $array['ide']['fiche']['!oncheckAllSociete'] = DOA_Societe::JavascriptCheckAllCheckboxes('CODE_STE');
            $array['ide']['fiche']['!oncheckAllGroupe'] = DOA_Societe::JavascriptCheckAllCheckboxes('GROUPE');
        }
        return $array;
    }

    public static function SupprimerSociete($idDoa, $type, $code)
    {
        $SqlListe = new PileSql(DB_OXASQLDB);
        $SqlListe->AddRequeteSql(SqlDoaSociete::rqDOA_SupprimeSociete($idDoa, $type, $code));
        
        return ($SqlListe->Commit());
    }

    public static function getGroupeSociete($code = null, $champ)
    {
        $reqSqlGroupeSociete = SqlDoaSociete::rqGetDoaGroupeSociete($code)->Trouve1();
        return $reqSqlGroupeSociete[$champ];
    }

    public static function getSocieteByGoupe($groupe, $champ)
    {
        $reqSqlSocieteByGroupe = SqlDoaSociete::rqGetSocieteByGroupe($groupe)->TrouveTous();
        return $reqSqlSocieteByGroupe[$champ];
    }

    public static function getSocieteByCode($codeSte, $champ)
    {
        $reqSqlSocieteByCode = SqlDoaSociete::rqGetSocieteByCode($codeSte)->Trouve1();
        return $reqSqlSocieteByCode[$champ];
    }

    public static function getInfoSuiviDoa($idDoa, $champ)
    {
        $reqSqlInfoSuiviDoa = SqlDoa::rqGetInfoSuiviDoa($idDoa)->Trouve1();
        return $reqSqlInfoSuiviDoa[$champ];
    }

    public static function getInfoDoaSoc($idDoa, $typeGs, $Code)
    {
        $reqSqlDoaSoc = SqlDoaSociete::rqGetDoaSoc($idDoa, $typeGs, $Code)->Trouve1();
        return $reqSqlDoaSoc['CODE'];
    }

    static function saveSessionSociete($rs, $code)
    {
        $cl = new DOA_Societes_Session();
        $cl->setValueSociete($rs, $code);
    }

    public static function &JavascriptChangeOngletSociete($DIV_ONGLET)
    {
        $js = '';
        if ($DIV_ONGLET == 'div_societe') {
            $js = 'document.getElementById("div_societe").style.display="block";
					document.getElementById("div_groupe").style.display="none";
					document.getElementById("onglet_societe").className = "select";
					document.getElementById("onglet_groupe").className = "";';
        }
        if ($DIV_ONGLET == 'div_groupe') {
            $js = 'document.getElementById(\'div_societe\').style.display="none";
					document.getElementById(\'div_groupe\').style.display="block";
					document.getElementById(\'onglet_groupe\').className = "select";
					document.getElementById("onglet_societe").className = "";';
        }
        return $js;
    }
}