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');
|
document.querySelector('#loading_search_insee').classList.add('d-none');
|
||||||
|
|
||||||
return data.map(commune => ({
|
return data.map(commune => ({
|
||||||
label: `${commune.nom} (code insee ${commune.code})`,
|
label: `${commune.nom} (${commune.codesPostaux.join(', ')}, code insee ${commune.code})`,
|
||||||
insee: commune.code,
|
insee: commune.code,
|
||||||
postcodes: commune.codesPostaux
|
postcodes: commune.codesPostaux
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -130,7 +130,11 @@ final class AdminController extends AbstractController
|
||||||
try {
|
try {
|
||||||
// Récupérer ou créer les stats pour cette zone
|
// Récupérer ou créer les stats pour cette zone
|
||||||
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]);
|
$stats = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $zip_code]);
|
||||||
|
|
||||||
|
|
||||||
|
$city = $this->motocultrice->get_city_osm_from_zip_code($zip_code);
|
||||||
if (!$stats) {
|
if (!$stats) {
|
||||||
|
|
||||||
$stats = new Stats();
|
$stats = new Stats();
|
||||||
$stats->setZone($zip_code)
|
$stats->setZone($zip_code)
|
||||||
->setPlacesCount(0)
|
->setPlacesCount(0)
|
||||||
|
@ -143,6 +147,7 @@ final class AdminController extends AbstractController
|
||||||
$this->entityManager->persist($stats);
|
$this->entityManager->persist($stats);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
}
|
}
|
||||||
|
$stats->setName($city);
|
||||||
|
|
||||||
// Récupérer toutes les données
|
// Récupérer toutes les données
|
||||||
$places = $this->motocultrice->labourer($zip_code);
|
$places = $this->motocultrice->labourer($zip_code);
|
||||||
|
@ -188,6 +193,8 @@ final class AdminController extends AbstractController
|
||||||
|
|
||||||
// Mettre à jour les statistiques finales
|
// Mettre à jour les statistiques finales
|
||||||
$stats->computeCompletionPercent();
|
$stats->computeCompletionPercent();
|
||||||
|
|
||||||
|
|
||||||
$this->entityManager->persist($stats);
|
$this->entityManager->persist($stats);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
|
|
|
@ -58,22 +58,51 @@ class Stats
|
||||||
// calcule le pourcentage de complétion de la zone
|
// calcule le pourcentage de complétion de la zone
|
||||||
public function computeCompletionPercent(): ?int
|
public function computeCompletionPercent(): ?int
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$places_count = $this->places->count();
|
||||||
// Si aucun commerce, on retourne 0
|
// 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);
|
$this->setCompletionPercent(0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// On prend le maximum entre les différents critères
|
// On réinitialise les compteurs
|
||||||
$max = max(
|
$this->avec_horaires = 0;
|
||||||
$this->avec_horaires ?? 0,
|
$this->avec_adresse = 0;
|
||||||
$this->avec_adresse ?? 0,
|
$this->avec_site = 0;
|
||||||
$this->avec_site ?? 0,
|
$this->avec_accessibilite = 0;
|
||||||
$this->avec_accessibilite ?? 0,
|
$this->avec_note = 0;
|
||||||
$this->avec_note ?? 0
|
|
||||||
);
|
$somme_completions = 0;
|
||||||
$computed = round(($max) / $this->places_count * 100);
|
|
||||||
$this->setCompletionPercent($computed);
|
|
||||||
|
// 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;
|
return $this->completion_percent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -223,8 +223,8 @@ out skel qt;`;
|
||||||
<label for="app_admin_labourer">Rechercher une ville par son nom
|
<label for="app_admin_labourer">Rechercher une ville par son nom
|
||||||
<div id="loading_search_insee" class="d-none">
|
<div id="loading_search_insee" class="d-none">
|
||||||
<div class="spinner-grow text-primary" role="status">
|
<div class="spinner-grow text-primary" role="status">
|
||||||
<span class="sr-only">Chargement...</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
<span class="sr-only">Chargement...</span>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<input class="form-control" type="text" id="app_admin_labourer" placeholder="Entrez le nom d'une ville...">
|
<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