mirror of
				https://forge.chapril.org/tykayn/osm-commerces
				synced 2025-10-09 17:02:46 +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
	
	 Tykayn
						Tykayn