示例#1
0
 private function getBookingData()
 {
     if (!$this->reviewHash || !ClassicValidator::validateAlnum($this->reviewHash)) {
         return FALSE;
     }
     /**
      * @var \DDD\Service\Website\Review $reviewService
      */
     $reviewService = $this->getServiceLocator()->get('service_website_review');
     return $reviewService->getBookingData($this->reviewHash);
 }
示例#2
0
 /**
  * @return ViewModel
  */
 public function indexAction()
 {
     /**
      * @var \DDD\Service\Textline $textlineService
      * @var \DDD\Service\Lock\General $lockService
      */
     $textlineService = $this->getServiceLocator()->get('service_textline');
     $lockService = $this->getServiceLocator()->get('service_lock_general');
     $keyCode = $this->params()->fromQuery('code');
     $view = $this->params()->fromQuery('view');
     $godMode = $this->params()->fromQuery('bo', false) ?: false;
     if ($keyCode === null || !ClassicValidator::validateAlnum($keyCode)) {
         return $this->redirect()->toRoute('home')->setStatusCode('301');
     }
     /**
      * if have not key code in query...
      * OR not finded thicket...
      * OR "arrival date" NOT MORE than "5"
      * OR "depart date" NOT LESS than "-3"
      * redirect() -> Home
      */
     $bookingData = $this->getBookingData($keyCode);
     if (!$bookingData || !Helper::checkDatesByDaysCount(1, $bookingData->getDateTo())) {
         return $this->redirect()->toRoute('home')->setStatusCode('301');
     }
     $session = new SessionContainer('visitor');
     $parkingTextline = '';
     if ($bookingData->hasParking()) {
         $parkingTextline = $textlineService->getUniversalTextline($bookingData->getParkingTextlineId());
     }
     /**
      * @var \DDD\Service\Website\Textline $textlineService
      */
     $textlineService = $this->getServiceLocator()->get('service_website_textline');
     $keyDirectEntryTextline = Helper::evaluateTextline($textlineService->getApartmentDirectKeyInstructionTextline($bookingData->getApartmentId()), ['{{PARKING_TEXTLINE}}' => $parkingTextline]);
     $keyReceptionEntryTextline = Helper::evaluateTextline($textlineService->getApartmentReceptionKeyInstructionTextline($bookingData->getApartmentId()), ['{{PARKING_TEXTLINE}}' => $parkingTextline]);
     /* @var $customerService \DDD\Service\Customer */
     $customerService = $this->getServiceLocator()->get('service_customer');
     /**
      * If NOT HAVE flag from BO (view=0)...
      * Specify that looked & save the date view
      */
     if ($view !== '0' && $bookingData->isKiViewed() !== '1' && !$customerService->isBot($session)) {
         /**
          * @var \DDD\Service\Website\Booking $bookingService
          */
         $bookingService = $this->getServiceLocator()->get('service_website_booking');
         $bookingService->updateData($bookingData->getId(), ['ki_viewed' => '1', 'ki_viewed_date' => date('Y-m-d H:i:s')]);
     }
     $lockDatas = $lockService->getLockByReservationApartmentId($bookingData->getApartmentIdAssigned(), $bookingData->getPin(), [LockService::USAGE_APARTMENT_TYPE, LockService::USAGE_BUILDING_TYPE, LockService::USAGE_PARKING_TYPE], true);
     foreach ($lockDatas as $key => $lockData) {
         switch ($key) {
             case LockService::USAGE_APARTMENT_TYPE:
                 $bookingData->setPin($lockData['code']);
                 break;
             case LockService::USAGE_BUILDING_TYPE:
                 $bookingData->setOutsideDoorCode($lockData['code']);
                 break;
             case LockService::USAGE_PARKING_TYPE:
                 // TODO: to be or not to be, this is the question.
                 break;
         }
     }
     // get Office Address
     $officeAddress = false;
     if ($bookingData->getKiPageType() == Building::KI_PAGE_TYPE_RECEPTION) {
         /**
          * @var \DDD\Service\Office $officeService
          */
         $officeService = $this->getServiceLocator()->get('service_office');
         $officeManagement = $officeService->getData($bookingData->getOfficeId());
         /**
          * @var \DDD\Domain\Office\OfficeManager $officeData
          */
         $officeData = $officeManagement['office'];
         $officeAddress = $officeData->getAddress();
     }
     if ($view !== '0') {
         $this->checkCustomerIdentityData($bookingData);
     }
     $this->layout()->setTemplate('layout/layout-ki');
     $this->layout()->userTrackingInfo = ['res_number' => $bookingData->getResNumber(), 'partner_id' => $bookingData->getPartnerId()];
     $this->layout()->godMode = $godMode === substr(md5($keyCode), 12, 5);
     $this->layout()->keyData = $bookingData;
     $this->layout()->keyCode = $keyCode;
     $this->layout()->directEntryTextline = $keyDirectEntryTextline;
     $this->layout()->receptionEntryTextline = $keyReceptionEntryTextline;
     return new ViewModel(['keyData' => $bookingData, 'keyCode' => $keyCode, 'directEntryTextline' => $keyDirectEntryTextline, 'receptionEntryTextline' => $keyReceptionEntryTextline, 'godMode' => $godMode === substr(md5($keyCode), 12, 5), 'isGuest' => $view !== '0', 'officeAddress' => $officeAddress]);
 }