public function Add(DateRange $blackoutDate, $resourceIds, $title, IReservationConflictResolution $reservationConflictResolution, IRepeatOptions $repeatOptions) { if (!$blackoutDate->GetEnd()->GreaterThan($blackoutDate->GetBegin())) { return new BlackoutDateTimeValidationResult(); } $userId = ServiceLocator::GetServer()->GetUserSession()->UserId; $blackoutSeries = BlackoutSeries::Create($userId, $title, $blackoutDate); $blackoutSeries->Repeats($repeatOptions); foreach ($resourceIds as $resourceId) { $blackoutSeries->AddResourceId($resourceId); } $conflictingBlackouts = $this->GetConflictingBlackouts($blackoutSeries); $conflictingReservations = array(); if (empty($conflictingBlackouts)) { $conflictingReservations = $this->GetConflictingReservations($blackoutSeries, $reservationConflictResolution); } $blackoutValidationResult = new BlackoutValidationResult($conflictingBlackouts, $conflictingReservations); if ($blackoutValidationResult->CanBeSaved()) { $this->blackoutRepository->Add($blackoutSeries); } return $blackoutValidationResult; }