fix: réduire returns de applyNextNumber (4→2) + exclure templates email SonarQube
OrderNumberController : - Extraction validateNumber() avec les 3 validations (format, existence, minimum) - applyNextNumber réduit à 2 returns (erreur validation ou null succès) sonar-project.properties : - Ajout templates/email/** et templates/emails/** dans sonar.exclusions (templates HTML email non analysables par SonarQube) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ sonar.sourceEncoding=UTF-8
|
||||
sonar.php.version=8.4
|
||||
|
||||
# Exclusions
|
||||
sonar.exclusions=vendor/**,var/**,public/bundles/**,node_modules/**,assets/vendor/**,migrations/**,src/Repository/**,src/Controller/WebhookDocuSealController.php,src/Controller/DnsReportController.php,src/Command/CheckDnsCommand.php,src/Command/CloudflareDnsCleanCommand.php,src/Service/AwsSesService.php,src/Service/CloudflareService.php,src/Service/DnsInfraHelper.php,src/Service/DnsCheckService.php,src/Service/StripePriceService.php,src/Service/StripeWebhookService.php,src/Service/MailcowService.php
|
||||
sonar.exclusions=vendor/**,var/**,public/bundles/**,node_modules/**,assets/vendor/**,migrations/**,src/Repository/**,templates/email/**,templates/emails/**,src/Controller/WebhookDocuSealController.php,src/Controller/DnsReportController.php,src/Command/CheckDnsCommand.php,src/Command/CloudflareDnsCleanCommand.php,src/Service/AwsSesService.php,src/Service/CloudflareService.php,src/Service/DnsInfraHelper.php,src/Service/DnsCheckService.php,src/Service/StripePriceService.php,src/Service/StripeWebhookService.php,src/Service/MailcowService.php
|
||||
|
||||
# Coverage
|
||||
sonar.php.coverage.reportPaths=var/reports/coverage.xml
|
||||
|
||||
@@ -47,24 +47,16 @@ class OrderNumberController extends AbstractController
|
||||
|
||||
private function applyNextNumber(Request $request, OrderNumberRepository $repository, EntityManagerInterface $em): ?string
|
||||
{
|
||||
$error = $this->validateNumber($request->request->getString('next_number'), $repository);
|
||||
if (null !== $error) {
|
||||
return $error;
|
||||
}
|
||||
|
||||
$newNumber = trim($request->request->getString('next_number'));
|
||||
|
||||
if ('' === $newNumber || !preg_match('/^\d{2}\/\d{4}-\d{5}$/', $newNumber)) {
|
||||
return 'Format invalide. Utilisez le format MM/YYYY-XXXXX (ex: 04/2026-00042).';
|
||||
}
|
||||
|
||||
if (null !== $repository->findOneBy(['numOrder' => $newNumber])) {
|
||||
return 'Le numero '.$newNumber.' existe deja.';
|
||||
}
|
||||
|
||||
$parts = explode('-', $newNumber);
|
||||
$prefix = $parts[0].'-';
|
||||
$previousNum = (int) $parts[1] - 1;
|
||||
|
||||
if ($previousNum < 0) {
|
||||
return 'Le numero doit etre au minimum 00001.';
|
||||
}
|
||||
|
||||
$previousNumOrder = $prefix.str_pad((string) $previousNum, 5, '0', \STR_PAD_LEFT);
|
||||
|
||||
if (null === $repository->findOneBy(['numOrder' => $previousNumOrder]) && $previousNum > 0) {
|
||||
@@ -78,4 +70,24 @@ class OrderNumberController extends AbstractController
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private function validateNumber(string $rawNumber, OrderNumberRepository $repository): ?string
|
||||
{
|
||||
$newNumber = trim($rawNumber);
|
||||
|
||||
if ('' === $newNumber || !preg_match('/^\d{2}\/\d{4}-\d{5}$/', $newNumber)) {
|
||||
return 'Format invalide. Utilisez le format MM/YYYY-XXXXX (ex: 04/2026-00042).';
|
||||
}
|
||||
|
||||
if (null !== $repository->findOneBy(['numOrder' => $newNumber])) {
|
||||
return 'Le numero '.$newNumber.' existe deja.';
|
||||
}
|
||||
|
||||
$counter = (int) explode('-', $newNumber)[1];
|
||||
if ($counter < 1) {
|
||||
return 'Le numero doit etre au minimum 00001.';
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user