/**
  * @param EventDate            $date
  * @param RecurrenceCollection $recurrences
  */
 protected function mergeUpdatesWithExistingRecurrences(EventDate $date, RecurrenceCollection $recurrences)
 {
     $oldDates = $this->eventDateRepository->findRecurrencesByUid($date->getUid())->toArray();
     foreach ($recurrences as $recurrence) {
         $updated = false;
         $start = $recurrence->getStart();
         $end = $recurrence->getEnd();
         if ($start == $end) {
             $end = null;
         }
         foreach ($oldDates as $eKey => $old) {
             if ($old->getStart() == $start && $old->getEnd() == $end) {
                 $old->setIsFullDay($date->getIsFullDay());
                 $this->eventDateRepository->update($old);
                 unset($oldDates[$eKey]);
                 $updated = true;
                 break;
             }
         }
         if (!$updated) {
             $new = $this->cloneDateAsRecurrence($date, $start, $end);
             $this->eventDateRepository->add($new);
         }
     }
     foreach ($oldDates as $old) {
         $this->eventDateRepository->remove($old);
     }
     $this->persistenceManager->persistAll();
 }
 /**
  * teaser
  */
 public function teaserAction()
 {
     $demands = array();
     if (isset($this->settings['demands']) && is_array($this->settings['demands']) && count($this->settings['demands']) > 0) {
         $demands = $this->settings['demands'];
     }
     $dates = $this->eventDateRepository->findUpcoming($demands, 1);
     $date = null;
     if ($dates instanceof \TYPO3\CMS\Extbase\Persistence\QueryResultInterface) {
         $date = $dates->getFirst();
     } elseif (is_array($dates)) {
         $date = isset($dates[0]) ? $dates[0] : null;
     }
     $variables = ['date' => $date, 'contentObject' => $this->configurationManager->getContentObject()->data, 'extended' => []];
     $variables = $this->signalSlotDispatcher->dispatch(__CLASS__, 'teaserAction_variables', $variables);
     $this->view->assignMultiple($variables);
     $GLOBALS['TSFE']->addCacheTags(array('tx_qbevents_domain_model_event', 'tx_qbevents_domain_model_eventdate'));
 }