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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user