1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
| <?php
class Application_Model_DbTable_Etudiant extends Zend_Db_Table_Abstract
{
protected $_name = 'th_etudiant_etu';
protected $_primary = 'etu_id_candidat';
/**
* Récupère toutes les infos relatives à un étudiant
* @param Integer $iduser : Identifiant de l'étudiant
*/
public function infosEtudiant($iduser)
{
$sql = "
SELECT p.prs_nom, p.prs_prenom, p.prs_adrel, p.prs_telephone,
e.etu_date_naissance, e.etu_adresse, e.etu_code_postal,
c.cmn_id AS id_commune_residence,
c.cmn_nom AS commune_residence,
etb.etb_id, etb.etb_nom, etb.etb_adresse, etb.etb_code_postal, etb.etb_telephone,
c1.cmn_id AS id_commune_etablissement,
c1.cmn_nom AS nom_commune_etablissement,
c1.cmn_nom AS commune_etablissement,
te.te_id, te.te_libelle,
ccr.ccr_libelle,
dsc.dsc_nom
FROM th_etudiant_etu AS e
INNER JOIN te_personne_prs AS p ON p.prs_id = e.etu_id_candidat
INNER JOIN te_concours_ccr AS ccr ON ccr.ccr_id = e.etu_id_concours
INNER JOIN te_discipline_dsc AS dsc ON dsc.dsc_id = ccr.ccr_id_discipline
LEFT OUTER JOIN tr_commune_cmn AS c ON c.cmn_id = e.etu_id_commune_residence
LEFT OUTER JOIN te_etablissement_etb As etb ON etb.etb_id = e.etu_id_etablissement_origine
LEFT OUTER JOIN tr_commune_cmn AS c1 ON c1.cmn_id = etb.etb_id_commune
LEFT OUTER JOIN tr_type_etablissement_te AS te ON te.te_id = etb.etb_id_type_etablissement
WHERE e.etu_id_candidat = ?
";
return $this->_db->fetchRow($sql, (int) $iduser);
} // Fin public function infosEtudiant($login)
/**
* Donne le stage auquel est éventuellement inscrit l'étudiant
* @param String $iduser : Identifiant de l'étudiant connecté
* @return Zend_Db_Table_Row_Abstract : Le stage ou NULL
*/
public function inscritStage($iduser)
{
$sql = "
SELECT p.prs_nom, p.prs_prenom,
ssn.ssn_id, ssn_code, ssn.ssn_libelle,
DATE_FORMAT(ssn.ssn_date_debut, '%d/%m/%Y') AS ssn_date_debut,
DATE_FORMAT(ssn.ssn_date_fin, '%d/%m/%Y') AS ssn_date_fin,
e.etb_nom, c.cmn_nom, d.dpt_numero
FROM te_personne_prs AS p
LEFT OUTER JOIN tj_cnd_inscrire_ssn_cis AS cis ON cis_id_candidat = p.prs_id
LEFT OUTER JOIN te_session_ssn AS ssn ON ssn.ssn_id = cis.cis_id_session
LEFT JOIN th_stage_stg AS stg ON stg.stg_id_session = ssn.ssn_id
LEFT JOIN te_etablissement_etb AS e ON e.etb_id = stg.stg_id_etablissement
LEFT JOIN tr_commune_cmn AS c ON c.cmn_id = e.etb_id_commune
LEFT JOIN tr_departement_dpt AS d ON d.dpt_id = c.cmn_id_departement
WHERE p.prs_id = ?
";
return $this->_db->fetchRow($sql, (int) $iduser);
} // Fin public function inscritStage($login)
/**
* Vérifie si un étudiant existe dans la BDD
* @param String $nom
* @param String $prenom
* @param Date $datenaissance
*/
public function identifierEtudiant($nom, $prenom, $datenaissance)
{
$sql = "
SELECT u.uti_login
FROM th_etudiant_etu AS e
INNER JOIN th_utilisateur_uti AS u ON u.uti_id_personne = e.etu_id_candidat
INNER JOIN te_personne_prs AS p ON p.prs_id = u.uti_id_personne
WHERE p.prs_nom = :nom
AND p.prs_prenom = :prenom
AND e.etu_date_naissance = :datenaissance
";
return $this->_db->fetchRow($sql,
array( 'nom'=>$nom,
'prenom'=>$prenom,
'datenaissance'=>$datenaissance
)
);
} // Fin public function identifierEtudiant($nom, $prenom, $datenaissance)
/**
* Inscrit un étudiant à un stage
* @param Integer $iduser : Identifiant de l'étudiant
* @param integer $idsession : Identifiant de la session de stage
*/
public function inscrire($iduser, $idsession)
{
$sql = "
INSERT INTO tj_cnd_inscrire_ssn_cis (cis_id_candidat, cis_id_session)
VALUES
(
:iduser,
:session
)
";
$stmt = $this->_db->query($sql, array( 'iduser' => (int) $iduser,
'session' => (int) $idsession
)
);
}
/**
* Supprime l'inscription d'un étudiant à un stage
* @param $iduser : Identifiant de l'étudiant
*/
public function desinscrire($iduser)
{
$sql = "
DELETE c
FROM tj_cnd_inscrire_ssn_cis AS c
WHERE cis_id_candidat = :iduser
";
$stmt = $this->_db->query($sql, array('iduser' => (int) $iduser));
}
public function listeEtudiants()
{
$sql = "
SELECT p.prs_id, p.prs_nom, p.prs_prenom, p.prs_adrel, p.prs_telephone,
e.etu_adresse, e.etu_code_postal,
c.cmn_nom,
cr.ccr_libelle
FROM te_personne_prs p
INNER JOIN th_etudiant_etu e ON e.etu_id_candidat = p.prs_id
LEFT OUTER JOIN tr_commune_cmn c ON c.cmn_id = e.etu_id_commune_residence
INNER JOIN te_concours_ccr cr ON cr.ccr_id = e.etu_id_concours
";
return $this->_db->fetchAll($sql);
}
public function ajouterEtudiant($data)
{
// Ajout dans la table des personnes
$data_personne = array();
$data_personne['prs_nom'] = $data['prs_nom'];
$data_personne['prs_prenom'] = $data['prs_prenom'];
if(isset($data_personne['prs_adrel']))
{
$data_personne['prs_adrel'] = $data['prs_adrel'];
}
if(isset($data_personne['prs_telephone']))
{
$data_personne['prs_telephone'] = $data['prs_telephone'];
}
$personne = new Application_Model_DbTable_Personne();
$id_personne = $personne->ajouterPersonne($data_personne);
// Ajout dans la table des utilisateurs
$date = Date('dmY');
$data_utilisateur = array();
$data_utilisateur['uti_id_personne'] = (int)$id_personne;
$data_utilisateur['uti_id_type_utilisateur'] = 3;
$data_utilisateur['uti_login'] = substr($data['prs_prenom'], 0, 1).$data['prs_nom'];
$data_utilisateur['uti_mot_passe'] = substr($data['prs_prenom'], 0, 1).substr($date, 0, 4).substr($date, 6, 2).substr($data['prs_nom'],0,1);
$utilisateur = new Application_Model_DbTable_Utilisateur;
$utilisateur->ajouterUtilisateur($data_utilisateur);
// Ajout dans la table des candidats
$sql = "
INSERT INTO th_candidat_cnd(cnd_id_utilisateur)
VALUES(:id)
";
$this->_db->query($sql, array('id' => (int) $id_personne));
// Ajout dans la table des étudiants
$data_etudiant = array();
$data_etudiant['etu_id_candidat'] = (int)$id_personne;
$data_etudiant['etu_id_concours'] = (int)$data['etu_id_concours'];
$data_etudiant['etu_date_naissance'] = $data['etu_date_naissance'];
if(isset($data_etudiant['etu_id_etablissement_origine']))
{
$data_etudiant['etu_id_etablissement_origine'] = (int)$data['etu_id_etablissement_origine'];
}
if(isset($data_etudiant['etu_id_commune_residence']))
{
$data_etudiant['etu_id_commune_residence'] = (int)$data['etu_id_commune_residence'];
}
if(isset($data_etudiant['etu_adresse']))
{
$data_etudiant['etu_adresse'] = $data['etu_adresse'];
}
if(isset($data_etudiant['etu_code_postal']))
{
$data_etudiant['etu_code_postal'] = $data['etu_code_postal'];
}
$this->insert($data_etudiant);
}
public function obtenirEtudiant($id)
{
$sql = "
SELECT p.prs_nom, p.prs_prenom, p.prs_adrel, p.prs_telephone,
e.etu_id_candidat, e.etu_id_concours, e.etu_id_etablissement_origine,
e.etu_id_commune_residence, e.etu_adresse, e.etu_code_postal, e.etu_date_naissance,
ccr.ccr_id, c.cmn_nom, etb.etb_nom
FROM th_etudiant_etu e
INNER JOIN te_personne_prs p ON p.prs_id = e.etu_id_candidat
LEFT OUTER JOIN te_concours_ccr ccr ON ccr.ccr_id = e.etu_id_concours
LEFT OUTER JOIN tr_commune_cmn c ON c.cmn_id = e.etu_id_commune_residence
LEFT OUTER JOIN te_etablissement_etb etb ON etb.etb_id = e.etu_id_etablissement_origine
WHERE e.etu_id_candidat = :id
";
$row = $this->_db->fetchRow($sql, array('id' => (int)$id));
if (!$row)
{
throw new Exception("Impossible de trouver l'étudiant $id !");
}
return $row;
}
} |
Partager