private function saveAdultFlightPassports($passports, $flightBookerId)
 {
     foreach ($passports->adultsPassports as $adultInfo) {
         $flightPassport = new FlightBookingPassport();
         $flightPassport->populate($adultInfo, $flightBookerId);
         $flightPassport->save();
     }
 }
예제 #2
0
 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));
     }
 }
예제 #4
0
 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');
 }
예제 #5
0
 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));
 }
예제 #6
0
 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'));
 }