public function applyChangeToFutureEvents()
 {
     $startDiff = $this->initalEvent->getStartAtInUTC()->diff($this->initialEventJustBeforeLastChange->getStartAtInUTC());
     $endDiff = $this->initalEvent->getEndAtInUTC()->diff($this->initialEventJustBeforeLastChange->getEndAtInUTC());
     foreach ($this->futureEvents as $futureEvent) {
         $this->futureEventsProposedChanges[$futureEvent->getSlug()] = new EventInRecurSetProposedChangesModel();
         if (($this->initalEventLastChange->getCountryIdChanged() || $this->initalEventLastChange->getVenueIdChanged() || $this->initalEventLastChange->getAreaIdChanged()) && ($this->initalEvent->getCountryId() != $futureEvent->getCountryId() || $this->initalEvent->getAreaId() != $futureEvent->getAreaId() || $this->initalEvent->getVenueId() != $futureEvent->getVenueId())) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCountryAreaVenueIdChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getCountryId() != $futureEvent->getCountryId() || $this->initialEventJustBeforeLastChange->getAreaId() != $futureEvent->getAreaId() || $this->initialEventJustBeforeLastChange->getVenueId() != $futureEvent->getVenueId()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCountryAreaVenueIdChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getSummaryChanged()) {
             $summary = $this->initalEvent->getSummary();
             // change month title
             $currentMonthLong = $this->initalEvent->getStartAtInUTC()->format('F');
             $currentMonthShort = $this->initalEvent->getStartAtInUTC()->format('M');
             if (stripos($summary, $currentMonthLong) !== false) {
                 $summary = str_ireplace($currentMonthLong, $futureEvent->getStartAtInUTC()->format('F'), $summary);
             } else {
                 if (stripos($summary, $currentMonthShort) !== false) {
                     $summary = str_ireplace($currentMonthShort, $futureEvent->getStartAtInUTC()->format('M'), $summary);
                 }
             }
             if ($summary != $futureEvent->getSummary()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setSummary($summary);
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setSummaryChangePossible(true);
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setSummaryChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getDescriptionChanged() && $this->initalEvent->getDescription() != $futureEvent->getDescription()) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setDescriptionChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getDescription() == $futureEvent->getDescription()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setDescriptionChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getUrlChanged() && $this->initalEvent->getUrl() != $futureEvent->getUrl()) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setUrlChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getUrl() == $futureEvent->getUrl()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setUrlChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getTicketUrlChanged() && $this->initalEvent->getTicketUrl() != $futureEvent->getTicketUrl()) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTicketUrlChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getTicketUrl() == $futureEvent->getTicketUrl()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTicketUrlChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getTimezoneChanged() && $this->initalEvent->getTimezone() != $futureEvent->getTimezone()) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTimezoneChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getTimezone() == $futureEvent->getTimezone()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setTimezoneChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getIsPhysicalChanged() && $this->initalEvent->getIsPhysical() != $futureEvent->getIsPhysical()) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsPhysicalChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getIsPhysical() == $futureEvent->getIsPhysical()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsPhysicalChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getIsVirtualChanged() && $this->initalEvent->getIsVirtual() != $futureEvent->getIsVirtual()) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsVirtualChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getIsVirtual() == $futureEvent->getIsVirtual()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsVirtualChangeSelected(true);
             }
         }
         if ($this->initalEventLastChange->getIsCancelledChanged() && $this->initalEvent->getIsCancelled() != $futureEvent->getIsCancelled()) {
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsCancelledChangePossible(true);
             if ($this->initialEventJustBeforeLastChange->getIsCancelled() == $futureEvent->getIsCancelled()) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setIsCancelledChangeSelected(true);
             }
         }
         if ($startDiff->y != 0 || $startDiff->m != 0 || $startDiff->d != 0 || $startDiff->h != 0 || $startDiff->i != 0 || $startDiff->s != 0 || ($endDiff->y != 0 || $endDiff->m != 0 || $endDiff->d != 0 || $endDiff->h != 0 || $endDiff->i != 0 || $endDiff->s != 0)) {
             $start = clone $futureEvent->getStartAtInUTC();
             $start->sub($startDiff);
             $end = clone $futureEvent->getEndAtInUTC();
             $end->sub($endDiff);
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setStartEndAtChangePossible(true);
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setStartEndAtChangeSelected(true);
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setStartAt($start);
             $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setEndAt($end);
         }
         foreach ($this->customFields as $customField) {
             if ($this->initalEventLastChange->hasCustomField($customField) && $this->initalEvent->getCustomField($customField) != $futureEvent->getCustomField($customField)) {
                 $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCustomFieldChangePossible($customField, true);
                 if ($this->initialEventJustBeforeLastChange->getCustomField($customField) == $futureEvent->getCustomField($customField)) {
                     $this->futureEventsProposedChanges[$futureEvent->getSlug()]->setCustomFieldChangeSelected($customField, true);
                 }
             }
         }
     }
 }