householdCompositionRepository->find($composition_id); $household = $this->householdRepository->find($household_id); $this->denyAccessUnlessGranted(HouseholdVoter::EDIT, $household); if (null === $composition) { throw $this->createNotFoundException('Unable to find composition entity.'); } $form = $this->createFormBuilder() ->setAction($this->generateUrl('chill_person_household_composition_delete', [ 'composition_id' => $composition_id, 'household_id' => $household_id, ])) ->setMethod('DELETE') ->add('submit', SubmitType::class, ['label' => 'Delete']) ->getForm(); if (Request::METHOD_DELETE === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { $this->entityManager->remove($composition); $this->entityManager->flush(); $this->addFlash('success', $this->translator ->trans('The composition has been successfully removed.')); return $this->redirectToRoute('chill_person_household_composition_index', [ 'id' => $household_id, ]); } } return $this->render( '@ChillPerson/HouseholdComposition/delete.html.twig', [ 'household' => $household, 'composition' => $composition, 'form' => $form->createView(), ] ); } #[Route(path: '/{_locale}/person/household/{id}/composition/index', name: 'chill_person_household_composition_index')] public function index(Household $household, Request $request): Response { if (!$this->security->isGranted(HouseholdVoter::SEE, $household)) { throw new AccessDeniedException('not allowed to edit a household'); } $count = $this->householdCompositionRepository->countByHousehold($household); $paginator = $this->paginatorFactory->create($count); $compositions = $this->householdCompositionRepository->findByHousehold( $household, ['startDate' => 'DESC', 'id' => 'DESC'], $paginator->getItemsPerPage(), $paginator->getCurrentPageFirstItemNumber() ); return new Response($this->engine->render( '@ChillPerson/HouseholdComposition/index.html.twig', [ 'household' => $household, 'compositions' => $compositions, ] )); } #[Route(path: '/{_locale}/person/household/{id}/composition/new', name: 'chill_person_household_composition_new')] public function newAction(Household $household, Request $request): Response { if ($this->security->isGranted(HouseholdVoter::EDIT, $household)) { $isEdit = $request->query->has('edit'); if ($isEdit) { $householdCompositions = $household->getCompositions()->filter(static fn (HouseholdComposition $composition) => $composition->getId() === $request->query->getInt('edit')); if (1 !== $householdCompositions->count()) { throw new BadRequestHttpException('could not find the composition with this id associated to the household'); } $householdComposition = $householdCompositions->first(); } else { $householdComposition = (new HouseholdComposition()) ->setStartDate(new \DateTimeImmutable()); } $form = $this->formFactory->create(HouseholdCompositionType::class, $householdComposition); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if (!$isEdit) { $this->entityManager->persist($householdComposition); $household->addComposition($householdComposition); } $this->entityManager->flush(); $request->getSession()->getFlashBag()->add( 'success', $this->translator->trans('household_composition.Composition added') ); return new RedirectResponse( $this->urlGenerator->generate('chill_person_household_composition_index', [ 'id' => $household->getId(), ]) ); } if ($form->isSubmitted() && !$form->isValid()) { $request->getSession()->getFlashBag()->add( 'warning', $this->translator->trans('This form contains errors') ); } } return new Response($this->engine->render( '@ChillPerson/HouseholdComposition/create.html.twig', [ 'household' => $household, 'form' => isset($form) ? $form->createView() : null, 'isPosted' => isset($form) ? $form->isSubmitted() : false, 'editId' => $request->query->getInt('edit', -1), ] )); } }