mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-10-09 17:02:46 +02:00
bubble fraicheur des completions ajouté
This commit is contained in:
parent
cd8369d08c
commit
93086eba60
18 changed files with 179 additions and 66 deletions
|
@ -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]);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue