220-just98.justhost.com ESMTP Exim 4.82 #2 Tue, 04 Nov 2014 07:49:47 -0700 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. * @param unknown $IdEmp */ public function nb_jour_conge_pris($IdConge){ // création d'un adapteur de requete $adapter = $this->getAdapter(); // utilisation de l'adapter $requete = $adapter->select()->from("conge")->where("`IdConge`=$IdConge"); // execution de la requete $resultat = $adapter->fetchRow($requete); // variable pour les calculs $dateDebut = new Zend_Date($resultat["DateDebut"]); // date de debut de congé $dateRetour = new Zend_Date($resultat["DateRetour"]); // date de retour de congé $jourSemaineDebut = $this->nom_jour($dateDebut->get("YYYY-MM-dd")); // jour de la semaine du debut de congé $jourSemaineRetour = $this->nom_jour($dateRetour->get("YYYY-MM-dd")); // jour de la semaine de rentré de congé $heurDebut = (int)$dateDebut->get('HH'); // heur de début de congé $heurRetour = (int)$dateRetour->get('HH'); // heur de retour de congé $jourDebut = (int)$dateDebut->get("dd"); // jour de rentré de congé $jourRetour = (int)$dateRetour->get("dd"); // jour de retour de congé $moiDebut = (int)$dateDebut->get("MM"); // moi de debut de congé $moiRetour = (int)$dateRetour->get("MM"); // moi de retour de congé $anneDebut = (int)$dateDebut->get("YYYY"); // date de debut de congé $anneRetour = (int)$dateRetour->get("YYYY"); // date de retour de congé $nbHeur = 0; // nb heur // calcul de la durée en jour du congé $dureeConge = ($dateRetour->getTimestamp () - $dateDebut->getTimestamp ()); $dureeConge = sprintf ( "%01.0f", ($dureeConge/86400) +1); // dans le cas ou les congés dur plus d'un jour if ($dureeConge > 1) { // cas ou le jour de semaine de debut n'est pas samedi if ($jourSemaineDebut != 6 && $jourSemaineDebut != 7) { // cas ou le congé a commencé le matin if ($heurDebut <= 13) { $nbHeur += (13 - $heurDebut) + 4; // cas ou le congé a commencé l'aprés midi } else { $nbHeur += (19 - $heurDebut); } $dureeConge --; $jourSemaineDebut ++; // cas ou le jour de la semaine de debut est un samedi } elseif ($jourSemaineDebut == 6 ) { // on verifie que si c'est un samedi le congé commence bien le matin if ($heurDebut < 13){ $nbHeur += (13 - $heurDebut); } $dureeConge --; $jourSemaineDebut ++; } // cas ou le congé est sur une journée } else { if ($jourSemaineDebut != 6 && $jourSemaineDebut != 7){ // ou le congé est pris que le matin if ($heurDebut <= 13 && $heurRetour <=13){ $nbHeur = $heurRetour - $heurDebut; // ou le congé est pris que l'après midi } elseif ($heurDebut > 13 && $heurRetour >13){ $nbHeur = $heurRetour - $heurDebut; // cas ou le congé commence le matin et fini l'aprem } else { $nbHeur = $heurRetour - $heurDebut -2; } } elseif($jourSemaineDebut == 6) { // ou le congé est pris que le matin if ($heurDebut <= 13 && $heurRetour <=13){ $nbHeur = $heurRetour - $heurDebut; // cas ou le congé commence le matin fini l'aprem } elseif ($heurDebut < 13 && $heurRetour > 13){ $nbHeur = 13 - $heurDebut; } } $dureeConge --; } while ($dureeConge > 1){ switch ($jourSemaineDebut) { case 1 : // dans le cas ou le jour est en semaine $nbHeur += 8; // on ajoute 8h de congé pris $jourSemaineDebut ++; // on avance d'un jour le jour de la semaine break; case 2 : // dans le cas ou le jour est en semaine $nbHeur += 8; // on ajoute 8h de congé pris $jourSemaineDebut ++; // on avance d'un jour le jour de la semaine break; case 3 : // dans le cas ou le jour est en semaine $nbHeur += 8; // on ajoute 8h de congé pris $jourSemaineDebut ++; // on avance d'un jour le jour de la semaine break; case 4 : // dans le cas ou le jour est en semaine $nbHeur += 8; // on ajoute 8h de congé pris $jourSemaineDebut ++; // on avance d'un jour le jour de la semaine break; case 5 : // dans le cas ou le jour est en semaine $nbHeur += 8; // on ajoute 8h de congé pris $jourSemaineDebut ++; // on avance d'un jour le jour de la semaine break; case 6 : // dans le cas ou le jour est samedi $nbHeur += 4; // on ajoute 4h de congé pris $jourSemaineDebut ++; // on avance d'un jour le jour de la semaine break; case 7: // dans le cas ou le jour est dimanche $jourSemaineDebut = 1; break; } $dureeConge --; // on enléve un jour a la durée des congés } // cas pour le dernier jour de congé if ($dureeConge == 1){ // cas ou le jour de semaine n'est pas samedi if ($jourSemaineDebut != 6 && $jourSemaineDebut != 7) { // cas ou le congé prend fin le matin if ($heurRetour >= 9 && $heurRetour <= 13) { $nbHeur += ($heurRetour - 9); // cas ou le congé prend fin l'aprés midi } else { $nbHeur += ($heurRetour - 15) + 4; } // cas ou le jour de la semaine est un samedi } elseif($jourSemaineDebut == 6) { if ($heurRetour <=13){ $nbHeur += ($heurRetour - 9); } } } return $nbHeur; } /** * Fonction retournant la somme en heur de * tout les congés payé accepté * pour d'un employé. * @param unknown $IdEmploye */ public function nombre_conge_paye($IdEmploye){ // création d'un adapteur de requete $adapter = $this->getAdapter(); // utilisation de l'adapter Type = 1 si le congé est un congé payé // et statut est egale a 1 si le congé est accepté $requete = $adapter->select()->from("conge")->where("IdEmploye=$IdEmploye") ->where("Type=1")->where("Statut=1"); // execution de la requete $resultat = $adapter->fetchAll($requete); $sommeHeur = 0 ; // Somme de tout les congé payé accepte // parcours tout les congé payé accepté pour l'employé courant foreach ($resultat as $conge){ $sommeHeur += $this->nb_jour_conge_pris($conge["IdConge"]); } return $sommeHeur; } /** * Methode ajoutant un nouveau congé a partir des valeurs * entrée en parametre * @param unknown $IdEmploye * @param unknown $DateDemande * @param unknown $DateDebut * @param unknown $DateRetour * @param unknown $Type * @param unknown $Statut */ public function ajout_conge($IdEmploye, $DateDemande, $DateDebut, $DateRetour, $Type, $Statut){ // Ajout du congé dans la BD $this->insert ( array ( "IdEmploye"=>$IdEmploye, "DateDemande"=>$DateDemande, "DateDebut"=>$DateDebut, "DateRetour"=>$DateRetour, "Type"=>$Type, "Statut"=>$Statut, )); } /** * Retourne toute les informations d'un conge appartir * de son id * @param unknown $idConge */ public function info_conge($idConge){ return $this->fetchRow("IdConge = $idConge")->toArray(); } /** * Fonction retournant le numero du jour de la semaine pour une * date donnée * @param unknown $date * @return Ambigous */ function nom_jour($date) { $jour_semaine = array("7","1","2","3","4","5","6"); $annee = (int)substr($date, 0, 4); $mois = (int)substr($date, 5, 2); $jour = (int)substr($date, 8, 2); return $jour_semaine[date('w', mktime(0,0,0,$mois,$jour,$annee))]; } /** * Retourne tout les congés d'un employé * @param unknown $IdEmp */ public function liste_conge($IdEmp){ $resultat = $this->fetchAll ("IdEmploye = $IdEmp"); // envoie du resultats if(null == $resultat) return array(); $rows = $resultat->toArray(); $date = new Zend_Date(); foreach ($rows as $key=>$valeur){ $date->set($valeur["DateDemande"]); $rows[$key]["demande"]=$date->get("dd MMMM YYYY"); $date->set($valeur["DateDebut"]); $rows[$key]["debut"]=$date->get("dd MMMM YYYY"); $date->set($valeur["DateRetour"]); $rows[$key]["retour"]=$date->get("dd MMMM YYYY"); } return $rows; } /** * Fonction qui supprimer un congé * @param unknown $IdConge */ public function supprimer_conge($IdConge){ return $this->delete("IdConge = $IdConge"); } /** * Fonction qui modifie le statut d'un conge * @param unknown $IdConge */ public function modifie_statut($IdConge, $statut){ return $this->update(array("Statut"=>$statut), "IdConge = $IdConge"); } } ?>