fix: SonarQube ClientsController - constantes, params, complexite

- Constantes WELCOME_SUBJECT et WELCOME_TEMPLATE (literals dupliques 3x)
- Suppression dispatchPostAction (10 params) : match inline dans show()
- handleContactForm : elseif au lieu de 2 if independants (CC reduite)
- 21 -> 19 methodes (sous la limite de 20)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-04-08 09:00:14 +02:00
parent 598cb2cd3a
commit 5c1d8710d5

View File

@@ -32,6 +32,9 @@ use Twig\Environment;
#[IsGranted('ROLE_EMPLOYE')]
class ClientsController extends AbstractController
{
private const WELCOME_SUBJECT = 'CRM E-Cosplay - Bienvenue dans votre espace client';
private const WELCOME_TEMPLATE = 'emails/client_created.html.twig';
#[Route('', name: 'index')]
public function index(CustomerRepository $customerRepository, EntityManagerInterface $em): Response
{
@@ -100,8 +103,8 @@ class ClientsController extends AbstractController
$setPasswordUrl = $this->generateUrl('app_set_password', ['token' => $user->getTempPassword()], UrlGeneratorInterface::ABSOLUTE_URL);
$mailer->sendEmail(
$user->getEmail(),
'CRM E-Cosplay - Bienvenue dans votre espace client',
$twig->render('emails/client_created.html.twig', [
self::WELCOME_SUBJECT,
$twig->render(self::WELCOME_TEMPLATE, [
'firstName' => $user->getFirstName(),
'email' => $user->getEmail(),
'setPasswordUrl' => $setPasswordUrl,
@@ -354,7 +357,21 @@ class ClientsController extends AbstractController
$tab = $request->query->getString('tab', 'info');
if ('POST' === $request->getMethod()) {
return $this->dispatchPostAction($tab, $request, $customer, $em, $ovhService, $cloudflareService, $dnsCheckService, $passwordHasher, $mailer, $twig);
if ('info' === $tab) {
$this->populateCustomerData($request, $customer);
$customer->setUpdatedAt(new \DateTimeImmutable());
$em->flush();
$this->addFlash('success', 'Informations mises a jour.');
return $this->redirectToRoute('app_admin_clients_show', ['id' => $customer->getId()]);
}
return match ($tab) {
'contacts' => $this->handleContactForm($request, $customer, $em),
'ndd' => $this->handleDomainForm($request, $customer, $em, $ovhService, $cloudflareService, $dnsCheckService),
'securite' => $this->handleSecurityForm($request, $customer, $em, $passwordHasher, $mailer, $twig),
default => $this->redirectToRoute('app_admin_clients_show', ['id' => $customer->getId(), 'tab' => $tab]),
};
}
$this->ensureDefaultContact($customer, $em);
@@ -379,25 +396,6 @@ class ClientsController extends AbstractController
]);
}
private function dispatchPostAction(string $tab, Request $request, Customer $customer, EntityManagerInterface $em, OvhService $ovhService, CloudflareService $cloudflareService, DnsCheckService $dnsCheckService, UserPasswordHasherInterface $passwordHasher, MailerService $mailer, Environment $twig): Response
{
if ('info' === $tab) {
$this->populateCustomerData($request, $customer);
$customer->setUpdatedAt(new \DateTimeImmutable());
$em->flush();
$this->addFlash('success', 'Informations mises a jour.');
return $this->redirectToRoute('app_admin_clients_show', ['id' => $customer->getId()]);
}
return match ($tab) {
'contacts' => $this->handleContactForm($request, $customer, $em),
'ndd' => $this->handleDomainForm($request, $customer, $em, $ovhService, $cloudflareService, $dnsCheckService),
'securite' => $this->handleSecurityForm($request, $customer, $em, $passwordHasher, $mailer, $twig),
default => $this->redirectToRoute('app_admin_clients_show', ['id' => $customer->getId(), 'tab' => $tab]),
};
}
private function handleContactForm(Request $request, Customer $customer, EntityManagerInterface $em): Response
{
$action = $request->request->getString('contact_action');
@@ -416,9 +414,7 @@ class ClientsController extends AbstractController
$em->flush();
$this->addFlash('success', 'Contact '.$firstName.' '.$lastName.' ajoute.');
}
}
if ('delete' === $action) {
} elseif ('delete' === $action) {
$contactId = $request->request->getInt('contact_id');
$contact = $em->getRepository(\App\Entity\CustomerContact::class)->find($contactId);
if (null !== $contact && $contact->getCustomer() === $customer) {
@@ -537,8 +533,8 @@ class ClientsController extends AbstractController
$setPasswordUrl = $this->generateUrl('app_set_password', ['token' => $user->getTempPassword()], UrlGeneratorInterface::ABSOLUTE_URL);
$mailer->sendEmail(
$user->getEmail(),
'CRM E-Cosplay - Bienvenue dans votre espace client',
$twig->render('emails/client_created.html.twig', [
self::WELCOME_SUBJECT,
$twig->render(self::WELCOME_TEMPLATE, [
'firstName' => $user->getFirstName(),
'email' => $user->getEmail(),
'setPasswordUrl' => $setPasswordUrl,
@@ -573,8 +569,8 @@ class ClientsController extends AbstractController
$setPasswordUrl = $this->generateUrl('app_set_password', ['token' => $user->getTempPassword()], UrlGeneratorInterface::ABSOLUTE_URL);
$mailer->sendEmail(
$user->getEmail(),
'CRM E-Cosplay - Bienvenue dans votre espace client',
$twig->render('emails/client_created.html.twig', [
self::WELCOME_SUBJECT,
$twig->render(self::WELCOME_TEMPLATE, [
'firstName' => $user->getFirstName(),
'email' => $user->getEmail(),
'setPasswordUrl' => $setPasswordUrl,