public function __construct(ExistingReservationSeries $series) { foreach ($series->Accessories() as $accessory) { $this->Accessories[] = new ReservationAccessoryView($accessory->AccessoryId, $accessory->QuantityReserved, $accessory->Name, null); } foreach ($series->AdditionalResources() as $resource) { $this->AdditionalResourceIds[] = $resource->GetId(); } foreach ($series->AddedAttachments() as $attachment) { $this->Attachments[] = new ReservationAttachmentView($attachment->FileId(), $series->SeriesId(), $attachment->FileName()); } foreach ($series->AttributeValues() as $av) { $this->Attributes[] = $av; } $this->Description = $series->Description(); $this->EndDate = $series->CurrentInstance()->EndDate(); $this->OwnerId = $series->UserId(); $this->ReferenceNumber = $series->CurrentInstance()->ReferenceNumber(); $this->ReservationId = $series->CurrentInstance()->ReservationId(); $this->ResourceId = $series->ResourceId(); foreach ($series->AllResources() as $resource) { $this->Resources[] = new ReservationResourceView($resource->GetId(), $resource->GetName(), $resource->GetAdminGroupId(), $resource->GetScheduleId(), $resource->GetScheduleAdminGroupId(), $resource->GetStatusId()); } $this->ScheduleId = $series->ScheduleId(); $this->SeriesId = $series->SeriesId(); $this->StartDate = $series->CurrentInstance()->StartDate(); $this->StatusId = $series->StatusId(); }
/** * @param ExistingReservationSeries $series * @return mixed */ public function EarliestDateToKeep($series) { $startTimeConstraint = Configuration::Instance()->GetSectionKey(ConfigSection::RESERVATION, ConfigKeys::RESERVATION_START_TIME_CONSTRAINT); if (ReservationStartTimeConstraint::IsCurrent($startTimeConstraint)) { return $series->CurrentInstance()->StartDate(); } if (ReservationStartTimeConstraint::IsNone($startTimeConstraint)) { return Date::Min(); } return Date::Now(); }
/** * @param ExistingReservationSeries $reservationSeries */ public function HandleReservation($reservationSeries) { Log::Debug("Deleting reservation %s", $reservationSeries->CurrentInstance()->ReferenceNumber()); $this->handler->Handle($reservationSeries, $this->page); }
public function testUpdateSingleInstanceToAnEarlierTime() { $now = Date::Now(); $newStart = Date::Parse('2010-01-01 04:00:00', 'UTC'); $start = Date::Parse('2010-01-01 05:00:00', 'UTC'); $end = Date::Parse('2010-01-01 07:00:00', 'UTC'); $future1 = new TestReservation('1', new DateRange($now->AddDays(5), $now->AddDays(5))); $future2 = new TestReservation('2', new DateRange($now->AddDays(6), $now->AddDays(6))); $current = new TestReservation('3', new DateRange($start, $end)); $existing = new ExistingReservationSeries(); $existing->WithInstance($future1); $existing->WithInstance($future2); $existing->WithCurrentInstance($current); $existing->ApplyChangesTo(SeriesUpdateScope::ThisInstance); $existing->UpdateDuration(new DateRange($newStart, $end)); $newCurrent = $existing->CurrentInstance(); $this->assertTrue($newCurrent->StartDate()->Equals($newStart)); $this->assertTrue($newCurrent->EndDate()->Equals($end)); }