Completed Referral functionality
This commit is contained in:
122
src/Controller/ReferralController.php
Normal file
122
src/Controller/ReferralController.php
Normal 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,
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user