public function forFlightItem($item) { $flightBooker = FlightBooker::model()->findByPk($item->flightBookerId); $flightPassports = FlightBookingPassport::model()->findAllByAttributes(array('flightBookingId' => $item->flightBookerId)); if ($flightBooker) { if (!$this->orderBookingId) { $this->orderBookingId = $flightBooker->orderBookingId; $this->orderBooking = OrderBooking::model()->findByPk($this->orderBookingId); } $pdfFileName = $this->controller->renderPdf('ticketAvia', array('type' => 'avia', 'ticket' => $flightBooker->flightVoyage, 'bookingId' => $this->orderBooking->readableId, 'pnr' => $flightBooker->pnr, 'flightPassports' => $flightPassports)); return array('realName' => $pdfFileName, 'visibleName' => "avia_{$flightBooker->flightVoyage->departureCity->code}_{$flightBooker->flightVoyage->arrivalCity->code}_" . date('Ymd', strtotime($flightBooker->flightVoyage->departureDate)) . ".pdf"); } }
public function stageTicketing() { /** @var FlightBookingResponse $flightBookingResponse */ $flightTicketingParams = new FlightTicketingParams(); $flightTicketingParams->nemoBookId = $this->flightBooker->nemoBookId; $flightTicketingParams->pnr = $this->flightBooker->pnr; $flightTicketingResponse = Yii::app()->gdsAdapter->FlightTicketing($flightTicketingParams); SWLogActiveRecord::$requestIds = array_merge(SWLogActiveRecord::$requestIds, GDSNemoAgency::$requestIds); GDSNemoAgency::$requestIds = array(); # VarDumper::dump($flightTicketingResponse); if ($flightTicketingResponse->responseStatus == ResponseStatus::ERROR_CODE_NO_ERRORS) { //saving tickets numbers to DB $flightPassports = FlightBookingPassport::model()->findAllByAttributes(array('flightBookingId' => $this->flightBooker->id)); $docSortPassports = array(); if ($flightPassports) { foreach ($flightPassports as $passport) { $docNum = $passport->series . $passport->number; $docSortPassports[$docNum] = $passport; } if ($flightTicketingResponse->tickets) { foreach ($flightTicketingResponse->tickets as $ticketInfo) { if (isset($ticketInfo['documentNumber']) and isset($docSortPassports[$ticketInfo['documentNumber']])) { //TODO: add ticketNumber field to DB (FlightBookingPassport) and save it; //$docSortPassports[$ticketInfo['documentNumber']]-> $docSortPassports[$ticketInfo['documentNumber']]->ticketNumber = $ticketInfo['ticketNumber']; $docSortPassports[$ticketInfo['documentNumber']]->save(); } } } } $flightVoyage = $this->flightBooker->flightVoyage; $flightVoyage->updateFlightParts($flightTicketingResponse->aParts); $this->flightBooker->flightVoyage = $flightVoyage; } else { $this->status('ticketingRepeat'); } $this->status('ticketReady'); }
public function actionInjectTicketNumbers($bookingId) { $booking = new FlightBookerComponent(); $booking->setFlightBookerFromId($bookingId); foreach ($_POST['tickets'] as $passId => $ticket) { $pass = FlightBookingPassport::model()->findByPk($passId); $pass->ticketNumber = $ticket; $pass->save(); } $flightVoyage = $booking->getCurrent()->flightVoyage; foreach ($_POST['terminal'] as $fvkey => $value) { foreach ($value as $fkey => $terminalCode) { if ($terminalCode) { $flightVoyage->flights[$fvkey]->flightParts[$fkey]->departureTerminalCode = $terminalCode; } } } //! force serialization, save will be called on later status change $booking->getCurrent()->flightVoyage = $flightVoyage; //! Fixme leave 1-2 steps max $booking->status('manualProcessing'); $booking->status('manualTicketing'); $booking->status('manualSuccess'); $this->redirect(array('view', 'id' => $booking->getCurrent()->orderBookingId)); }
public function getPassportsFromDb() { $flightBookerId = $this->flightBookerId; $flightBooker = FlightBooker::model()->findByPk($flightBookerId); if (!$flightBooker) { return array(); } return FlightBookingPassport::model()->findAll(array('condition' => 'flightBookingId=:fbid', 'params' => array(':fbid' => $flightBooker->id), 'order' => 'id')); }