private function saveAdultFlightPassports($passports, $flightBookerId) { foreach ($passports->adultsPassports as $adultInfo) { $flightPassport = new FlightBookingPassport(); $flightPassport->populate($adultInfo, $flightBookerId); $flightPassport->save(); } }
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 execute() { $valid = false; //collecting booking info for whole ticket $booking = new BookingForm(); if (isset($_POST['BookingForm'])) { $valid = true; $booking->attributes = $_POST['BookingForm']; $valid = $valid && $booking->validate(); } //collecting adults passport data $adults = Yii::app()->flightBooker->getCurrent()->FlightVoyage->adultPassengerInfo; $adultPassports = array(); if ($adults) { $countAdults = $adults->count; for ($i = 0; $i < $countAdults; $i++) { $adultPassports[] = new FlightAdultPassportForm(); } $isOk = $this->collect('FlightAdultPassportForm', $adultPassports); $valid = $valid && $isOk; } //collecting child passport data $children = Yii::app()->flightBooker->getCurrent()->FlightVoyage->childPassengerInfo; $childrenPassports = array(); if ($children) { $countChildren = $children->count; for ($i = 0; $i < $countChildren; $i++) { $childrenPassports[] = new FlightChildPassportForm(); } $isOk = $this->collect('FlightChildPassportForm', $childrenPassports); $valid = $valid && $isOk; } //collecting infant passport data $infant = Yii::app()->flightBooker->getCurrent()->FlightVoyage->infantPassengerInfo; $infantPassports = array(); if ($infant) { $infantChildren = $infant->count; for ($i = 0; $i < $infantChildren; $i++) { $infantPassports[] = new FlightInfantPassportForm(); } $isOk = $this->collect('FlightInfantPassportForm', $infantPassports); $valid = $valid && $isOk; } if ($valid) { //saving data to objects //TODO: link to OrderBooking object $flightBookerComponent = Yii::app()->flightBooker; $flightBookerComponent->book(); $flightBookerId = $flightBookerComponent->getCurrent()->primaryKey; $bookingAr = new OrderBooking(); $bookingAr->populate($booking); if (!Yii::app()->user->isGuest) { $bookingAr->userId = Yii::app()->user->id; } $bookingPassports = array(); $allPassports = array_merge($adultPassports, $childrenPassports, $infantPassports); foreach ($allPassports as $passport) { $bookingPassport = new FlightBookingPassport(); $bookingPassport->populate($passport, $flightBookerId); if (!$bookingPassport->save()) { VarDumper::dump($bookingPassport->getErrors()); } else { $bookingPassports[] = $bookingPassport; } } if ($bookingAr->save()) { Yii::app()->flightBooker->getCurrent()->orderBookingId = $bookingAr->id; Yii::app()->flightBooker->status('booking'); } else { VarDumper::dump($bookingAr->getErrors()); $this->getController()->render('flightBooker.views.enterCredentials', array('passport' => $passport, 'booking' => $booking)); } } else { $this->getController()->render('flightBooker.views.enterCredentials', array('adultPassports' => $adultPassports, 'childrenPassports' => $childrenPassports, 'infantPassports' => $infantPassports, 'booking' => $booking)); } }
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')); }