bubble fraicheur des completions ajouté

This commit is contained in:
Tykayn 2025-06-24 13:16:48 +02:00 committed by tykayn
parent cd8369d08c
commit 93086eba60
18 changed files with 179 additions and 66 deletions

View file

@ -16,6 +16,7 @@ use Symfony\Component\HttpFoundation\Request;
use function uuid_create;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\JsonResponse;
use Twig\Environment;
final class AdminController extends AbstractController
{
@ -23,7 +24,8 @@ final class AdminController extends AbstractController
public function __construct(
private EntityManagerInterface $entityManager,
private Motocultrice $motocultrice,
private BudgetService $budgetService
private BudgetService $budgetService,
private Environment $twig
) {
}
@ -99,6 +101,10 @@ final class AdminController extends AbstractController
$this->entityManager->persist($place);
$stats->addPlace($place);
$processedCount++;
// Générer le contenu de l'email avec le template
$emailContent = $this->twig->render('admin/email_content.html.twig', ['place' => $place]);
$place->setEmailContent($emailContent);
} elseif ($updateExisting) {
// Mettre à jour les données depuis Overpass uniquement si updateExisting est true
$existingPlace->update_place_from_overpass_data($placeData);
@ -443,6 +449,8 @@ final class AdminController extends AbstractController
$overpass_osm_ids = array_map(fn($place) => $place['id'], $places_overpass);
$batchSize = 200;
$i = 0;
foreach ($places_overpass as $placeData) {
// Vérifier si le lieu existe déjà (optimisé)
$existingPlace = $placesByOsmId[$placeData['id']] ?? null;
@ -471,6 +479,10 @@ final class AdminController extends AbstractController
$this->entityManager->persist($place);
$stats->addPlace($place);
$processedCount++;
// Générer le contenu de l'email avec le template
$emailContent = $this->twig->render('admin/email_content.html.twig', ['place' => $place]);
$place->setEmailContent($emailContent);
} elseif ($updateExisting) {
$existingPlace->setDead(false);
$existingPlace->update_place_from_overpass_data($placeData);
@ -478,19 +490,19 @@ final class AdminController extends AbstractController
$this->entityManager->persist($existingPlace);
$updatedCount++;
}
}
// Supprimer les lieux qui ne sont plus dans la réponse Overpass, si activé
if ($deleteMissing) {
$db_places = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $insee_code]);
foreach ($db_places as $db_place) {
if (!in_array($db_place->getOsmId(), $overpass_osm_ids)) {
$this->entityManager->remove($db_place);
$deletedCount++;
}
$i++;
// Flush/clear Doctrine tous les X lieux pour éviter l'explosion mémoire
if (($i % $batchSize) === 0) {
$this->entityManager->flush();
$this->entityManager->clear();
// Recharger les stats après clear
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
}
}
// Flush final
$this->entityManager->flush();
$this->entityManager->clear();
// Récupérer tous les commerces de la zone qui n'ont pas été supprimés
$commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $insee_code]);