public function selectAirport($data, $column, $lineData, $outfp, $city) { if (!$data[$column['icao_code']]) { echo "Dont found ICAO code. Skipping line: {$lineData} \n"; fwrite($outfp, $lineData . "|icao\n"); return; } if (!$data[$column['iata_code']]) { echo "Dont found IATA code. Skipping line: {$lineData} \n"; fwrite($outfp, $lineData . "|iata\n"); return; } try { $airport = Airport::getAirportByCode($data[$column['iata_code']]); } catch (CException $e) { $airport = null; } if (!$airport) { if (strpos($data[$column['airport_name_ru']], 'Metropolitan') !== FALSE && strpos($data[$column['airport_name_ru']], 'Airport') === FALSE) { return; } echo "Do you want create airport? type y\n"; echo "Data line: {$lineData} \n"; $char = trim(fgets(STDIN)); if ($char == 'y') { $airport = new Airport(); $airport->cityId = $city->id; $data[$column['airport_name_ru']] = $data[$column['airport_name_ru']] ? $data[$column['airport_name_ru']] : $data[$column['airport_name_en']]; if (!$data[$column['airport_name_ru']]) { echo "Airport name not found. Skipped line: {$lineData} \n"; fwrite($outfp, $lineData . "|iata\n"); return; } $airport->localRu = $data[$column['airport_name_ru']]; $airport->localEn = $data[$column['airport_name_en']]; $airport->code = $data[$column['iata_code']]; $airport->icaoCode = $data[$column['icao_code']]; $airport->latitude = $data[$column['latitude']]; $airport->longitude = $data[$column['longitude']]; $airport->position = 0; $airport->site = $data[$column['website']]; $airport->validate(); print_r($airport->errors); $airport->save(); $airport->id = $airport->getPrimaryKey(); } } if ($airport) { $changed = false; if (!$airport->localRu) { if ($data[$column['airport_name_ru']]) { $airport->localRu = $data[$column['airport_name_ru']]; $changed = true; } } if (!$airport->localEn) { if ($data[$column['airport_name_en']]) { $airport->localEn = $data[$column['airport_name_en']]; $changed = true; } } if (!$airport->latitude) { if ($data[$column['latitude']]) { $airport->latitude = $data[$column['latitude']]; $changed = true; } } if (!$airport->longitude) { if ($data[$column['longitude']]) { $airport->longitude = $data[$column['longitude']]; $changed = true; } } if (!$airport->icaoCode) { if ($data[$column['icao_code']]) { $airport->icaoCode = $data[$column['icao_code']]; $changed = true; } } if (!$airport->site) { if ($data[$column['website']]) { $airport->site = $data[$column['website']]; $changed = true; } } if ($changed) { $airport->save(); } } }
public function FlightTicketing(FlightTicketingParams $flightTicketingRequest) { $aParams = array('Request' => array('Ticketing' => array('BookID' => $flightTicketingRequest->nemoBookId, 'Commision' => array('Percent' => '2'))), 'Source' => array('ClientId' => Yii::app()->params['GDSNemo']['agencyId'], 'APIKey' => Yii::app()->params['GDSNemo']['agencyApiKey'], 'Language' => 'RU', 'Currency' => 'RUB')); $response = self::request('Ticketing', $aParams, $bCache = FALSE, $iExpiration = 0); $flightTicketingResponse = new FlightTicketingResponse(); if (isset($response->Response->Error)) { $status = 'error'; $flightTicketingResponse->status = 2; $flightTicketingResponse->responseStatus = ResponseStatus::ERROR_CODE_EXTERNAL; $flightTicketingResponse->addError('error', $response->Response->Error); } else { if (isset($response->Response->Ticketing->Status)) { $status = $response->Response->Ticketing->Status; } elseif (isset($response->Error->_)) { $status = 'error'; $flightTicketingResponse->addError($response->Error->Code, $response->Error->_); } else { $status = 'error'; if (GDSNemoSoapClient::$lastCurlError) { $flightTicketingResponse->addError('connection error', GDSNemoSoapClient::$lastCurlError); } } } if ($status == 'ticket') { $flightTicketingResponse->status = 1; $aParts = array(); UtilsHelper::soapObjectsArray($response->Response->Ticketing->Flight->Segments->Segment); foreach ($response->Response->Ticketing->Flight->Segments->Segment as $arrKey => $oSegment) { $oPart = new stdClass(); //Yii::beginProfile('loadAirportData'); if (!isset($oSegment->DepAirp)) { Yii::log(print_r($oSegment, true) . '|||' . $arrKey, 'info'); } try { $oPart->departure_airport = Airport::getAirportByCode(UtilsHelper::soapElementValue($oSegment->DepAirp)); $oPart->departure_city = $oPart->departure_airport->city; $oPart->arrival_airport = Airport::getAirportByCode(UtilsHelper::soapElementValue($oSegment->ArrAirp)); $oPart->arrival_city = $oPart->arrival_airport->city; $oPart->departure_terminal_code = isset($oSegment->DepTerminal) ? UtilsHelper::soapElementValue($oSegment->DepTerminal) : ''; $oPart->arrival_terminal_code = isset($oSegment->ArrTerminal) ? UtilsHelper::soapElementValue($oSegment->ArrTerminal) : ''; $oPart->markAirline = Airline::getAirlineByCode($oSegment->MarkAirline); if ($oSegment->OpAirline == '**') { $oPart->opAirline = $oPart->markAirline; $oPart->transport_airline = $oPart->markAirline; } else { $oPart->opAirline = Airline::getAirlineByCode($oSegment->OpAirline); $oPart->transport_airline = Airline::getAirlineByCode($oSegment->OpAirline); } $oPart->code = $oSegment->FlightNumber; $oPart->duration = $oSegment->FlightTime * 60; $oPart->datetime_begin = UtilsHelper::soapElementValue($oSegment->DepDateTime); $oPart->datetime_end = UtilsHelper::soapElementValue($oSegment->ArrDateTime); $oPart->stopNum = UtilsHelper::soapElementValue($oSegment->StopNum); $oPart->aircraft_code = $oSegment->AircraftType; $oPart->aTariffs = array(); $oPart->aTaxes = array(); $oPart->aBookingCodes = array(); UtilsHelper::soapObjectsArray($oSegment->BookingCodes->BookingCode); foreach ($oSegment->BookingCodes->BookingCode as $sBookingCode) { $oPart->aBookingCodes[] = UtilsHelper::soapElementValue($sBookingCode); } $aParts[$oSegment->SegNum] = $oPart; } catch (CException $e) { } } if ($aParts) { $flightTicketingResponse->aParts = $aParts; } UtilsHelper::soapObjectsArray($response->Response->Ticketing->Travellers->Traveller); foreach ($response->Response->Ticketing->Travellers->Traveller as $traveller) { $ticket = array('ticketNumber' => $traveller->Ticket->TickectNum, 'documentNumber' => $traveller->DocumentInfo->DocNum); $flightTicketingResponse->tickets[] = $ticket; } } else { $flightTicketingResponse->responseStatus = ResponseStatus::ERROR_CODE_EXTERNAL; $flightTicketingResponse->addError('error', 'Status is:' . $status); $flightTicketingResponse->status = 2; } return $flightTicketingResponse; }