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).
// 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(); }