예제 #1
0
 function transformData($tableauData)
 {
     // $tableauData
     // wind  -> 17.5 | 12 | 10 | 14.5 | 15
     // orientation  -> 198 | 172 | 170 | 180 | 188
     // heure -> 13   | 19 | 22 | 01   | 04
     // date  -> 04   | 04 | 04 | 05   | 05
     $tableauWindData = array();
     $currentDate = '';
     $firstElem = true;
     $currenteLine = array();
     //$indexCol=0;
     foreach ($tableauData['date'] as $key => $date) {
         if ($currentDate != $date) {
             if ($firstElem) {
                 $firstElem = false;
             } else {
                 $tableauWindData[WindguruGetData::getCompleteDate($currentDate)] = $currenteLine;
             }
             $currenteLine = array();
         }
         $dataPrev = array();
         $dataPrev["wind"] = $tableauData['wind'][$key];
         $dataPrev["heure"] = $tableauData['heure'][$key];
         if (isset($tableauData['orientation'][$key])) {
             $dataPrev["orientation"] = WebsiteGetData::transformeOrientationDegToNom($tableauData['orientation'][$key]);
         } else {
             $dataPrev["orientation"] = '?';
         }
         $currenteLine[$tableauData['heure'][$key]] = $dataPrev;
         $currentDate = $date;
         //$indexCol++;
     }
     $tableauWindData[WindguruGetData::getCompleteDate($currentDate)] = $currenteLine;
     $tableauWindData['update'] = array(array(WindguruGetData::transformeUpdate($tableauData['update'][0])));
     return $tableauWindData;
 }
 static function saveDataFromArray($tableauData, $dataWindPrev, $entityManager)
 {
     // $tableauData
     // 2011-12-05 -> 13=>17.5 | 19=>12 | 22=>10
     // 2011-12-06 -> 01=>14.5 | 04=>15 ...
     $now = new \DateTime("now");
     foreach ($tableauData as $date => $lineWindData) {
         $prevDate = new PrevisionDate();
         $prevDate->setCreated($now);
         $prevDate->setDatePrev(new \DateTime($date));
         $windCalculate = array("max" => 0, "min" => 0, "cumul" => 0, "nbPrev" => 0);
         foreach ($lineWindData as $heure => $wind) {
             $prev = new Prevision();
             $prev->setOrientation('?');
             $prev->setWind($wind);
             $hour = new \DateTime();
             $hour->setTime($heure, "00");
             $prev->setTime($hour);
             WindguruGetData::calculateWind($windCalculate, $prev);
             $prev->setPrevisionDate($prevDate);
             $prevDate->addListPrevision($prev);
             $entityManager->persist($prev);
         }
         //TODO: calculate average etc...
         $prevDate->setWindAverage(0);
         if ($windCalculate["nbPrev"] > 0) {
             $prevDate->setWindAverage($windCalculate["max"] / $windCalculate["nbPrev"]);
         }
         $prevDate->setWindMax($windCalculate["max"]);
         $prevDate->setWindMin($windCalculate["min"]);
         $prevDate->setWindGauss(0);
         $prevDate->setWindMiddle(0);
         $prevDate->setDataWindPrev($dataWindPrev);
         $dataWindPrev->addListPrevisionDate($prevDate);
         $entityManager->persist($prevDate);
     }
     $entityManager->persist($dataWindPrev);
     $entityManager->flush();
 }