/** * addCacheFromStack * Adding caches into db, flights with best paraments(price,time,pricetime) * @param FlightVoyageStack $flightVoyageStack */ public static function addCacheFromStack(FlightVoyageStack $flightVoyageStack) { $flightCache = new FlightCache(); if (sizeof($flightVoyageStack->flightVoyages) == 0) { return false; } $firstVoyage = $flightVoyageStack->flightVoyages[0]; //we aren't saving complex voyage if ($firstVoyage->isComplex()) { Yii::log("COMPLEX FLIGHT - DOESNOT SAVE IT", 'info'); return; } $withReturn = count($firstVoyage->flights) == 2; //working on dates $flightCache->dateFrom = $firstVoyage->flights[0]->departureDate; if ($withReturn) { $flightCache->dateBack = $firstVoyage->flights[1]->departureDate; } //working on from and to cities $flightCache->from = $firstVoyage->getDepartureCity()->id; $flightCache->to = $firstVoyage->getArrivalCity()->id; if ($flightVoyageStack->bestPriceInd !== null) { $voyage = $flightVoyageStack->flightVoyages[$flightVoyageStack->bestPriceInd]; $flightCache->setFromFlightVoyage($voyage, 'BestPrice'); } if ($flightVoyageStack->bestTimeInd !== null) { $voyage = $flightVoyageStack->flightVoyages[$flightVoyageStack->bestPriceInd]; $flightCache->setFromFlightVoyage($voyage, 'BestTime'); } if ($flightVoyageStack->bestPriceTimeInd !== null) { $voyage = $flightVoyageStack->flightVoyages[$flightVoyageStack->bestPriceInd]; $flightCache->setFromFlightVoyage($voyage, 'BestPriceTime'); } if (!$flightCache->validate()) { Yii::log("AFTER CALCULATIONS WE GET BAD FLIGHT CACHE: \n" . CVarDumper::dumpAsString($flightCache->errors), 'info'); throw new CException("Can't save flight cache item." . print_r($flightCache->errors, true) . print_r($flightCache->attributes, true)); } Yii::log("TRYING TO SAVE FLIGHT CACHE", 'info'); $flightCache->save(); return $flightCache; }