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(); }