/** * Définie la façon de générer des créneaux à partir d'une plage horaire unique. * @param $plageHoraire PlageHoraire La plage horaire en question * @param $debut \DateTime Le début du créneau * @param $fin \DateTime La fin du créneau * @param $em EntityManager L'entity manager pour les modifications */ private function genererCreneaux($plageHoraire, $debut, $fin, $em) { foreach ($plageHoraire->getBesoinsOrga() as $besoinOrga) { if ($besoinOrga->getOrgaHint() == NULL) { for ($i = 0; $i < $besoinOrga->getNbOrgasNecessaires(); $i++) { $creneau = new Creneau(); $creneau->setDebut($debut); $creneau->setFin($fin); $creneau->setPlageHoraire($plageHoraire); $creneau->setEquipeHint($besoinOrga->getEquipe()); $em->persist($creneau); } } else { $creneau = new Creneau(); $creneau->setDebut($debut); $creneau->setFin($fin); $creneau->setPlageHoraire($plageHoraire); $creneau->setOrgaHint($besoinOrga->getOrgaHint()); $creneau->setEquipeHint($besoinOrga->getOrgaHint()->getEquipe()); $em->persist($creneau); } } if ($plageHoraire->getRespNecessaire()) { $creneau = new Creneau(); $creneau->setDebut($debut); $creneau->setFin($fin); $creneau->setPlageHoraire($plageHoraire); $creneau->setOrgaHint($plageHoraire->getTache()->getResponsable()); $creneau->setEquipeHint($plageHoraire->getTache()->getGroupeTache()->getEquipe()); $em->persist($creneau); } }
public function diviserAction() { // permet de couper un créneau en 2 $em = $this->getDoctrine()->getEntityManager(); $request = $this->getRequest(); $creneau_id = $request->request->get('creneau_id', ''); $creneau = $em->getRepository('AssoMakerPHPMBundle:Creneau')->find($creneau_id); $date_times = $request->request->get('date_time', ''); $date_time = new \DateTime($date_times); //var_dump($date_time); //TODO remplacer les tgc par les erreurs ad hoc if (!$creneau) { return array('response' => 'tgc'); } if (!$date_time) { return array('response' => 'tgc'); } // On vérifie que l'heure est bien incluse dans le créneau if ($date_time < $creneau->getDebut() || $date_time > $creneau->getFin()) { return array('response' => 'tgc'); } else { // =>crée un créneau B possédant les memes propriétés que le créneau A, mais commençant à l'heure fournie // =>met la fin du créneau A à l'heure fournie $nouveauCreneau = new Creneau(); $nouveauCreneau->setDebut($date_time); $nouveauCreneau->setFin($creneau->getFin()); $nouveauCreneau->setDisponibilite($creneau->getDisponibilite()); $nouveauCreneau->setPlageHoraire($creneau->getPlageHoraire()); $creneau->setFin($date_time); $em->persist($nouveauCreneau); $em->flush(); return array('response' => 'cay cool'); } }