/** * @param Reservation $instance * @param ReservationSeries $series * @param IReservedItemView $existingItem * @param BookableResource[] $keyedResources * @return bool */ protected function IsInConflict(Reservation $instance, ReservationSeries $series, IReservedItemView $existingItem, $keyedResources) { if ($existingItem->GetId() == $instance->ReservationId() || $series->IsMarkedForDelete($existingItem->GetId()) || $series->IsMarkedForUpdate($existingItem->GetId())) { return false; } return parent::IsInConflict($instance, $series, $existingItem, $keyedResources); }
public function testValidatesEachDateThatAReservationRepeatsOn() { $start = Date::Parse('2010-01-01'); $end = Date::Parse('2010-01-02'); $reservationDates = new DateRange($start, $end); $twoRepetitions = new RepeatWeekly(1, $start->AddDays(14), array($start->Weekday())); $repeatDates = $twoRepetitions->GetDates($reservationDates); $reservation = new TestReservationSeries(); $reservation->WithResource(new FakeBookableResource(1)); $reservation->WithDuration($reservationDates); $reservation->WithRepeatOptions($twoRepetitions); $strategy = $this->getMock('IResourceAvailabilityStrategy'); $strategy->expects($this->exactly(1 + count($repeatDates)))->method('GetItemsBetween')->with($this->anything(), $this->anything())->will($this->returnValue(array())); $rule = new ResourceAvailabilityRule($strategy, 'UTC'); $result = $rule->Validate($reservation); }