/**
  * 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;
     $maxPossibleRegistrations = $event->getFreePlaces();
     $result = array($maxPossibleRegistrations);
     if ($event->getMaxRegistrationsPerUser() <= $maxPossibleRegistrations) {
         $maxPossibleRegistrations = $event->getMaxRegistrationsPerUser();
     }
     if ($maxPossibleRegistrations >= $minPossibleRegistrations) {
         $arrayWithZeroAsIndex = range($minPossibleRegistrations, $maxPossibleRegistrations);
         $result = array_combine(range(1, count($arrayWithZeroAsIndex)), $arrayWithZeroAsIndex);
     }
     return $result;
 }
 /**
  * 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;
 }
Example #3
0
 /**
  * @test
  * @return void
  */
 public function maxRegistrationsPerUserSetsMaxRegistrationsPerUser()
 {
     $this->subject->setMaxRegistrationsPerUser(2);
     $this->assertEquals(2, $this->subject->getMaxRegistrationsPerUser());
 }
 /**
  * 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;
 }
 /**
  * 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
  */
 public function checkRegistrationSuccess($event, $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 && !$event->getEnableWaitlist()) {
         $success = false;
         $result = RegistrationResult::REGISTRATION_FAILED_MAX_PARTICIPANTS;
     } elseif ($event->getFreePlaces() < $registration->getAmountOfRegistrations() && $event->getMaxParticipants() > 0 && !$event->getEnableWaitlist()) {
         $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;
     } elseif ($event->getUniqueEmailCheck() && $this->emailNotUnique($event, $registration->getEmail())) {
         $success = false;
         $result = RegistrationResult::REGISTRATION_FAILED_EMAIL_NOT_UNIQUE;
     } elseif ($event->getRegistration()->count() >= $event->getMaxParticipants() && $event->getMaxParticipants() > 0 && $event->getEnableWaitlist()) {
         $result = RegistrationResult::REGISTRATION_SUCCESSFUL_WAITLIST;
     }
     return $success;
 }