This commit is contained in:
Tykayn 2025-06-05 17:32:12 +02:00 committed by tykayn
parent 409bff6d4c
commit c4cc4a4050
4 changed files with 52 additions and 16 deletions

View file

@ -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;
}