mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-10-04 17:04:53 +02:00
affichage fraicheur des données
This commit is contained in:
parent
43139d50d9
commit
ca00f8c0be
4 changed files with 290 additions and 5 deletions
|
@ -142,8 +142,74 @@ final class AdminController extends AbstractController
|
|||
}
|
||||
|
||||
$stats->computeCompletionPercent();
|
||||
$this->entityManager->persist($stats);
|
||||
|
||||
// Calculer les statistiques de fraîcheur des données OSM
|
||||
$timestamps = [];
|
||||
foreach ($stats->getPlaces() as $place) {
|
||||
if ($place->getOsmDataDate()) {
|
||||
$timestamps[] = $place->getOsmDataDate()->getTimestamp();
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($timestamps)) {
|
||||
// Date la plus ancienne (min)
|
||||
$minTimestamp = min($timestamps);
|
||||
$stats->setOsmDataDateMin(new \DateTime('@' . $minTimestamp));
|
||||
|
||||
// Date la plus récente (max)
|
||||
$maxTimestamp = max($timestamps);
|
||||
$stats->setOsmDataDateMax(new \DateTime('@' . $maxTimestamp));
|
||||
|
||||
// Date moyenne
|
||||
$avgTimestamp = array_sum($timestamps) / count($timestamps);
|
||||
$stats->setOsmDataDateAvg(new \DateTime('@' . (int)$avgTimestamp));
|
||||
}
|
||||
|
||||
if($stats->getDateCreated() == null) {
|
||||
$stats->setDateCreated(new \DateTime());
|
||||
}
|
||||
|
||||
$stats->setDateModified(new \DateTime());
|
||||
|
||||
// Créer un historique des statistiques
|
||||
$statsHistory = new StatsHistory();
|
||||
$statsHistory->setDate(new \DateTime())
|
||||
->setStats($stats);
|
||||
|
||||
// Compter les Places avec email et SIRET
|
||||
$placesWithEmail = 0;
|
||||
$placesWithSiret = 0;
|
||||
foreach ($stats->getPlaces() as $place) {
|
||||
if ($place->getEmail() && $place->getEmail() !== '') {
|
||||
$placesWithEmail++;
|
||||
}
|
||||
if ($place->getSiret() && $place->getSiret() !== '') {
|
||||
$placesWithSiret++;
|
||||
}
|
||||
}
|
||||
|
||||
$statsHistory->setPlacesCount($stats->getPlaces()->count())
|
||||
->setOpeningHoursCount($stats->getAvecHoraires())
|
||||
->setAddressCount($stats->getAvecAdresse())
|
||||
->setWebsiteCount($stats->getAvecSite())
|
||||
->setSiretCount($placesWithSiret)
|
||||
->setEmailsCount($placesWithEmail)
|
||||
// ->setAccessibiliteCount($stats->getAvecAccessibilite())
|
||||
// ->setNoteCount($stats->getAvecNote())
|
||||
->setCompletionPercent($stats->getCompletionPercent())
|
||||
->setStats($stats);
|
||||
|
||||
$this->entityManager->persist($statsHistory);
|
||||
|
||||
|
||||
$this->entityManager->persist($stats);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$message = 'Labourage terminé avec succès. ' . $processedCount . ' nouveaux lieux traités.';
|
||||
if ($updateExisting) {
|
||||
$message .= ' ' . $updatedCount . ' lieux existants mis à jour pour la zone '.$stats->getName().' ('.$stats->getZone().').';
|
||||
}
|
||||
$this->addFlash('success', $message);
|
||||
}
|
||||
|
||||
$this->entityManager->flush();
|
||||
|
@ -200,10 +266,69 @@ final class AdminController extends AbstractController
|
|||
$this->entityManager->flush();
|
||||
|
||||
$stats->computeCompletionPercent();
|
||||
|
||||
// Calculer les statistiques de fraîcheur des données OSM
|
||||
$timestamps = [];
|
||||
foreach ($stats->getPlaces() as $place) {
|
||||
if ($place->getOsmDataDate()) {
|
||||
$timestamps[] = $place->getOsmDataDate()->getTimestamp();
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($timestamps)) {
|
||||
// Date la plus ancienne (min)
|
||||
$minTimestamp = min($timestamps);
|
||||
$stats->setOsmDataDateMin(new \DateTime('@' . $minTimestamp));
|
||||
|
||||
// Date la plus récente (max)
|
||||
$maxTimestamp = max($timestamps);
|
||||
$stats->setOsmDataDateMax(new \DateTime('@' . $maxTimestamp));
|
||||
|
||||
// Date moyenne
|
||||
$avgTimestamp = array_sum($timestamps) / count($timestamps);
|
||||
$stats->setOsmDataDateAvg(new \DateTime('@' . (int)$avgTimestamp));
|
||||
}
|
||||
|
||||
if($stats->getDateCreated() == null) {
|
||||
$stats->setDateCreated(new \DateTime());
|
||||
}
|
||||
|
||||
$stats->setDateModified(new \DateTime());
|
||||
|
||||
// Créer un historique des statistiques
|
||||
$statsHistory = new StatsHistory();
|
||||
$statsHistory->setDate(new \DateTime())
|
||||
->setStats($stats);
|
||||
|
||||
// Compter les Places avec email et SIRET
|
||||
$placesWithEmail = 0;
|
||||
$placesWithSiret = 0;
|
||||
foreach ($stats->getPlaces() as $place) {
|
||||
if ($place->getEmail() && $place->getEmail() !== '') {
|
||||
$placesWithEmail++;
|
||||
}
|
||||
if ($place->getSiret() && $place->getSiret() !== '') {
|
||||
$placesWithSiret++;
|
||||
}
|
||||
}
|
||||
|
||||
$statsHistory->setPlacesCount($stats->getPlaces()->count())
|
||||
->setOpeningHoursCount($stats->getAvecHoraires())
|
||||
->setAddressCount($stats->getAvecAdresse())
|
||||
->setWebsiteCount($stats->getAvecSite())
|
||||
->setSiretCount($placesWithSiret)
|
||||
->setEmailsCount($placesWithEmail)
|
||||
// ->setAccessibiliteCount($stats->getAvecAccessibilite())
|
||||
// ->setNoteCount($stats->getAvecNote())
|
||||
->setCompletionPercent($stats->getCompletionPercent())
|
||||
->setStats($stats);
|
||||
|
||||
$this->entityManager->persist($statsHistory);
|
||||
|
||||
|
||||
$this->entityManager->persist($stats);
|
||||
$this->entityManager->flush();
|
||||
|
||||
// Récupérer l'historique des stats APRÈS que l'entité soit persistée
|
||||
|
||||
$statsHistory = $this->entityManager->getRepository(StatsHistory::class)
|
||||
->createQueryBuilder('sh')
|
||||
->where('sh.stats = :stats')
|
||||
|
@ -375,6 +500,28 @@ final class AdminController extends AbstractController
|
|||
// Mettre à jour les statistiques finales
|
||||
$stats->computeCompletionPercent();
|
||||
|
||||
// Calculer les statistiques de fraîcheur des données OSM
|
||||
$timestamps = [];
|
||||
foreach ($stats->getPlaces() as $place) {
|
||||
if ($place->getOsmDataDate()) {
|
||||
$timestamps[] = $place->getOsmDataDate()->getTimestamp();
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($timestamps)) {
|
||||
// Date la plus ancienne (min)
|
||||
$minTimestamp = min($timestamps);
|
||||
$stats->setOsmDataDateMin(new \DateTime('@' . $minTimestamp));
|
||||
|
||||
// Date la plus récente (max)
|
||||
$maxTimestamp = max($timestamps);
|
||||
$stats->setOsmDataDateMax(new \DateTime('@' . $maxTimestamp));
|
||||
|
||||
// Date moyenne
|
||||
$avgTimestamp = array_sum($timestamps) / count($timestamps);
|
||||
$stats->setOsmDataDateAvg(new \DateTime('@' . (int)$avgTimestamp));
|
||||
}
|
||||
|
||||
if($stats->getDateCreated() == null) {
|
||||
$stats->setDateCreated(new \DateTime());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue