schedulerRepository = $entityManager->getRepository(Scheduler::class); } public function computeScheduler(Report $report): void { $this->removeSchedulerOfReport($report); $this->planScheduler($report); } private function planScheduler(Report $report): void { try { $date = $this->dateBuilder->getNextEvent($report); } catch (NoScheduleException) { return; } $scheduler = new Scheduler($report, $date); $this->entityManager->persist($scheduler); $this->entityManager->flush(); } private function removeSchedulerOfReport(Report $report): void { $scheduler = $this->schedulerRepository->getSchedulerByReport($report); if (!$scheduler) { return; } $this->entityManager->remove($scheduler); $this->entityManager->flush(); } }