Completed Referral functionality

This commit is contained in:
2024-12-08 18:37:45 -05:00
parent 6bde369bcd
commit 065b1ac403
11 changed files with 714 additions and 1 deletions

View File

@ -0,0 +1,122 @@
<?php
namespace App\Controller;
use App\Entity\MemberCase;
use App\Entity\Referral;
use App\Entity\User;
use App\Form\ReferralFormType;
use App\Libs\NavList;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Http\Attribute\CurrentUser;
class ReferralController extends AbstractController
{
public function __construct(
private EntityManagerInterface $entityManager,
private array $navLinks = []
) {
$this->navLinks = NavList::LIST;
}
#[Route('/list-referrals/{id}', name: 'app_list_referrals')]
public function listReferrals(Request $request, #[CurrentUser()] User $user, string $id): Response
{
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
$openReferrals = $this->entityManager->getRepository(Referral::class)->getActiveReferrals($case);
$closedReferrals = $this->entityManager->getRepository(Referral::class)->getClosedReferrals($case);
return $this->render(
'internal/cases/referrals/list-referrals.html.twig',
array_merge(
$this->navLinks,
[
'breadcrumbs' => [
'Case',
'Referrals'
],
'notifications' => $user->retrieveUnreadNotifications(),
'case' => $case,
'openReferrals' => $openReferrals,
'closedReferrals' => $closedReferrals,
]
)
);
}
#[Route('/add-referral/{id}', name: 'app_case_add_referral')]
public function addReferral(Request $request, #[CurrentUser()] User $user, string $id): Response
{
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
$referral = new Referral();
$form = $this->createForm(ReferralFormType::class, $referral);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$referral = $form->getData();
$referral->setMemberCase($case);
$this->entityManager->persist($referral);
$this->entityManager->flush();
return $this->redirectToRoute('app_list_referrals', ['id' => $case->getId()]);
}
return $this->render(
'internal/cases/referrals/add-referral.html.twig',
array_merge(
$this->navLinks,
[
'breadcrumbs' => [
'Case',
'Add Referral'
],
'notifications' => $user->retrieveUnreadNotifications(),
'case' => $case,
'form' => $form,
]
)
);
}
#[Route('/case/{caseId}/edit-referral/{referralId}', name: 'app_case_edit_referral')]
public function editReferral(Request $request, #[CurrentUser()] User $user, string $caseId, string $referralId): Response
{
$referral = $this->entityManager->getRepository(Referral::class)->find($referralId);
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
$form = $this->createForm(ReferralFormType::class, $referral);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$referral = $form->getData();
$this->entityManager->flush();
return $this->redirectToRoute('app_list_referrals', ['id' => $case->getId()]);
}
return $this->render(
'internal/cases/referrals/edit-referral.html.twig',
array_merge(
$this->navLinks,
[
'breadcrumbs' => [
'Case',
'Edit Referral'
],
'notifications' => $user->retrieveUnreadNotifications(),
'case' => $case,
'form' => $form,
'referral' => $referral,
]
)
);
}
}