Add referral source content

This commit is contained in:
2024-12-05 01:05:35 -05:00
parent a38e63add9
commit e25eff2d49
7 changed files with 509 additions and 0 deletions

View File

@ -0,0 +1,120 @@
<?php
namespace App\Controller;
use App\Entity\ReferralSource;
use App\Entity\User;
use App\Form\ReferralSourceFormType;
use App\Libs\NavList;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\CurrentUser;
class ReferralSourceController extends AbstractController
{
public function __construct(
private EntityManagerInterface $entityManager,
private array $navList = []
) {
$this->navList = NavList::LIST;
}
#[Route('/list-referral-sources', name: 'app_referral_source')]
public function listReferralSources(#[CurrentUser()] User $user): Response
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
$this->navList['referral_sources'] = 'nav-link text-white active bg-gradient-dark';
$sources = $this->entityManager->getRepository(ReferralSource::class)->retrieveOrderedList();
return $this->render(
'internal/admin/referral_source/list-referral-sources.html.twig',
array_merge(
$this->navList,
[
'sources' => $sources,
'notifications' => $user->retrieveUnreadNotifications(),
'breadcrumbs' => [
'Referral Sources'
]
]
)
);
}
#[Route('/add-source', name: 'app_add_source')]
public function addSource(Request $request, #[CurrentUser()] User $user): Response
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
$this->navList['referral_sources'] = 'nav-link text-white active bg-gradient-dark';
$rs = new ReferralSource();
$form = $this->createForm(ReferralSourceFormType::class, $rs);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$rs = $form->getData();
$this->entityManager->persist($rs);
$this->entityManager->flush();
return $this->redirectToRoute('app_referral_source');
}
return $this->render(
'internal/admin/referral_source/add-source.html.twig',
array_merge(
$this->navList,
[
'form' => $form,
'notifications' => $user->retrieveUnreadNotifications(),
'breadcrumbs' => [
'Referral Sources',
'Add Source'
]
]
)
);
}
#[Route('/edit-source/{id}', name: 'app_edit_source')]
public function editSource(Request $request, #[CurrentUser()] User $user, string $id): Response
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
$this->navList['referral_sources'] = 'nav-link text-white active bg-gradient-dark';
$rs = $this->entityManager->getRepository(ReferralSource::class)->find($id);
$form = $this->createForm(ReferralSourceFormType::class, $rs);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$rs = $form->getData();
$this->entityManager->persist($rs);
$this->entityManager->flush();
return $this->redirectToRoute('app_referral_source');
}
return $this->render(
'internal/admin/referral_source/edit-source.html.twig',
array_merge(
$this->navList,
[
'form' => $form,
'notifications' => $user->retrieveUnreadNotifications(),
'breadcrumbs' => [
'Referral Sources',
'Edit Source'
]
]
)
);
}
}