/**
  * @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));
 }