diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 5cddd3b..b9bf990 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -160,6 +160,10 @@ final class AdminController extends AbstractController // Associer les stats à chaque commerce foreach ($commerces as $commerce) { $commerce->setStats($stats); + // Injection de l'emoji pour le template + $mainTag = $commerce->getMainTag(); + $emoji = self::getTagEmoji($mainTag); + $commerce->tagEmoji = $emoji; $this->entityManager->persist($commerce); } @@ -471,6 +475,7 @@ final class AdminController extends AbstractController 'followup_icons' => \App\Service\FollowUpService::getFollowUpIcons(), 'progression7Days' => $progression7Days, 'all_types' => \App\Service\FollowUpService::getFollowUpThemes(), + 'getTagEmoji' => [self::class, 'getTagEmoji'], ]); } @@ -1014,6 +1019,10 @@ final class AdminController extends AbstractController // Associer les stats à chaque commerce foreach ($commerces as $commerce) { $commerce->setStats($stats); + // Injection de l'emoji pour le template + $mainTag = $commerce->getMainTag(); + $emoji = self::getTagEmoji($mainTag); + $commerce->tagEmoji = $emoji; $this->entityManager->persist($commerce); } @@ -1857,4 +1866,60 @@ final class AdminController extends AbstractController 'stats' => $stats ]); } + + #[Route('/admin/export_csv', name: 'app_admin_export_csv_all')] + public function export_csv_all(): Response + { + $statsList = $this->entityManager->getRepository(\App\Entity\Stats::class)->findAll(); + $handle = fopen('php://temp', 'r+'); + // En-tête CSV + fputcsv($handle, [ + 'zone', 'name', 'lat', 'lon', 'population', 'budgetAnnuel', 'completionPercent', 'placesCount', 'avecHoraires', 'avecAdresse', 'avecSite', 'avecAccessibilite', 'avecNote', 'siren', 'codeEpci', 'codesPostaux' + ]); + foreach ($statsList as $stat) { + fputcsv($handle, [ + $stat->getZone(), + $stat->getName(), + $stat->getLat(), + $stat->getLon(), + $stat->getPopulation(), + $stat->getBudgetAnnuel(), + $stat->getCompletionPercent(), + $stat->getPlacesCount(), + $stat->getAvecHoraires(), + $stat->getAvecAdresse(), + $stat->getAvecSite(), + $stat->getAvecAccessibilite(), + $stat->getAvecNote(), + $stat->getSiren(), + $stat->getCodeEpci(), + $stat->getCodesPostaux(), + ]); + } + rewind($handle); + $csv = stream_get_contents($handle); + fclose($handle); + $response = new Response($csv); + $response->headers->set('Content-Type', 'text/csv'); + $response->headers->set('Content-Disposition', 'attachment; filename="osm-commerces-villes-export_' . date('Y-m-d_H-i-s') . '.csv"'); + return $response; + } + + public static function getTagEmoji(string $mainTag): string + { + return match ($mainTag) { + 'amenity=restaurant', 'amenity=bar', 'amenity=cafe' => '🍽️', + 'amenity=townhall', 'amenity=community_centre' => '🏛️', + 'amenity=bank', 'amenity=atm' => '🏦', + 'amenity=pharmacy', 'amenity=hospital', 'amenity=clinic' => '🏥', + 'amenity=school', 'amenity=kindergarten', 'amenity=university' => '🎓', + 'amenity=library', 'amenity=museum', 'amenity=artwork' => '📚', + 'shop=car_repair', 'shop=car_parts', 'shop=car_wash' => '🚗', + 'amenity=post_office' => '📮', + 'shop=convenience' => '🏪', + 'shop=supermarket' => '🛒', + 'shop=clothes' => '👕', + default => '🏷️', + }; + } } diff --git a/src/Twig/TagEmojiExtension.php b/src/Twig/TagEmojiExtension.php new file mode 100644 index 0000000..2399927 --- /dev/null +++ b/src/Twig/TagEmojiExtension.php @@ -0,0 +1,22 @@ + `${k}: ${v}`).join('
')} Voir sur OSM
- ${f.properties.uuid && f.properties.zip_code && f.properties.name ? `📝 Modifier ce lieu` : ''} + ${f.properties.uuid ? `📝 Modifier ce lieu` : ''} `) ) diff --git a/templates/admin/stats.html.twig b/templates/admin/stats.html.twig index 52c1c9f..e8030be 100644 --- a/templates/admin/stats.html.twig +++ b/templates/admin/stats.html.twig @@ -221,10 +221,12 @@ + - - + + + diff --git a/templates/admin/stats/row.html.twig b/templates/admin/stats/row.html.twig index 49f7d98..01cb0d5 100644 --- a/templates/admin/stats/row.html.twig +++ b/templates/admin/stats/row.html.twig @@ -73,38 +73,9 @@
Catégorie Thème NombreComplétionActionsComplétionÉvolutionGraphique
- - {% if commerce.mainTag == 'amenity=restaurant' or commerce.mainTag == 'amenity=bar' or commerce.mainTag == 'amenity=cafe' %} - - - {% elseif commerce.mainTag == 'amenity=townhall' or commerce.mainTag == 'amenity=community_centre' %} - - {% elseif commerce.mainTag == 'amenity=bank' or commerce.mainTag == 'amenity=atm' %} - - {% elseif commerce.mainTag == 'amenity=pharmacy' or commerce.mainTag == 'amenity=hospital' or commerce.mainTag == 'amenity=clinic' %} - - {% elseif commerce.mainTag == 'amenity=school' or commerce.mainTag == 'amenity=kindergarten' or commerce.mainTag == 'amenity=university' %} - - {% elseif commerce.mainTag == 'amenity=library' or commerce.mainTag == 'amenity=museum' or commerce.mainTag == 'amenity=artwork' %} - - {% elseif commerce.mainTag == 'shop=car_repair' or commerce.mainTag == 'shop=car_parts' or commerce.mainTag == 'shop=car_wash' %} - - - {% elseif commerce.mainTag == 'amenity=post_office' %} - - {% elseif commerce.mainTag == 'shop=convenience' %} - - {% elseif commerce.mainTag == 'shop=supermarket' %} - - {% elseif commerce.mainTag == 'shop=clothes' %} - - {% else %} - - {% endif %} - - - {{ commerce.mainTag }} - + + {{ tag_emoji(commerce.mainTag) }} + {{ commerce.address }} {{ commerce.housenumber }}