mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-10-09 17:02:46 +02:00
stats de ville prendre position des objets en base
This commit is contained in:
parent
711fc277be
commit
d66bc5e40c
3 changed files with 157 additions and 914 deletions
|
@ -235,10 +235,12 @@ final class AdminController extends AbstractController
|
||||||
public function calculer_stats(string $insee_code): Response
|
public function calculer_stats(string $insee_code): Response
|
||||||
{
|
{
|
||||||
// Récupérer tous les commerces de la zone
|
// 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
|
// Récupérer les stats existantes pour la zone
|
||||||
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
|
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
|
||||||
|
$commerces = $stats->getPlaces();
|
||||||
|
|
||||||
if(!$stats) {
|
if(!$stats) {
|
||||||
// Si aucune stat n'existe, on en crée une vide pour éviter les erreurs, mais sans la sauvegarder
|
// Si aucune stat n'existe, on en crée une vide pour éviter les erreurs, mais sans la sauvegarder
|
||||||
$stats = new Stats();
|
$stats = new Stats();
|
||||||
|
@ -256,29 +258,9 @@ final class AdminController extends AbstractController
|
||||||
->getQuery()
|
->getQuery()
|
||||||
->getResult();
|
->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();
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Données pour le graphique des modifications par trimestre
|
// Données pour le graphique des modifications par trimestre
|
||||||
$modificationsByQuarter = [];
|
$modificationsByQuarter = [];
|
||||||
foreach ($stats->getPlaces() as $commerce) {
|
foreach ($commerces as $commerce) {
|
||||||
if ($commerce->getOsmDataDate()) {
|
if ($commerce->getOsmDataDate()) {
|
||||||
$date = $commerce->getOsmDataDate();
|
$date = $commerce->getOsmDataDate();
|
||||||
$year = $date->format('Y');
|
$year = $date->format('Y');
|
||||||
|
@ -292,16 +274,36 @@ final class AdminController extends AbstractController
|
||||||
}
|
}
|
||||||
ksort($modificationsByQuarter); // Trier par clé (année-trimestre)
|
ksort($modificationsByQuarter); // Trier par clé (année-trimestre)
|
||||||
|
|
||||||
$overpass_query = $this->motocultrice->get_query_places($insee_code);
|
$geojson = [
|
||||||
$overpass_query_url = "https://overpass-turbo.eu/?Q=" . urlencode($overpass_query);
|
'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', [
|
return $this->render('admin/stats.html.twig', [
|
||||||
'stats' => $stats,
|
'stats' => $stats,
|
||||||
'commerces' => $commerces,
|
'commerces' => $commerces,
|
||||||
'urls' => $urls,
|
'urls' => $urls,
|
||||||
'query_places' => $overpass_query,
|
'geojson' => json_encode($geojson),
|
||||||
'overpass_query' => $overpass_query,
|
|
||||||
'overpass_query_url' => $overpass_query_url,
|
|
||||||
'modificationsByQuarter' => json_encode($modificationsByQuarter),
|
'modificationsByQuarter' => json_encode($modificationsByQuarter),
|
||||||
'maptiler_token' => $_ENV['MAPTILER_TOKEN'],
|
'maptiler_token' => $_ENV['MAPTILER_TOKEN'],
|
||||||
'statsHistory' => $statsHistory,
|
'statsHistory' => $statsHistory,
|
||||||
|
|
|
@ -85,7 +85,7 @@ class Place
|
||||||
#[ORM\Column(nullable: true)]
|
#[ORM\Column(nullable: true)]
|
||||||
private ?\DateTime $displayed_date = null;
|
private ?\DateTime $displayed_date = null;
|
||||||
|
|
||||||
#[ORM\Column(nullable: true)]
|
#[ORM\Column(nullable: true, type: Types::FLOAT)]
|
||||||
private ?float $lat = null;
|
private ?float $lat = null;
|
||||||
|
|
||||||
#[ORM\Column(nullable: true, type: Types::FLOAT)]
|
#[ORM\Column(nullable: true, type: Types::FLOAT)]
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue