get("token"); if ($this->isCsrfTokenValid('report-status', $token)) { $reportsService->setClient($report->getClient()); if ($request->get("unDone")){ $todo = $entityManager->getRepository(ReportsTodo::class)->findOneBy([ "report" => $report->getId(), "name" => ReportTodoEnum::COMPLETE ]); $todo->setDeleted(true); $entityManager->persist($todo); $report->setDone(false); } else { foreach (ReportTodoEnum::cases() as $case) { if (!$request->get($case->value)) { continue; } $todo = $entityManager->getRepository(ReportsTodo::class)->findOneBy([ "report" => $report->getId(), "name" => $case->value ]); if (!$todo) { $todo = new ReportsTodo(); $todo->setReport($report); $todo->setName($case); } else { $todo->setDeleted(!$todo->isDeleted()); } if ($todo->getName() === ReportTodoEnum::COMPLETE) { if ($todo->isDeleted()) { $report->setDone(false); } else { $report->setDone(true); } } $entityManager->persist($todo); } } $entityManager->persist($report); $entityManager->flush(); $entityManager->getCache()->evictCollection(Reports::class,"reportsTodos",$report->getId()); $reportsService->tryAddNextReport(); } return $this->redirect($request->headers->get('referer')); } #[Route('/add-next-report', name: 'app_add_next_report')] #[IsGranted('reportEdit')] public function addNextReport(Request $request, EntityManagerInterface $entityManager, AddReports $addReports): Response { $clientId = $request->getPayload()->get('clientId'); $token = $request->getPayload()->get("token"); if ($clientId && $this->isCsrfTokenValid('add-next-report', $token)) { $client = $entityManager->getRepository(Clients::class)->find($clientId); $addReports->setClient($client); $addReports->addNextReport(); } return $this->redirect($request->headers->get('referer')); } #[Route('/edit-first-report', name: 'app_edit_first_report')] #[IsGranted('reportEdit')] public function editFirstReport(Request $request, EntityManagerInterface $entityManager): Response { $clientId = $request->getPayload()->get('clientId'); $date = $request->getPayload()->get('newDate'); $token = $request->getPayload()->get("token"); if ($clientId && $this->isCsrfTokenValid('edit-first-report', $token)) { $report = $entityManager->getRepository(Reports::class)->findBy(["client" => $clientId], ["dateStart"=>"ASC"]); $newDateStart = new \DateTime($date); $i=0; foreach ($report as $item) { $tmp = clone $newDateStart; $tmp->modify('+'.AddReports::NEXT_REPORT_MONTH * $i.' month'); $item->setDateStart($tmp); $entityManager->persist($item); $i++; } $entityManager->flush(); } return $this->redirectToRoute('app_client', ['id'=>$clientId]); } }