/**
  * @covers EventTicket::getAvailableForDateTime()
  */
 public function testGetAvailableForDatetimeWithQuantity()
 {
     $ticket = new EventTicket();
     $ticket->StartType = 'Date';
     $ticket->StartDate = date('Y-m-d', time() - 3600 * 24);
     $ticket->EndType = 'Date';
     $ticket->EndDate = date('Y-m-d', time() + 3600 * 24);
     $ticket->write();
     $time = new RegisterableDateTime();
     $time->write();
     $ticket->Available = 50;
     $avail = $ticket->getAvailableForDateTime($time);
     $this->assertEquals(50, $avail['available']);
     // Create a registration that consumes some of the tickets.
     $rego = new EventRegistration();
     $rego->Status = 'Valid';
     $rego->TimeID = $time->ID;
     $rego->write();
     $rego->Tickets()->add($ticket, array('Quantity' => 49));
     $avail = $ticket->getAvailableForDateTime($time);
     $this->assertEquals(1, $avail['available']);
     // Then check we can exclude it.
     $avail = $ticket->getAvailableForDateTime($time, $rego->ID);
     $this->assertEquals(50, $avail['available']);
     // Then bump up the quantity so there are no more available.
     $rego->Tickets()->remove($ticket);
     $rego->Tickets()->add($ticket, array('Quantity' => 50));
     $avail = $ticket->getAvailableForDateTime($time);
     $this->assertFalse($avail['available']);
 }
 /**
  * Creates an email instance from a registration object.
  *
  * @param  EventRegistration $registration
  * @return EventRegistrationDetailsEmail
  */
 public static function factory(EventRegistration $registration)
 {
     $email = new self();
     $siteconfig = SiteConfig::current_site_config();
     $email->setTo($registration->Email);
     $email->setSubject(sprintf('Registration Details For %s (%s)', $registration->Time()->EventTitle(), $siteconfig->Title));
     $email->populateTemplate(array('Registration' => $registration, 'SiteConfig' => $siteconfig));
     if ($generator = $registration->Time()->Event()->TicketGenerator) {
         $generator = new $generator();
         $path = $generator->generateTicketFileFor($registration);
         $name = $generator->getTicketFilenameFor($registration);
         $mime = $generator->getTicketMimeTypeFor($registration);
         if ($path) {
             $email->attachFile($path, $name, $mime);
         }
     }
     singleton(get_class())->extend('updateEmail', $email, $registration);
     return $email;
 }
 /**
  * @covers RegisterableDateTime::getRemainingCapacity()
  */
 public function testGetRemainingCapacity()
 {
     $event = $this->objFromFixture('RegisterableEvent', 'event');
     $datetime = $this->objFromFixture('RegisterableDateTime', 'datetime');
     $ticket = $this->objFromFixture('EventTicket', 'ticket');
     $datetime->Capacity = 0;
     $datetime->write();
     $this->assertEquals(true, $datetime->getRemainingCapacity());
     $datetime->Capacity = 50;
     $datetime->write();
     $this->assertEquals(50, $datetime->getRemainingCapacity());
     $rego = new EventRegistration();
     $rego->TimeID = $datetime->ID;
     $rego->write();
     $rego->Tickets()->add($ticket, array('Quantity' => 49));
     $this->assertEquals(1, $datetime->getRemainingCapacity());
     $this->assertEquals(50, $datetime->getRemainingCapacity($rego->ID));
     $rego->Tickets()->remove($ticket);
     $rego->Tickets()->add($ticket, array('Quantity' => 50));
     $this->assertFalse(!!$datetime->getRemainingCapacity());
     $this->assertEquals(50, $datetime->getRemainingCapacity($rego->ID));
 }
예제 #4
0
                         // on the waitinglist
                         register_error(elgg_echo("event_manager:action:register:email:account_exists:waiting"));
                         forward($forward_url);
                     case EVENT_MANAGER_RELATION_ATTENDING_PENDING:
                     default:
                         // pending confirmation resend mail
                         event_manager_send_registration_validation_email($event, $object);
                         register_error(elgg_echo("event_manager:action:register:email:account_exists:pending"));
                         forward($forward_url);
                 }
             }
         }
     }
     if (!$object) {
         // create new registration
         $object = new EventRegistration();
         $object->title = 'EventRegistrationNotLoggedinUser';
         $object->description = 'EventRegistrationNotLoggedinUser';
         $object->owner_guid = $event->getGUID();
         $object->container_guid = $event->getGUID();
         $object->save();
     }
     elgg_set_ignore_access($old_ia);
 }
 // save all answers
 foreach ($answers as $question_guid => $answer) {
     if (!empty($question_guid) && ($question = get_entity($question_guid))) {
         if ($question instanceof EventRegistrationQuestion) {
             $question->updateAnswerFromUser($event, $answer, $object->getGUID());
         }
     } else {
 /**
  * Allows a user to view the details of their registration.
  *
  * @param SS_HTTPRequest $request
  * @return EventRegistrationDetailsController
  */
 public function registration($request)
 {
     $id = $request->param('ID');
     if (!ctype_digit($id)) {
         $this->httpError(404);
     }
     $rego = EventRegistration::get()->byID($id);
     if (!$rego || $rego->Time()->EventID != $this->ID) {
         $this->httpError(404);
     }
     $request->shift();
     $request->shiftAllParams();
     return new EventRegistrationDetailsController($this, $rego);
 }