Example #1
0
 /**
  * @param $spot :spot dont il est question
  * @param $em: Entity Manager, pour utiliser doctrine
  * @return $tabNbHoure : tableau contenant une date par ligne, puis une colonne pour chaque heure ouverte à la nav :
  *      - l'état des marées,
  *      - les prévisions
  */
 static function createTabNbHoureNav($spot, $em)
 {
     $tabDataNbHoureNav = array();
     $tabDataMeteo = array();
     // Pour les 7 prochains jours
     $day = new \DateTime("now");
     for ($nbPrevision = 0; $nbPrevision < 7; $nbPrevision++) {
         $tabHoure = array();
         for ($houre = CreateNbHoureCommand::HEURE_MATIN; $houre < CreateNbHoureCommand::HEURE_SOIR; $houre++) {
             $tabHoure[$houre] = array();
         }
         $tabDataNbHoureNav[$day->format('Y-m-d')] = $tabHoure;
         $tabDataMeteo[$day->format('Y-m-d')] = array();
         $day->modify('+1 day');
     }
     //********** Marée **********
     // récupére les futures marées
     $listeMareeFuture = $em->getRepository('LaPoizWindBundle:MareeDate')->getFuturMaree($spot);
     foreach ($listeMareeFuture as $mareeDate) {
         // Pour chaque jour, calculer pour chaque heure le temps de navigation
         MareeTools::calculNbHoureNav($spot, $tabDataNbHoureNav[$mareeDate->getDatePrev()->format('Y-m-d')], $mareeDate);
     }
     //********** Wind ***********
     // Récupere toutes les futures prévisions de vent pour le spot
     $listALlPrevisionDate = $em->getRepository('LaPoizWindBundle:PrevisionDate')->getPrevDateAllWebSiteNextDays($spot);
     $tabAllPrevisionDate = array();
     // Construit un tableau ayant des cellules contenant toutes les previsions des differents sites par jour pour le spot
     foreach ($listALlPrevisionDate as $previsionDate) {
         $tabAllPrevisionDate[$previsionDate->getDatePrev()->format('Y-m-d')][] = $previsionDate;
     }
     // $tabAllPrevisionDate with data
     foreach ($tabDataNbHoureNav as $keyDate => $toto) {
         if (array_key_exists($keyDate, $tabAllPrevisionDate)) {
             //$noteDate = ManageNote::getNotesDate($spot,\DateTime::createFromFormat('Y-m-d',$keyDate), $em);
             NbHoureWind::calculNbHoureNav($spot, $tabDataNbHoureNav[$keyDate], $tabAllPrevisionDate[$keyDate]);
         }
     }
     //********** Meteo ***********
     // Récupere la météo (T°C, nuage ....) pour le spot qui sera utilisé pour noter l'agréabilité
     foreach ($tabDataNbHoureNav as $keyDate => $toto) {
         if (array_key_exists($keyDate, $tabAllPrevisionDate)) {
             foreach ($tabAllPrevisionDate[$keyDate] as $previsionDate) {
                 // pour chaque website = $previsionDate (même spot, même jour)
                 if ($previsionDate->getDataWindPrev()->getWebSite()->getNom() == WebsiteGetData::meteoFranceName) {
                     foreach ($previsionDate->getListPrevision() as $prevision) {
                         $houre = intval($prevision->getTime()->format('H'));
                         if (NbHoureWind::isInGoodTime($houre)) {
                             $tabDataMeteo[$keyDate][$houre] = array();
                             $tabDataMeteo[$keyDate][$houre]["temp"] = $prevision->getTemp();
                             $tabDataMeteo[$keyDate][$houre]["meteo"] = $prevision->getMeteo();
                             $tabDataMeteo[$keyDate][$houre]["precipitation"] = $prevision->getPrecipitation();
                         }
                     }
                 }
             }
         }
     }
     return array($tabDataNbHoureNav, $tabDataMeteo);
 }
Example #2
0
 private static function generateTabNbHourNav($prevision, $tabRosaceOrientation)
 {
     $orientation = $prevision->getOrientation();
     $windTab = array();
     $windTab['orientation'] = $tabRosaceOrientation[$orientation];
     $windTab['wind'] = $prevision->getWind();
     $windTab['timeNav'] = NbHoureWind::calculNbHoureNavigation($tabRosaceOrientation[$orientation], $prevision->getWind());
     return $windTab;
 }