public function CheckAll(IExistingReservationPage $page, UserSession $user, ReservationView $reservationView)
 {
     if (!$reservationView->IsDisplayable()) {
         $page->RedirectToError(ErrorMessages::RESERVATION_NOT_FOUND);
         return;
     }
 }
 public function testPullsReservationViewFromRepository()
 {
     $referenceNumber = '1234';
     $reservationView = new ReservationView();
     $this->page->expects($this->once())->method('GetReferenceNumber')->will($this->returnValue($referenceNumber));
     $this->reservationViewRepository->expects($this->once())->method('GetReservationForEditing')->with($referenceNumber)->will($this->returnValue($reservationView));
     $this->preconditionService->expects($this->once())->method('CheckAll')->with($this->page, $this->user, $reservationView);
     $this->initializerFactory->expects($this->once())->method('GetExistingInitializer')->with($this->equalTo($this->page), $this->equalTo($reservationView))->will($this->returnValue($this->initializer));
     $this->initializer->expects($this->once())->method('Initialize');
     $presenter = new EditReservationPresenter($this->page, $this->initializerFactory, $this->preconditionService, $this->reservationViewRepository);
     $presenter->PageLoad();
 }
 public function PageLoad()
 {
     $user = ServiceLocator::GetServer()->GetUserSession();
     $referenceNumber = $this->page->GetReferenceNumber();
     $reservationView = $this->reservationViewRepository->GetReservationForEditing($referenceNumber);
     $this->preconditionService->CheckAll($this->page, $user, $reservationView);
     $initializer = $this->initializationFactory->GetExistingInitializer($this->page, $reservationView);
     $initializer->Initialize();
 }
 public function Bind(IReservationComponentInitializer $initializer)
 {
     $this->page->SetAdditionalResources($this->reservationView->AdditionalResourceIds);
     $this->page->SetTitle($this->reservationView->Title);
     $this->page->SetDescription($this->reservationView->Description);
     $this->page->SetReferenceNumber($this->reservationView->ReferenceNumber);
     $this->page->SetReservationId($this->reservationView->ReservationId);
     $this->page->SetIsRecurring($this->reservationView->IsRecurring());
     $this->page->SetRepeatType($this->reservationView->RepeatType);
     $this->page->SetRepeatInterval($this->reservationView->RepeatInterval);
     $this->page->SetRepeatMonthlyType($this->reservationView->RepeatMonthlyType);
     if ($this->reservationView->RepeatTerminationDate != null) {
         $this->page->SetRepeatTerminationDate($this->reservationView->RepeatTerminationDate->ToTimezone($initializer->GetTimezone()));
     }
     $this->page->SetRepeatWeekdays($this->reservationView->RepeatWeekdays);
     $participants = $this->reservationView->Participants;
     $invitees = $this->reservationView->Invitees;
     $this->page->SetParticipants($participants);
     $this->page->SetInvitees($invitees);
     $this->page->SetAllowParticipantsToJoin($this->reservationView->AllowParticipation);
     $this->page->SetAccessories($this->reservationView->Accessories);
     $currentUser = $initializer->CurrentUser();
     $this->page->SetCurrentUserParticipating($this->IsCurrentUserParticipating($currentUser->UserId));
     $this->page->SetCurrentUserInvited($this->IsCurrentUserInvited($currentUser->UserId));
     $canBeEdited = $this->reservationAuthorization->CanEdit($this->reservationView, $currentUser);
     $this->page->SetIsEditable($canBeEdited);
     $this->page->SetIsApprovable($this->reservationAuthorization->CanApprove($this->reservationView, $currentUser));
     $this->page->SetAttachments($this->reservationView->Attachments);
     $showUser = $this->privacyFilter->CanViewUser($initializer->CurrentUser(), $this->reservationView);
     $showDetails = $this->privacyFilter->CanViewDetails($initializer->CurrentUser(), $this->reservationView);
     $initializer->ShowUserDetails($showUser);
     $initializer->ShowReservationDetails($showDetails);
     if (!empty($this->reservationView->StartReminder)) {
         $this->page->SetStartReminder($this->reservationView->StartReminder->GetValue(), $this->reservationView->StartReminder->GetInterval());
     }
     if (!empty($this->reservationView->EndReminder)) {
         $this->page->SetEndReminder($this->reservationView->EndReminder->GetValue(), $this->reservationView->EndReminder->GetInterval());
     }
 }