/** * @param IRepeatOptions $repeatOptions */ public function Repeats(IRepeatOptions $repeatOptions) { if ($this->seriesUpdateStrategy->CanChangeRepeatTo($this, $repeatOptions)) { Log::Debug('Updating recurrence for series %s', $this->SeriesId()); $this->_repeatOptions = $repeatOptions; foreach ($this->instances as $instance) { // delete all reservation instances which will be replaced if ($this->seriesUpdateStrategy->ShouldInstanceBeRemoved($this, $instance)) { $this->RemoveInstance($instance); } } // create all future instances parent::Repeats($repeatOptions); } }
/** * @param int $userId * @param BookableResource $resource * @param string $title * @param string $description * @param DateRange $reservationDate * @param IRepeatOptions $repeatOptions * @param UserSession $bookedBy * @return ReservationSeries */ public static function Create($userId, BookableResource $resource, $title, $description, $reservationDate, $repeatOptions, UserSession $bookedBy) { $series = new ReservationSeries(); $series->_userId = $userId; $series->_resource = $resource; $series->_title = $title; $series->_description = $description; $series->_bookedBy = $bookedBy; $series->UpdateDuration($reservationDate); $series->Repeats($repeatOptions); return $series; }