Exemplo n.º 1
0
 /**
  * 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;
 }