diff --git a/migrations/Version20250601212218.php b/migrations/Version20250601212218.php
new file mode 100644
index 00000000..557cad34
--- /dev/null
+++ b/migrations/Version20250601212218.php
@@ -0,0 +1,35 @@
+addSql(<<<'SQL'
+ ALTER TABLE place ADD note_content VARCHAR(255) DEFAULT NULL
+ SQL);
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->addSql(<<<'SQL'
+ ALTER TABLE place DROP note_content
+ SQL);
+ }
+}
diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php
index c7094e68..1993182d 100644
--- a/src/Controller/AdminController.php
+++ b/src/Controller/AdminController.php
@@ -78,6 +78,19 @@ final class AdminController extends AbstractController
]);
}
+ #[Route('/admin/placeType/{osm_kind}/{osm_id}', name: 'app_admin_by_osm_id')]
+ public function placeType(string $osm_kind, string $osm_id): Response
+ {
+ $place = $this->entityManager->getRepository(Place::class)->findOneBy(['osm_kind' => $osm_kind, 'osmId' => $osm_id]);
+ if($place) {
+ return $this->redirectToRoute('app_admin_commerce', ['id' => $place->getId()]);
+ } else {
+ $this->addFlash('error', 'Le lieu n\'existe pas.');
+ return $this->redirectToRoute('app_public_index');
+ }
+ }
+
+
#[Route('/admin/commerce/{id}', name: 'app_admin_commerce')]
public function commerce(int $id): Response
{
@@ -221,7 +234,8 @@ final class AdminController extends AbstractController
->setHasAddress(($result['tags'] && isset($result['tags']['address']) || $result['tags'] && isset($result['tags']['contact:address'])) ? isset($result['tags']['address']) : null)
->setHasWebsite($result['tags'] && isset($result['tags']['website']) ? $result['tags']['website'] : null)
->setHasWheelchair($result['tags'] && isset($result['tags']['wheelchair']) ? $result['tags']['wheelchair'] : null)
- ->setHasNote($result['tags'] && isset($result['tags']['note']) ? $result['tags']['note'] : null)
+ ->setHasNote($result['tags'] && isset($result['tags']['note']) ? $result['tags']['note'] : null)
+ ->setNoteContent($result['tags'] && isset($result['tags']['note']) ? $result['tags']['note'] : null)
;
$this->entityManager->persist($commerce);
}
diff --git a/src/Controller/PublicController.php b/src/Controller/PublicController.php
index 7e86e8e5..af39e86b 100644
--- a/src/Controller/PublicController.php
+++ b/src/Controller/PublicController.php
@@ -152,6 +152,7 @@ class PublicController extends AbstractController
'commerce_overpass' => $commerce_overpass,
'name' => $name,
'commerce' => $place,
+ 'zone' => $zipcode,
'completion_percentage' => $place->getCompletionPercentage(),
'hide_filled_inputs' => $this->hide_filled_inputs,
'excluded_tags_to_render' => $this->motocultrice->excluded_tags_to_render,
@@ -416,7 +417,8 @@ class PublicController extends AbstractController
#[Route('/places_with_note', name: 'app_public_places_with_note')]
public function places_with_note(): Response
{
- $places = $this->entityManager->getRepository(Place::class)->findBy(['note' => '']);
+ // Récupérer tous les commerces ayant une note
+ $places = $this->entityManager->getRepository(Place::class)->findBy(['has_note' => true]);
return $this->render('public/places_with_note.html.twig', [
'controller_name' => 'PublicController',
'places' => $places
diff --git a/src/DataFixtures/HistoryFixtures.php b/src/DataFixtures/HistoryFixtures.php
index 8a3aa87e..4c1f7e1a 100644
--- a/src/DataFixtures/HistoryFixtures.php
+++ b/src/DataFixtures/HistoryFixtures.php
@@ -49,7 +49,7 @@ class HistoryFixtures extends Fixture
// Créer des statistiques de test
for ($i = 0; $i < 3; $i++) {
$stat = new Stats();
- $stat->setZone($faker->city . ' (mock)')
+ $stat->setZone($faker->numberBetween(10000, 99999) )
->setCompletionPercent($faker->numberBetween(0, 100))
->addPlace( $faker->randomElement($places_list))
->addPlace( $faker->randomElement($places_list))
diff --git a/src/Entity/Place.php b/src/Entity/Place.php
index 134e17e5..285a9c4b 100644
--- a/src/Entity/Place.php
+++ b/src/Entity/Place.php
@@ -79,6 +79,9 @@ class Place
#[ORM\Column(nullable: true)]
private ?string $main_tag = null;
+ #[ORM\Column(length: 255, nullable: true)]
+ private ?string $note_content = null;
+
public function getMainTag(): ?string
{
return $this->main_tag;
@@ -416,4 +419,16 @@ class Place
return $this;
}
+
+ public function getNoteContent(): ?string
+ {
+ return $this->note_content;
+ }
+
+ public function setNoteContent(?string $note_content): static
+ {
+ $this->note_content = $note_content;
+
+ return $this;
+ }
}
diff --git a/src/Service/Motocultrice.php b/src/Service/Motocultrice.php
index ebaf6c0b..34f00a77 100644
--- a/src/Service/Motocultrice.php
+++ b/src/Service/Motocultrice.php
@@ -128,17 +128,17 @@ class Motocultrice
area["postal_code"="{$zone}"]->.searchArea;
(
// Recherche des commerces et services avec email
- nw["amenity"]["contact:email"](area.searchArea);
- nw["amenity"]["email"](area.searchArea);
- nw["shop"]["contact:email"](area.searchArea);
- nw["shop"]["email"](area.searchArea);
- nw["office"]["contact:email"](area.searchArea);
- nw["office"]["email"](area.searchArea);
+ nw["amenity"]["contact:email"][name](area.searchArea);
+ nw["amenity"]["email"][name](area.searchArea);
+ nw["shop"]["contact:email"][name](area.searchArea);
+ nw["shop"]["email"][name](area.searchArea);
+ nw["office"]["contact:email"][name](area.searchArea);
+ nw["office"]["email"][name](area.searchArea);
// Recherche des commerces et services sans email pour référence
- nw["amenity"](area.searchArea);
- nw["shop"](area.searchArea);
- nw["office"](area.searchArea);
+ nw["amenity"][name](area.searchArea);
+ nw["shop"][name](area.searchArea);
+ nw["office"][name](area.searchArea);
);
out body;
>;
diff --git a/templates/admin/stats.html.twig b/templates/admin/stats.html.twig
index 51237756..ace16e4b 100644
--- a/templates/admin/stats.html.twig
+++ b/templates/admin/stats.html.twig
@@ -36,10 +36,12 @@
Nom ({{ stats.getPlacesCount() }})
+ Type
Adresse ({{ stats.getAvecAdresse() }} / {{ stats.getPlacesCount() }})
Site web ({{ stats.getAvecSite() }} / {{ stats.getPlacesCount() }})
Accessibilité ({{ stats.getAvecAccessibilite() }} / {{ stats.getPlacesCount() }})
Note ({{ stats.getAvecNote() }} / {{ stats.getPlacesCount() }})
+ Note ({{ stats.getAvecNote() }} / {{ stats.getPlacesCount() }})
Completion:{{completion_percentage}}%
')) + .setPopup(new mapboxgl.Popup({ offset: 25 }).setHTML('