em = $entityManager; $this->translator = $translator; $this->chillMainLogger = $chillMainLogger; $this->familyMemberRepository = $familyMemberRepository; } /** * @Route( * "{_locale}/family-members/family-members/by-person/{id}", * name="chill_family_members_family_members_index" * ) */ public function indexAction(Person $person) { $this->denyAccessUnlessGranted(FamilyMemberVoter::SHOW, $person); $familyMembers = $this->familyMemberRepository->findByPerson($person); return $this->render('ChillAMLIFamilyMembersBundle:FamilyMember:index.html.twig', [ 'person' => $person, 'familyMembers' => $familyMembers ]); } /** * @Route( * "{_locale}/family-members/family-members/by-person/{id}/new", * name="chill_family_members_family_members_new" * ) */ public function newAction(Person $person, Request $request) { $familyMember = (new FamilyMember())->setPerson($person); $this->denyAccessUnlessGranted(FamilyMemberVoter::CREATE, $familyMember); $form = $this->createForm(FamilyMemberType::class, $familyMember); $form->add('submit', SubmitType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->em->persist($familyMember); $this->em->flush(); $this->addFlash('success', $this->translator->trans('Family member created')); return $this->redirectToRoute('chill_family_members_family_members_index', [ 'id' => $person->getId() ]); } return $this->render('ChillAMLIFamilyMembersBundle:FamilyMember:new.html.twig', [ 'form' => $form->createView(), 'person' => $person ]); } /** * @Route( * "{_locale}/family-members/family-members/{id}/edit", * name="chill_family_members_family_members_edit" * ) */ public function editAction(FamilyMember $familyMember, Request $request) { $this->denyAccessUnlessGranted(FamilyMemberVoter::UPDATE, $familyMember); $form = $this->createForm(FamilyMemberType::class, $familyMember); $form->add('submit', SubmitType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->em->flush(); $this->addFlash('success', $this->translator->trans('Family member updated')); return $this->redirectToRoute('chill_family_members_family_members_index', [ 'id' => $familyMember->getPerson()->getId() ]); } return $this->render('ChillAMLIFamilyMembersBundle:FamilyMember:edit.html.twig', [ 'familyMember' => $familyMember, 'form' => $form->createView(), 'person' => $familyMember->getPerson() ]); } /** * * @Route( * "{_locale}/family-members/family-members/{id}/delete", * name="chill_family_members_family_members_delete" * ) */ public function deleteAction(FamilyMember $familyMember, Request $request): Response { $this->denyAccessUnlessGranted(FamilyMemberVoter::DELETE, $familyMember, 'You are not ' . 'allowed to delete this family membership'); $form = $this->createDeleteForm(); if ($request->getMethod() === Request::METHOD_DELETE) { $form->handleRequest($request); if ($form->isValid()) { $this->chillMainLogger->notice("A family member has been removed", [ 'by_user' => $this->getUser()->getUsername(), 'family_member_id' => $familyMember->getId(), 'name' => $familyMember->getFirstname()." ".$familyMember->getLastname(), 'link' => $familyMember->getLink() ]); $this->em->remove($familyMember); $this->em->flush(); $this->addFlash('success', $this->translator ->trans("The family member has been successfully removed.")); return $this->redirectToRoute('chill_family_members_family_members_index', [ 'id' => $familyMember->getPerson()->getId() ]); } } return $this->render('ChillAMLIFamilyMembersBundle:FamilyMember:confirm_delete.html.twig', [ 'familyMember' => $familyMember, 'delete_form' => $form->createView() ]); } /** * @Route( * "{_locale}/family-members/family-members/{id}/view", * name="chill_family_members_family_members_view" * ) */ public function viewAction(FamilyMember $familyMember) { $this->denyAccessUnlessGranted(FamilyMemberVoter::SHOW, $familyMember); return $this->render('ChillAMLIFamilyMembersBundle:FamilyMember:view.html.twig', [ 'familyMember' => $familyMember ]); } /** * Creates a form to delete a help request entity by id. */ private function createDeleteForm(): FormInterface { return $this ->createFormBuilder() ->setMethod(Request::METHOD_DELETE) ->add('submit', SubmitType::class, ['label' => 'Delete']) ->getForm() ; } }