addArgument('ville', InputArgument::REQUIRED, 'Code INSEE ou nom de la ville à mettre à jour'); } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $inputVille = $input->getArgument('ville'); $stats = null; if (ctype_digit($inputVille)) { // Recherche par code INSEE $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $inputVille]); if (!$stats) { $io->error("Aucune stats trouvée pour le code INSEE $inputVille."); return Command::FAILURE; } } else { // Recherche par nom (insensible à la casse) $qb = $this->entityManager->getRepository(Stats::class)->createQueryBuilder('s'); $qb->where('LOWER(s.name) = :name') ->setParameter('name', mb_strtolower($inputVille)); $results = $qb->getQuery()->getResult(); if (count($results) === 0) { $io->error("Aucune ville trouvée avec le nom '$inputVille'."); return Command::FAILURE; } elseif (count($results) > 1) { $io->error("Plusieurs villes trouvées pour le nom '$inputVille'. Veuillez préciser le code INSEE."); foreach ($results as $stat) { $io->text("- " . $stat->getName() . " (" . $stat->getZone() . ")"); } return Command::FAILURE; } $stats = $results[0]; } $this->followUpService->generateCityFollowUps($stats, $this->motocultrice, $this->entityManager); $io->success("Les CityFollowUp de la ville " . $stats->getName() . " (" . $stats->getZone() . ") ont été mis à jour."); return Command::SUCCESS; } }