navLinks = NavList::LIST; } #[Route('/list-cases', name: 'app_list_cases')] public function listCases(#[CurrentUser()] User $user): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $this->navLinks['case_list'] = 'nav-link text-white active bg-gradient-dark'; $cases = $this->entityManager->getRepository(MemberCase::class)->findAll(); $workers = $this->entityManager->getRepository(User::class)->getCaseWorkers(); return $this->render( 'internal/cases/list-cases.html.twig', array_merge( $this->navLinks, [ 'breadcrumbs' => [ 'List Cases' ], 'notifications' => $user->retrieveUnreadNotifications(), 'cases' => $cases, 'workers' => $workers, ] ) ); } #[Route('/add-case', name: 'app_add_case')] public function addCase(Request $request, #[CurrentUser()] User $admin): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $this->navLinks['case_list'] = 'nav-link text-white active bg-gradient-dark'; $case = new MemberCase(); $form = $this->createForm(MemberCaseFormType::class, $case); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $case = $form->getData(); $this->entityManager->persist($case); $this->entityManager->flush(); return $this->redirectToRoute('app_list_cases'); } return $this->render( 'internal/admin/cases/add-case.html.twig', array_merge( $this->navLinks, [ 'title' => 'Add Case', 'breadcrumbs' => [ 'Case', 'Add Case' ], 'notifications' => $admin->retrieveUnreadNotifications(), 'form' => $form, 'sources' => $this->entityManager->getRepository(ReferralSource::class)->retrieveOrderedList(), ] ) ); } #[Route('/edit-case/{id}', name: 'app_edit_case')] public function editCase(Request $request, #[CurrentUser()] User $admin, string $id): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $this->navLinks['case_list'] = 'nav-link text-white active bg-gradient-dark'; $case = $this->entityManager->getRepository(MemberCase::class)->find($id); $form = $this->createForm(MemberCaseFormType::class, $case); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $case = $form->getData(); $this->entityManager->persist($case); $this->entityManager->flush(); return $this->redirectToRoute('app_list_cases'); } return $this->render( 'internal/admin/cases/edit-case.html.twig', array_merge( $this->navLinks, [ 'title' => 'Edit Case', 'breadcrumbs' => [ 'Case', 'Edit Case' ], 'notifications' => $admin->retrieveUnreadNotifications(), 'form' => $form, 'case' => $case, 'sources' => $this->entityManager->getRepository(ReferralSource::class)->retrieveOrderedList(), ] ) ); } #[Route('/assign-case/{id}', name: 'app_assign_case')] public function assignCase(string $id, Request $request, #[CurrentUser()] User $admin): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $this->navLinks['case_list'] = 'nav-link text-white active bg-gradient-dark'; $caseWorkers = $this->entityManager->getRepository(User::class)->getCaseWorkers(); $case = $this->entityManager->getRepository(MemberCase::class)->find($id); $prevUc = $this->entityManager->getRepository(UserCase::class)->findBy(['memberCase' => $case]); $uc = new UserCase(); $form = $this->createForm(UserCaseFormType::class, $uc); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $uc = $form->getData(); $uc->setMemberCase($case); $uc->setUser($form->get('user')->getData()); if (count($prevUc) > 0) { $this->entityManager->remove($prevUc[0]); $this->entityManager->flush(); } $this->entityManager->persist($uc); $this->entityManager->flush(); return $this->redirectToRoute('app_list_cases'); } return $this->render( 'internal/admin/cases/assign-case.html.twig', array_merge( $this->navLinks, [ 'title' => 'Assign Case', 'breadcrumbs' => [ 'Case', 'Assign Case' ], 'notifications' => $admin->retrieveUnreadNotifications(), 'form' => $form, 'id' => $id, 'caseWorkers' => $caseWorkers, 'assignedWorkerId' => (count($case->getUserCases()) > 0 ? $case->getUserCases()->first()->getUser()->getId() : null), ] ) ); } }