/**
  * Returns an array with the amount of possible simultaneous registrations
  * respecting the maxRegistrationsPerUser setting and also respects the amount
  * of remaining free places.
  *
  * The returned array index starts at 1 if at least one registration is possible
  *
  * @param \DERHANSEN\SfEventMgt\Domain\Model\Event $event Event
  *
  * @return array
  */
 public function render($event)
 {
     $minPossibleRegistrations = 1;
     if ($event->getMaxParticipants() > 0 && $event->getMaxRegistrationsPerUser() >= $event->getFreePlaces() && !$event->getEnableWaitlist()) {
         $maxPossibleRegistrations = $event->getFreePlaces();
     } else {
         $maxPossibleRegistrations = $event->getMaxRegistrationsPerUser();
     }
     $result = [$maxPossibleRegistrations];
     if ($maxPossibleRegistrations >= $minPossibleRegistrations) {
         $arrayWithZeroAsIndex = range($minPossibleRegistrations, $maxPossibleRegistrations);
         $result = array_combine(range(1, count($arrayWithZeroAsIndex)), $arrayWithZeroAsIndex);
     }
     return $result;
 }
예제 #2
0
 /**
  * @test
  */
 public function getParticipantsReturnsInitialValueForInteger()
 {
     $this->assertSame(0, $this->subject->getMaxParticipants());
 }
예제 #3
0
 /**
  * Checks, if the registration can successfully be created. Note, that
  * $result is passed by reference!
  *
  * @param \DERHANSEN\SfEventMgt\Domain\Model\Event $event Event
  * @param \DERHANSEN\SfEventMgt\Domain\Model\Registration $registration Registration
  * @param RegistrationResult $result Result
  *
  * @return bool
  */
 protected function checkRegistrationSuccess(Event $event, Registration $registration, &$result)
 {
     $success = TRUE;
     if ($event->getEnableRegistration() === FALSE) {
         $success = FALSE;
         $result = RegistrationResult::REGISTRATION_NOT_ENABLED;
     } elseif ($event->getRegistrationDeadline() != NULL && $event->getRegistrationDeadline() < new \DateTime()) {
         $success = FALSE;
         $result = RegistrationResult::REGISTRATION_FAILED_DEADLINE_EXPIRED;
     } elseif ($event->getStartdate() < new \DateTime()) {
         $success = FALSE;
         $result = RegistrationResult::REGISTRATION_FAILED_EVENT_EXPIRED;
     } elseif ($event->getRegistration()->count() >= $event->getMaxParticipants() && $event->getMaxParticipants() > 0) {
         $success = FALSE;
         $result = RegistrationResult::REGISTRATION_FAILED_MAX_PARTICIPANTS;
     } elseif ($event->getFreePlaces() < $registration->getAmountOfRegistrations() && $event->getMaxParticipants() > 0) {
         $success = FALSE;
         $result = RegistrationResult::REGISTRATION_FAILED_NOT_ENOUGH_FREE_PLACES;
     } elseif ($event->getMaxRegistrationsPerUser() < $registration->getAmountOfRegistrations()) {
         $success = FALSE;
         $result = RegistrationResult::REGISTRATION_FAILED_MAX_AMOUNT_REGISTRATIONS_EXCEEDED;
     }
     return $success;
 }
 /**
  * Returns if the given amount of registrations for the event will be registrations for the waitlist
  * (depending on the total amount of registrations and free places)
  *
  * @param \DERHANSEN\SfEventMgt\Domain\Model\Event $event
  * @param int $amountOfRegistrations
  * @return bool
  */
 public function isWaitlistRegistration($event, $amountOfRegistrations)
 {
     if ($event->getMaxParticipants() === 0 || !$event->getEnableWaitlist()) {
         return false;
     }
     $result = false;
     if ($event->getFreePlaces() > 0 && $event->getFreePlaces() < $amountOfRegistrations) {
         $result = true;
     } elseif ($event->getFreePlaces() <= 0) {
         $result = true;
     }
     return $result;
 }