diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 0515eb92..5aa5f9bd 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -235,10 +235,12 @@ final class AdminController extends AbstractController public function calculer_stats(string $insee_code): Response { // Récupérer tous les commerces de la zone - $commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $insee_code, 'dead' => false]); + // $commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $insee_code, 'dead' => false]); // Récupérer les stats existantes pour la zone $stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]); + $commerces = $stats->getPlaces(); + if(!$stats) { // Si aucune stat n'existe, on en crée une vide pour éviter les erreurs, mais sans la sauvegarder $stats = new Stats(); @@ -254,31 +256,11 @@ final class AdminController extends AbstractController ->orderBy('sh.id', 'DESC') ->setMaxResults(365) ->getQuery() - ->getResult(); - - /* - // La page de statistiques ne doit pas modifier les données, seulement les afficher. - // La mise à jour des statistiques se fait lors du labourage. - - // Calculer les statistiques - $calculatedStats = $this->motocultrice->calculateStats($commerces); - - // Mettre à jour les stats pour la zone donnée - $stats->setPlacesCount($calculatedStats['places_count']); - // ... (plus de setters) ... - $stats->setCompletionPercent($calculatedStats['completion_percent']); - - // ... (boucle foreach sur commerces) ... - - $stats->computeCompletionPercent(); - - $this->entityManager->persist($stats); - $this->entityManager->flush(); - */ + ->getResult(); // Données pour le graphique des modifications par trimestre $modificationsByQuarter = []; - foreach ($stats->getPlaces() as $commerce) { + foreach ($commerces as $commerce) { if ($commerce->getOsmDataDate()) { $date = $commerce->getOsmDataDate(); $year = $date->format('Y'); @@ -292,16 +274,36 @@ final class AdminController extends AbstractController } ksort($modificationsByQuarter); // Trier par clé (année-trimestre) - $overpass_query = $this->motocultrice->get_query_places($insee_code); - $overpass_query_url = "https://overpass-turbo.eu/?Q=" . urlencode($overpass_query); + $geojson = [ + 'type' => 'FeatureCollection', + 'features' => [] + ]; + + foreach ($commerces as $commerce) { + if ($commerce->getLat() && $commerce->getLon()) { + $geojson['features'][] = [ + 'type' => 'Feature', + 'geometry' => [ + 'type' => 'Point', + 'coordinates' => [$commerce->getLon(), $commerce->getLat()] + ], + 'properties' => [ + 'id' => $commerce->getOsmId(), + 'name' => $commerce->getName(), + 'main_tag' => $commerce->getMainTag(), + 'address' => $commerce->getStreet() . ' ' . $commerce->getHousenumber(), + 'note' => $commerce->getNoteContent(), + 'osm_url' => 'https://www.openstreetmap.org/' . $commerce->getOsmKind() . '/' . $commerce->getOsmId() + ] + ]; + } + } return $this->render('admin/stats.html.twig', [ 'stats' => $stats, 'commerces' => $commerces, 'urls' => $urls, - 'query_places' => $overpass_query, - 'overpass_query' => $overpass_query, - 'overpass_query_url' => $overpass_query_url, + 'geojson' => json_encode($geojson), 'modificationsByQuarter' => json_encode($modificationsByQuarter), 'maptiler_token' => $_ENV['MAPTILER_TOKEN'], 'statsHistory' => $statsHistory, diff --git a/src/Entity/Place.php b/src/Entity/Place.php index 0baebc15..4ce7d4d0 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -85,7 +85,7 @@ class Place #[ORM\Column(nullable: true)] private ?\DateTime $displayed_date = null; - #[ORM\Column(nullable: true)] + #[ORM\Column(nullable: true, type: Types::FLOAT)] private ?float $lat = null; #[ORM\Column(nullable: true, type: Types::FLOAT)] diff --git a/templates/admin/stats.html.twig b/templates/admin/stats.html.twig index 1a9cd176..cafcb645 100644 --- a/templates/admin/stats.html.twig +++ b/templates/admin/stats.html.twig @@ -249,53 +249,11 @@

Requête Overpass

-
-            {{ overpass_query|raw }}
-    
- - Exécuter dans Overpass Turbo - -
- -
-

Historique des {{ statsHistory|length }} stats

- - - - - - - - - - - - - {# #} - {# #} - - - - {% for stat in statsHistory %} - - - - - - - - - - - {# #} - {# #} - - {% endfor %} - -
DatePlacesComplétionEmails countEmails sentOpening hoursAddressWebsiteSiretAccessibiliteNote
{{ stat.date|date('d/m/Y') }}{{ stat.placesCount }}{{ stat.completionPercent }}%{{ stat.emailsCount }}{{ stat.emailsSent }}{{ stat.openingHoursCount }}{{ stat.addressCount }}{{ stat.websiteCount }}{{ stat.siretCount }}{{ stat.accessibiliteCount }}{{ stat.noteCount }}
+ +
-
+
@@ -344,858 +302,141 @@ {% block javascripts %} {{ parent() }} - - - + - - {% endblock %}