| Current Path : /var/www/v3.cesa.co.za/src/MemberBundle/Controller/ |
| Current File : /var/www/v3.cesa.co.za/src/MemberBundle/Controller/MemberFirmTransformationPortalController.php |
<?php
namespace App\MemberBundle\Controller;
use App\MemberBundle\Form\Type\MemberFirmTransformationPortalType;
use App\MemberBundle\Service\MemberFirmTransformationPortalService;
use App\UserBundle\Entity\UserList;
use App\UserBundle\Entity\UserLogin;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
/**
* Member portal transformation declaration (member firm users).
*/
class MemberFirmTransformationPortalController extends AbstractController
{
#[Route('/member-firm/transformation', name: 'member_firm_transformation_form', methods: ['GET', 'POST'])]
#[IsGranted('ROLE_MEMBER_FIRM')]
public function edit(
Request $request,
MemberFirmTransformationPortalService $portalService,
): Response {
$user = $this->getUser();
if (!$user instanceof UserList && !$user instanceof UserLogin) {
throw $this->createAccessDeniedException();
}
$contact = $portalService->resolvePortalContact($user);
if ($contact === null) {
throw $this->createAccessDeniedException(
'Your login is not linked to a current CESA member firm contact record.'
);
}
$firm = $portalService->getMemberFirmForContact($contact);
if ($firm === null) {
throw $this->createAccessDeniedException('Your contact record is not linked to a member firm.');
}
$declaration = $portalService->prepareDeclarationCapture($firm);
$form = $this->createForm(MemberFirmTransformationPortalType::class, $declaration->capture);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var \App\MemberBundle\Form\Model\MemberFirmTransformationCapture $data */
$data = $form->getData();
$portalService->saveDeclaration($firm, $data);
$this->addFlash(
'success',
sprintf('Transformation declaration for %d has been saved.', $declaration->declarationYear),
);
return $this->redirectToRoute('member_firm_transformation_form');
}
return $this->render('@MemberBundle/Portal/transformation_edit.html.twig', [
'form' => $form,
'firmName' => $firm->getFirmName(),
'contactName' => trim(($contact->getContactFirstName() ?? '').' '.($contact->getContactSurname() ?? '')),
'declarationYear' => $declaration->declarationYear,
'prefilledFromYear' => $declaration->prefilledFromYear,
'hasCurrentYearDeclaration' => $declaration->hasCurrentYearDeclaration,
]);
}
}