From c6e05463b15da93bf687d195dc70cf706a49a41b Mon Sep 17 00:00:00 2001 From: Tykayn Date: Tue, 3 Jun 2025 18:07:57 +0200 Subject: [PATCH] update on labourage --- src/Controller/AdminController.php | 7 ++- src/Entity/Place.php | 86 ++++++++++++++++++++---------- src/Service/Motocultrice.php | 18 +++++++ 3 files changed, 82 insertions(+), 29 deletions(-) diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 75328af..e3b2267 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -220,15 +220,20 @@ final class AdminController extends AbstractController foreach ($new_places_list as $np) { $new_place = new Place(); + $main_tag = $this->motocultrice->find_main_tag($np['tags']); + $new_place ->setUuidForUrl($this->motocultrice->uuid_create()) ->setModifiedDate(new \DateTime()) ->setStats($stats) ->setDead(false) ->setOptedOut(false) + ->setOsmId($np['id']) + ->setMainTag($main_tag && isset($np['tags'][$main_tag]) ? $np['tags'][$main_tag] : "") + ->setOsmKind($np['type']) ->setAskedHumainsSupport(false) ->setLastContactAttemptDate(null) - ->update_place_from_overpass_data($new_place); + ->update_place_from_overpass_data($np); $this->entityManager->persist($new_place); } // Mise à jour des commerces existants avec les données Overpass diff --git a/src/Entity/Place.php b/src/Entity/Place.php index 63f9250..b90785d 100644 --- a/src/Entity/Place.php +++ b/src/Entity/Place.php @@ -120,8 +120,29 @@ class Place } return round($filled_fields / $total_fields * 100); } + /** + * mettre à jour le lieu selon les tags osm + */ public function update_place_from_overpass_data(array $overpass_data) { - $tags_converted = $overpass_data['tags_converted'] ; + + if ( ! isset($overpass_data['tags']) || $overpass_data['tags'] == null) { + return; + } + // var_dump($overpass_data); + $overpass_data = array_merge([ + 'id' => '', + 'type' => '', + 'name' => '', + 'postcode' => '', + 'email' => '', + 'opening_hours' => '', + 'addr:housenumber' => '', + 'addr:street' => '', + 'website' => '', + 'wheelchair' => '', + 'note' => '' + ], $overpass_data['tags'] ); + // var_dump($overpass_data); if (isset($tags_converted['amenity']) && $tags_converted['amenity'] != '') { $this->setMainTag('amenity='.$tags_converted['amenity']); @@ -139,34 +160,43 @@ class Place $this->setMainTag('healthcare='.$tags_converted['healthcare']); } - $this->setOsmId($overpass_data['id']) - ->setOsmKind($overpass_data['type']) - ->setName($overpass_data['name']) - ->setZipCode($overpass_data['postcode']) - ->setEmail($overpass_data['email']) - ->setNote($overpass_data['tags'] && isset($overpass_data['tags']['note']) ? isset($overpass_data['tags']['note']) : null) - ->setHasOpeningHours($overpass_data['tags'] && isset($overpass_data['tags']['opening_hours']) ? isset($overpass_data['tags']['opening_hours']) : null) - ->setHasAddress(($overpass_data['tags'] && isset($overpass_data['tags']['address']) || $overpass_data['tags'] && isset($overpass_data['tags']['contact:address'])) ? isset($overpass_data['tags']['address']) : null) - ->setHasWebsite($overpass_data['tags'] && isset($overpass_data['tags']['website']) ? $overpass_data['tags']['website'] : null) - ->setHasWheelchair($overpass_data['tags'] && isset($overpass_data['tags']['wheelchair']) ? $overpass_data['tags']['wheelchair'] : null) - ->setHasNote($overpass_data['tags'] && isset($overpass_data['tags']['note']) ? $overpass_data['tags']['note'] : null) - ->setNoteContent($overpass_data['tags'] && isset($overpass_data['tags']['note']) ? $overpass_data['tags']['note'] : null) - // ->setDisplayedDate(new \DateTime()) - ; + $this + // ->setOsmId($overpass_data['id']) + // ->setOsmKind($overpass_data['type'] ) + ->setName(isset($overpass_data['name']) && $overpass_data['name'] != '' ? $overpass_data['name'] : null); + + if (isset($overpass_data['postcode']) && $overpass_data['postcode'] != ''){ + $this->setZipCode($overpass_data['postcode']); + } + if (isset($overpass_data['email']) && $overpass_data['email'] != ''){ + $this->setEmail($overpass_data['email']); + } + if (isset($overpass_data['tags']['opening_hours']) && $overpass_data['opening_hours'] != ''){ + $this->setHasOpeningHours($overpass_data['opening_hours']); + } + if (isset($overpass_data['tags']) && isset($overpass_data['tags']['note']) && $overpass_data['tags']['note'] != ''){ + $this->setNote($overpass_data['tags']['note']); + } + if (isset($overpass_data['tags']) && isset($overpass_data['tags']['addr:housenumber']) && $overpass_data['tags']['addr:housenumber'] != ''){ + $this->setHasAddress($overpass_data['tags']['addr:housenumber']); + } + if (isset($overpass_data['tags']) && isset($overpass_data['tags']['website']) && $overpass_data['tags']['website'] != ''){ + $this->setHasWebsite($overpass_data['tags']['website']); + } + if (isset($overpass_data['tags']) && isset($overpass_data['tags']['wheelchair']) && $overpass_data['tags']['wheelchair'] != ''){ + $this->setHasWheelchair($overpass_data['tags']['wheelchair']); + } + if (isset($overpass_data['tags']) && isset($overpass_data['tags']['note']) && $overpass_data['tags']['note'] != ''){ + $this->setHasNote($overpass_data['tags']['note']); + } + if (isset($overpass_data['tags']) && isset($overpass_data['tags']['note']) && $overpass_data['tags']['note'] != ''){ + $this->setHasNote($overpass_data['tags']['note']); + $this->setNoteContent($overpass_data['tags']['note']); + } + + // Remplir les clés attendues avec des valeurs par défaut si non définies - $overpass_data = array_merge([ - 'id' => '', - 'type' => '', - 'name' => '', - 'postcode' => '', - 'email' => '', - 'opening_hours' => '', - 'addr:housenumber' => '', - 'addr:street' => '', - 'website' => '', - 'wheelchair' => '', - 'note' => '' - ], $overpass_data); + $this // ->setOsmId($overpass_data['id']) diff --git a/src/Service/Motocultrice.php b/src/Service/Motocultrice.php index 022bcd0..c38a790 100644 --- a/src/Service/Motocultrice.php +++ b/src/Service/Motocultrice.php @@ -290,6 +290,24 @@ out center tags;'; } + public function find_main_tag($tags) { + if(isset($tags['amenity']) && $tags['amenity'] != '') { + return $tags['amenity']; + } + if(isset($tags['shop']) && $tags['shop'] != '') { + return $tags['shop']; + } + if(isset($tags['tourism']) && $tags['tourism'] != '') { + return $tags['tourism']; + } + if(isset($tags['healthcare']) && $tags['healthcare'] != '') { + return $tags['healthcare']; + } + if(isset($tags['office']) && $tags['office'] != '') { + return $tags['office']; + } + return null; + } public function migrate_tags($osm_object_data) { // migrer email vers contact:email