Cet espace a été migré sur le nouveau wiki le 24/06/2024 : https://wiki.univ-lorraine.fr/bin/view/publique/dn/am/edolang
Les modifications apportées ici depuis cette date ne seront pas reportées.
Si vous ne disposez pas des droits de visualisation sur le nouvel espace, veuillez contactez son(ses) gestionnaire(s).

Vous regardez une version antérieure (v. /pages/viewpage.action?pageId=290819465) de cette page.

afficher les différences afficher l'historique de la page

Vous regardez la version actuelle de cette page. (v. 1) afficher la version suivante »

Code:

// On récupère la liste des lignes de carnet de bord créées pendant la présence au centre de ressources triées par date de début
$tabCarnetBordPendantPresence = $em->getRepository('UnivLorraineplateformeLansadBundle:CarnetBord')->findBetween($dateEntree, $dateSortie, $user);
usort($tabCarnetBordPendantPresence, function ($cb1, $cb2) {
if ($cb1->getDateDebut() == $cb2->getDateDebut()) {
return 0;
}
return ($cb1->getDateDebut() < $cb2->getDateDebut()) ? -1 : 1;
});

$intervalle15min = new \DateInterval('PT15M');
$dateCurseurTraite = $dateEntree;

foreach ($tabCarnetBordPendantPresence as $carnetBordPendantPresence) {

$dateDebutCarnetBordCour = $carnetBordPendantPresence->getDateDebut();
$dateFinCarnetBordCour = $carnetBordPendantPresence->getDateFin();

if ($dateDebutCarnetBordCour < $dateCurseurTraite) {
// Si un intervalle chevauche un précédent on décale le cuserur à la fin de celui-ci
if ($dateFinCarnetBordCour > $dateCurseurTraite) {
$dateCurseurTraite = $dateFinCarnetBordCour;
} else {
// Si l'intervalle est contenu dans le précédent, on ne fait rien
}
} else {
// Si l'intervalle est entièrement supérieur au précédent, on crée une ligne de type travail personnel s'il dépasse 15 minutes
$dateDebutTravailPersonnel = $dateCurseurTraite;
$dateFinTravailPersonnel = $dateDebutCarnetBordCour;

$dateFinTravailPersonnelMoins15min = clone($dateFinTravailPersonnel);
$dateFinTravailPersonnelMoins15min->sub($intervalle15min);

if ($dateFinTravailPersonnelMoins15min > $dateDebutTravailPersonnel) {
$carnetBord = new CarnetBordTravailPersonnel();

$carnetBord->setUserCarnetBordTravailPersonnel($user);
$carnetBord->setCentreRessourceCarnetBordTravailPersonnel($centreRessources);
$carnetBord->setDateDebut($dateDebutTravailPersonnel);
$carnetBord->setDateFin($dateFinTravailPersonnel);

$anneeUniService = $this->get('ul_plateformelansad.anneeuni');
$anneeUni = $anneeUniService->getAnneeUni($dateDebutTravailPersonnel);
$carnetBord->setAnneeUni($anneeUni);

$em->persist($carnetBord);
$em->flush();
}

$dateCurseurTraite = $dateFinCarnetBordCour;
}

}

// On crée une ligne de type travail personnel s'il reste au moins 15 minutes après le dernier intervalle traité
$dateSortieMoins15min = clone($dateSortie);
$dateSortieMoins15min->sub($intervalle15min);

if ($dateSortieMoins15min > $dateCurseurTraite) {
$dateDebutTravailPersonnel = $dateCurseurTraite;
$dateFinTravailPersonnel = $dateSortie;

$carnetBord = new CarnetBordTravailPersonnel();

$carnetBord->setUserCarnetBordTravailPersonnel($user);
$carnetBord->setCentreRessourceCarnetBordTravailPersonnel($centreRessources);
$carnetBord->setDateDebut($dateDebutTravailPersonnel);
$carnetBord->setDateFin($dateFinTravailPersonnel);

$anneeUniService = $this->get('ul_plateformelansad.anneeuni');
$anneeUni = $anneeUniService->getAnneeUni($dateDebutTravailPersonnel);
$carnetBord->setAnneeUni($anneeUni);

$em->persist($carnetBord);
$em->flush();
}


  • Aucune étiquette