private function saveChildrenPassports($i, $roomPassport, $hotelBookerId)
 {
     foreach ($roomPassport->childrenPassports as $childInfo) {
         $hotelPassport = new HotelBookingPassport();
         $hotelPassport->scenario = 'child';
         $hotelPassport->attributes = $childInfo->attributes;
         $hotelPassport->hotelBookingId = $hotelBookerId;
         $hotelPassport->roomKey = $i;
         if (!$hotelPassport->save()) {
             $errMsg = 'Incorrect child passport data.' . PHP_EOL . CVarDumper::dumpAsString($hotelPassport->errors);
             Yii::trace($errMsg, 'HotelBooker.EnterCredentials.childPassport');
             throw new CException($errMsg);
         }
     }
 }
Example #2
0
 public function forHotelItem($item)
 {
     $hotelBooker = HotelBooker::model()->findByPk($item->hotelBookerId);
     $hotelPassports = HotelBookingPassport::model()->findAllByAttributes(array('hotelBookingId' => $item->hotelBookerId));
     if ($hotelBooker) {
         $loop = true;
         $count = 0;
         while ($loop) {
             $voucherInfo = $this->hotelClient->voucher($hotelBooker->orderId);
             $voucherAvailable = true;
             //VarDumper::dump($voucherInfo);
             //die();
             //UtilsHelper::soapObjectsArray($voucherInfo->voucherAvailable);
             foreach ($voucherInfo->voucherAvailable as $avail) {
                 $voucherAvailable = $voucherAvailable && ($avail ? $avail != '0' ? true : false : false);
             }
             if ($voucherAvailable) {
                 $loop = false;
                 break;
             } else {
                 $count++;
                 if ($count > 2) {
                     $loop = false;
                     return false;
                     break;
                 }
                 sleep(10);
             }
         }
         $hotelInfo = $this->hotelClient->hotelDetail($hotelBooker->hotel->hotelId);
         $this->hotelClient->hotelSearchDetails($hotelBooker->hotel);
         $pnr = implode(', ', $voucherInfo->references);
         if ($voucherInfo->suppliers) {
             $pnr .= ' (' . implode(', ', $voucherInfo->suppliers) . ')';
         }
         if (!$this->orderBookingId) {
             $this->orderBookingId = $hotelBooker->orderBookingId;
             $this->orderBooking = OrderBooking::model()->findByPk($this->orderBookingId);
         }
         $pdfFileName = $this->controller->renderPdf('ticketHotel', array('type' => 'hotel', 'ticket' => $hotelBooker->hotel, 'bookingId' => $this->orderBooking->readableId, 'pnr' => $pnr, 'hotelPassports' => $hotelPassports, 'hotelInfo' => $hotelInfo));
         return array('realName' => $pdfFileName, 'visibleName' => "hotel_{$hotelBooker->hotel->city->code}_" . date('Ymd', strtotime($hotelBooker->hotel->checkIn)) . ".pdf");
     }
 }
Example #3
0
 public function execute()
 {
     $valid = false;
     $rooms = Yii::app()->hotelBooker->getCurrent()->hotel->rooms;
     $form = new HotelPassportForm();
     foreach ($rooms as $room) {
         $form->addRoom($room->adults, $room->childCount);
     }
     if (isset($_POST['BookingForm'])) {
         $valid = true;
         $form->bookingForm->attributes = $_POST['BookingForm'];
         $valid = $valid & $form->bookingForm->validate();
     }
     if (isset($_POST['HotelAdultPassportForm'])) {
         foreach ($_POST['HotelAdultPassportForm'] as $i => $adults) {
             foreach ($adults as $j => $adultInfo) {
                 $form->roomsPassports[$i]->adultsPassports[$j]->attributes = $adultInfo;
                 $valid = $valid & $form->roomsPassports[$i]->adultsPassports[$j]->validate();
             }
         }
     }
     if (isset($_POST['HotelChildPassportForm'])) {
         foreach ($_POST['HotelChildPassportForm'] as $i => $children) {
             foreach ($children as $j => $childrenInfo) {
                 $form->roomsPassports[$i]->childrenPassports[$j]->attributes = $childrenInfo;
                 $valid = $valid & $form->roomsPassports[$i]->childrenPassports[$j]->validate();
             }
         }
     }
     if ($valid) {
         /** @var HotelBookerComponent $hotelBookerComponent  */
         $hotelBookerComponent = Yii::app()->hotelBooker;
         $hotelBookerComponent->book();
         $hotelBookerId = $hotelBookerComponent->getHotelBookerId();
         //saving booking data
         /** @var BookingForm  */
         $bookingForm = $form->bookingForm;
         $bookingModel = new OrderBooking();
         $bookingModel->email = $bookingForm->contactEmail;
         $bookingModel->phone = $bookingForm->contactPhone;
         $bookingModel->timestamp = new CDbExpression('NOW()');
         $validSaving = $bookingModel->save();
         $errors = array();
         if ($validSaving) {
             $hotelBookerComponent->getCurrent()->orderBookingId = $bookingModel->id;
             $hotelBookerComponent->getCurrent()->save();
         } else {
             $errors = CMap::mergeArray($errors, $bookingModel->errors);
             Yii::trace(CVarDumper::dumpAsString($bookingModel->errors), 'HotelBooker.EnterCredentials.bookingModel');
         }
         foreach ($form->roomsPassports as $i => $roomPassport) {
             foreach ($roomPassport->adultsPassports as $adultInfo) {
                 $hotelPassport = new HotelBookingPassport();
                 $hotelPassport->scenario = 'adult';
                 $hotelPassport->attributes = $adultInfo->attributes;
                 $hotelPassport->hotelBookingId = $hotelBookerId;
                 $hotelPassport->roomKey = $i;
                 $validSaving = $validSaving and $hotelPassport->save();
                 $errors = CMap::mergeArray($errors, $hotelPassport->errors);
                 Yii::trace(CVarDumper::dumpAsString($hotelPassport->errors), 'HotelBooker.EnterCredentials.adultPassport');
             }
             foreach ($roomPassport->childrenPassports as $childInfo) {
                 $hotelPassport = new HotelBookingPassport();
                 $hotelPassport->scenario = 'child';
                 $hotelPassport->attributes = $childInfo->attributes;
                 $hotelPassport->hotelBookingId = $hotelBookerId;
                 $hotelPassport->roomKey = $i;
                 $validSaving = $validSaving and $hotelPassport->save();
                 $errors = CMap::mergeArray($errors, $hotelPassport->errors);
                 Yii::trace(CVarDumper::dumpAsString($hotelPassport->errors), 'HotelBooker.EnterCredentials.childPassport');
             }
         }
         if ($validSaving) {
             $hotelBookerComponent->status('analyzing');
         } else {
             throw new CHttpException(500, 'Couldn\'t save passport records to db');
         }
     }
     $this->getController()->render('hotelBooker.views.enterCredentials', array('model' => $form));
 }
Example #4
0
 public function getPassportsFromDb()
 {
     $hotelBookerId = $this->hotelBookerId;
     $hotelBooker = HotelBooker::model()->findByPk($hotelBookerId);
     if (!$hotelBooker) {
         return array();
     }
     return HotelBookingPassport::model()->findAll(array('condition' => 'hotelBookingId=:hbid', 'params' => array(':hbid' => $hotelBooker->id), 'order' => 'id'));
 }