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 @@
Catégorie | Thème | Nombre | -Complétion | -Actions | +Complétion | +Évolution | +Graphique | - - {% 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 }} |
---|