/** * @param string $daysOfWeekString indice des jours de la semaine séparé par des ";" * @return Tap[]|null */ public function reverseTransform($daysOfWeekString) { if (empty($daysOfWeekString)) { return array(); } $daysOfWeek = explode(';', $daysOfWeekString); $taps_periode = $this->daysOfWeek->getListJoursTap(); $taps_eleve = $this->manager->getRepository('WCSCantineBundle:Eleve')->findAllTapsForPeriode($this->eleve, $this->daysOfWeek->getPeriode(), true); $taps = array(); foreach ($daysOfWeek as $dayOfWeek) { foreach ($taps_periode[$dayOfWeek] as $date) { // si la réservation est déjà présente, // on se contente de l'ajouter dans la liste // sinon on créé une nouvelle réservation $dateT = new \DateTime($date); $found = false; $tap = null; foreach ($taps_eleve as $current) { if ($current->getDate() == $dateT) { $tap = $current; $found = true; } } if (!$found) { $tap = new Tap(); $tap->setEleve($this->eleve); $tap->setDate($dateT); $tap->setSubscribedByParent(true); $this->manager->persist($tap); } $taps[] = $tap; } } return $taps; }
/** * @param string $daysOfWeekString indice des jours de la semaine séparé par des ";" * @return Garderie[]|null */ public function reverseTransform($daysOfWeekString) { if (empty($daysOfWeekString)) { return array(); } $daysOfWeek = explode(';', $daysOfWeekString); $garderies_periode = $this->daysOfWeek->getListJoursGarderie(); $garderies_eleve = $this->manager->getRepository('WCSCantineBundle:Eleve')->findAllGarderiesForPeriode($this->eleve, $this->daysOfWeek->getPeriode(), true); $garderies = array(); foreach ($daysOfWeek as $dayOfWeek) { foreach ($garderies_periode[$dayOfWeek] as $date) { // si la réservation est déjà présente, // on se contente de l'ajouter dans la liste // sinon on créé une nouvelle réservation $dateT = new \DateTime($date); $found = false; $garderie = null; foreach ($garderies_eleve as $current) { if ($current->getDate() == $dateT) { if (substr($dayOfWeek, -2) == '-1' && $current->isEnableMorning()) { $garderie = $current; $found = true; } if (substr($dayOfWeek, -2) == '-2' && $current->isEnableEvening()) { $garderie = $current; $found = true; } } } if (!$found) { $garderie = new Garderie(); $garderie->setEleve($this->eleve); $garderie->setDate($dateT); if (substr($dayOfWeek, -2) == '-1') { $garderie->setEnableMorning(true); } if (substr($dayOfWeek, -2) == '-2') { $garderie->setEnableEvening(true); } $garderie->setSubscribedByParent(true); $this->manager->persist($garderie); } $garderies[] = $garderie; } } return $garderies; }
/** * Affiche le dashboard * * @param Request $request contient les paramètres passés en URL * * @return Response renvoit une reponse HTTP après rendu du template dashboard */ public function dashboardAction(Request $request) { $user = $this->getUser(); if (!$user) { throw $this->createAccessDeniedException(); } $em = $this->getDoctrine()->getManager(); // liste des enfants $children = $em->getRepository("WCSCantineBundle:Eleve")->findChildren($user); $nbChildrenVoyageInscrits = $em->getRepository('WCSCantineBundle:Eleve')->findNbEnfantInscritsVoyage($user, $this->get('wcs.datenow')->getDate()); // periodes TAP/Garderie $current_date = $this->get('wcs.datenow')->getDate(); $scheduler = $this->get('wcs.gesty.scheduler'); $firstDate = $scheduler->getFirstAvailableDate($current_date, ActivityType::TAP); $period_subscriptions = $scheduler->getCurrentOrNextSchoolPeriod($firstDate); // traitera la liste des taps, garderie // pour la période en cours $daysOfWeek = new DaysOfWeeks($period_subscriptions, $this->get('wcs.gesty.scheduler')); /** * récupère les taps et les garderies de chaque enfants * uniquement si le total de taps + garderie > nb inscriptions pour la période * @var Eleve $child */ $children_activities = array(); foreach ($children as $child) { $array["taps"] = $daysOfWeek->getTapSelectionToArray($child->getTaps()); $array["garderies"] = $daysOfWeek->getGarderieSelectionToArray($child->getGarderies()); $children_activities[$child->getId()] = $array; } return $this->render('WCSCantineBundle:Eleve:dashboard.html.twig', array('user' => $user, 'children' => $children, 'files' => $this->getFiles($user, $nbChildrenVoyageInscrits), 'children_activities' => $children_activities, 'nbChildrenVoyageInscrits' => $nbChildrenVoyageInscrits, 'period_subscriptions' => $period_subscriptions)); }