mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-06-20 01:44:42 +02:00
up stats
This commit is contained in:
parent
409bff6d4c
commit
c4cc4a4050
4 changed files with 52 additions and 16 deletions
|
@ -644,7 +644,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
document.querySelector('#loading_search_insee').classList.add('d-none');
|
||||
|
||||
return data.map(commune => ({
|
||||
label: `${commune.nom} (code insee ${commune.code})`,
|
||||
label: `${commune.nom} (${commune.codesPostaux.join(', ')}, code insee ${commune.code})`,
|
||||
insee: commune.code,
|
||||
postcodes: commune.codesPostaux
|
||||
}));
|
||||
|
|
|
@ -130,7 +130,11 @@ final class AdminController extends AbstractController
|
|||
try {
|
||||
// Récupérer ou créer les stats pour cette zone
|
||||
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]);
|
||||
|
||||
|
||||
$city = $this->motocultrice->get_city_osm_from_zip_code($zip_code);
|
||||
if (!$stats) {
|
||||
|
||||
$stats = new Stats();
|
||||
$stats->setZone($zip_code)
|
||||
->setPlacesCount(0)
|
||||
|
@ -140,9 +144,10 @@ final class AdminController extends AbstractController
|
|||
->setAvecAccessibilite(0)
|
||||
->setAvecNote(0)
|
||||
->setCompletionPercent(0);
|
||||
$this->entityManager->persist($stats);
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
$this->entityManager->persist($stats);
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
$stats->setName($city);
|
||||
|
||||
// Récupérer toutes les données
|
||||
$places = $this->motocultrice->labourer($zip_code);
|
||||
|
@ -188,6 +193,8 @@ final class AdminController extends AbstractController
|
|||
|
||||
// Mettre à jour les statistiques finales
|
||||
$stats->computeCompletionPercent();
|
||||
|
||||
|
||||
$this->entityManager->persist($stats);
|
||||
$this->entityManager->flush();
|
||||
|
||||
|
|
|
@ -58,22 +58,51 @@ class Stats
|
|||
// calcule le pourcentage de complétion de la zone
|
||||
public function computeCompletionPercent(): ?int
|
||||
{
|
||||
|
||||
$places_count = $this->places->count();
|
||||
// Si aucun commerce, on retourne 0
|
||||
if ($this->places_count === 0 || $this->places_count === null) {
|
||||
if ($places_count === 0 || $places_count === null) {
|
||||
$this->setCompletionPercent(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// On prend le maximum entre les différents critères
|
||||
$max = max(
|
||||
$this->avec_horaires ?? 0,
|
||||
$this->avec_adresse ?? 0,
|
||||
$this->avec_site ?? 0,
|
||||
$this->avec_accessibilite ?? 0,
|
||||
$this->avec_note ?? 0
|
||||
);
|
||||
$computed = round(($max) / $this->places_count * 100);
|
||||
$this->setCompletionPercent($computed);
|
||||
// On réinitialise les compteurs
|
||||
$this->avec_horaires = 0;
|
||||
$this->avec_adresse = 0;
|
||||
$this->avec_site = 0;
|
||||
$this->avec_accessibilite = 0;
|
||||
$this->avec_note = 0;
|
||||
|
||||
$somme_completions = 0;
|
||||
|
||||
|
||||
// On boucle sur chaque place pour compter les attributs renseignés
|
||||
foreach ($this->places as $place) {
|
||||
$place_completions = 0;
|
||||
if ($place->hasAddress()) {
|
||||
$this->avec_adresse++;
|
||||
$place_completions++;
|
||||
}
|
||||
if ($place->hasWebsite()) {
|
||||
$this->avec_site++;
|
||||
$place_completions++;
|
||||
}
|
||||
if ($place->hasWheelchair()) {
|
||||
$this->avec_accessibilite++;
|
||||
$place_completions++;
|
||||
}
|
||||
if ($place->hasOpeningHours()) {
|
||||
$this->avec_horaires++;
|
||||
$place_completions++;
|
||||
}
|
||||
if($place->hasNote()) {
|
||||
$this->avec_note++;
|
||||
}
|
||||
$somme_completions += $place_completions / 5;
|
||||
}
|
||||
|
||||
$this->setPlacesCount($places_count);
|
||||
$this->setCompletionPercent(round($somme_completions / $places_count * 100));
|
||||
return $this->completion_percent;
|
||||
}
|
||||
|
||||
|
|
|
@ -223,8 +223,8 @@ out skel qt;`;
|
|||
<label for="app_admin_labourer">Rechercher une ville par son nom
|
||||
<div id="loading_search_insee" class="d-none">
|
||||
<div class="spinner-grow text-primary" role="status">
|
||||
<span class="sr-only">Chargement...</span>
|
||||
</div>
|
||||
<span class="sr-only">Chargement...</span>
|
||||
</div>
|
||||
</label>
|
||||
<input class="form-control" type="text" id="app_admin_labourer" placeholder="Entrez le nom d'une ville...">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue