security->isGranted('ROLE_USER')) { throw new AccessDeniedException('Access denied: ROLE_USER required.'); } $recurrence = $this->taskRecurrenceRepository->find($recurrenceId); if (null === $recurrence) { throw new InvalidArgumentException(sprintf('TaskRecurrence with ID %d not found.', $recurrenceId)); } if (null !== $type) { $recurrence->setType(RecurrenceType::from($type)); } if (null !== $interval) { $recurrence->setInterval($interval); } if (null !== $daysOfWeek) { $recurrence->setDaysOfWeek($daysOfWeek); } if (null !== $dayOfMonth) { $recurrence->setDayOfMonth($dayOfMonth); } if (null !== $weekOfMonth) { $recurrence->setWeekOfMonth($weekOfMonth); } if (null !== $endDate) { $recurrence->setEndDate(new DateTimeImmutable($endDate)); } if (null !== $maxOccurrences) { $recurrence->setMaxOccurrences($maxOccurrences); } $this->entityManager->flush(); foreach ($recurrence->getTasks() as $task) { $this->calDavService->syncTask($task); } $this->entityManager->flush(); return json_encode([ 'id' => $recurrence->getId(), 'type' => $recurrence->getType()?->value, 'interval' => $recurrence->getInterval(), 'daysOfWeek' => $recurrence->getDaysOfWeek(), 'dayOfMonth' => $recurrence->getDayOfMonth(), 'weekOfMonth' => $recurrence->getWeekOfMonth(), 'endDate' => $recurrence->getEndDate()?->format('Y-m-d'), 'maxOccurrences' => $recurrence->getMaxOccurrences(), ]); } }