ajout propriétés de rue et siret aux lieux, champs en plus après envoi

This commit is contained in:
Tykayn 2025-06-09 00:11:16 +02:00 committed by tykayn
parent b9257d34fd
commit 3ccfd732e7
17 changed files with 361 additions and 56 deletions

View file

@ -125,7 +125,7 @@ final class AdminController extends AbstractController
* récupérer les commerces de la zone, créer les nouveaux lieux, et mettre à jour les existants
*/
#[Route('/admin/labourer/{zip_code}', name: 'app_admin_labourer')]
public function labourer(string $zip_code, bool $updateExisting = false): Response
public function labourer(string $zip_code, bool $updateExisting = true): Response
{
try {
// Récupérer ou créer les stats pour cette zone
@ -169,6 +169,10 @@ final class AdminController extends AbstractController
->setStats($stats)
->setDead(false)
->setOptedOut(false)
->setMainTag($this->motocultrice->find_main_tag($placeData['tags']) ?? '')
->setStreet($this->motocultrice->find_street($placeData['tags']) ?? '')
->setHousenumber($this->motocultrice->find_housenumber($placeData['tags']) ?? '')
->setSiret($this->motocultrice->find_siret($placeData['tags']) ?? '')
->setAskedHumainsSupport(false)
->setLastContactAttemptDate(null)
->setNote('')

View file

@ -76,7 +76,9 @@ class PublicController extends AbstractController
->setModifiedDate(new \DateTime())
->setZipCode($zipCode)
->setPlaceCount(0)
->setMainTag($this->motocultrice->find_main_tag($data['tags_converted']) ?? '')
->setStreet($this->motocultrice->find_street($data['tags_converted']) ?? '')
->setHousenumber($this->motocultrice->find_housenumber($data['tags_converted']) ?? '')
->setLastContactAttemptDate(new \DateTime())
->setUuidForUrl(uniqid());
@ -461,4 +463,14 @@ class PublicController extends AbstractController
'places_displayed' => $places_displayed
]);
}
#[Route('/set_opted_out_place/{uuid}', name: 'app_public_set_opted_out_place')]
public function set_opted_out_place($uuid): Response
{
$place = $this->entityManager->getRepository(Place::class)->findOneBy(['uuid_for_url' => $uuid]);
if (!$place) {
$this->addFlash('warning', 'Ce commerce n\'existe pas.');
return $this->redirectToRoute('app_public_index');
}
}
}

View file

@ -91,6 +91,15 @@ class Place
#[ORM\Column(nullable: true)]
private ?int $lon = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $street = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $housenumber = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $siret = null;
public function getMainTag(): ?string
{
return $this->main_tag;
@ -191,6 +200,9 @@ class Place
['key' => 'website', 'setter' => 'setHasWebsite', 'source' => $overpass_data['tags'] ?? []],
['key' => 'wheelchair', 'setter' => 'setHasWheelchair', 'source' => $overpass_data['tags'] ?? []],
['key' => 'note', 'setter' => 'setHasNote', 'source' => $overpass_data['tags'] ?? []],
['key' => 'siret', 'setter' => 'setSiret', 'source' => $overpass_data['tags'] ?? []],
['key' => 'addr:street', 'setter' => 'setStreet', 'source' => $overpass_data['tags'] ?? []],
['key' => 'addr:housenumber', 'setter' => 'setHousenumber', 'source' => $overpass_data['tags'] ?? []],
];
foreach ($mapping as $map) {
@ -531,4 +543,40 @@ class Place
return $this;
}
public function getStreet(): ?string
{
return $this->street;
}
public function setStreet(?string $street): static
{
$this->street = $street;
return $this;
}
public function getHousenumber(): ?string
{
return $this->housenumber;
}
public function setHousenumber(?string $housenumber): static
{
$this->housenumber = $housenumber;
return $this;
}
public function getSiret(): ?string
{
return $this->siret;
}
public function setSiret(?string $siret): static
{
$this->siret = $siret;
return $this;
}
}

View file

@ -74,6 +74,12 @@ class Motocultrice
];
public function find_siret($tags) {
if(isset($tags['ref:FR:SIRET']) && $tags['ref:FR:SIRET'] != '') {
return $tags['ref:FR:SIRET'];
}
return null;
}
public function export($zone) {
$query = $this->get_export_query($zone);
@ -188,6 +194,26 @@ out center tags;';
}
}
public function find_street($tags) {
if(isset($tags['addr:street']) && $tags['addr:street'] != '') {
return $tags['addr:street'];
}
if(isset($tags['contact:street']) && $tags['contact:street'] != '') {
return $tags['contact:street'];
}
return null;
}
public function find_housenumber($tags) {
if(isset($tags['addr:housenumber']) && $tags['addr:housenumber'] != '') {
return $tags['addr:housenumber'];
}
if(isset($tags['contact:housenumber']) && $tags['contact:housenumber'] != '') {
return $tags['contact:housenumber'];
}
return null;
}
public function get_city_osm_from_zip_code($zip_code) {
// Requête Overpass pour obtenir la zone administrative de niveau 8 avec un nom
$query = "[out:json][timeout:25];
@ -290,6 +316,9 @@ out center tags;';
return null;
}
/**
* migrer seulement si la destination n'est pas remplie
*/
public function migrate_tags($osm_object_data) {
// migrer email vers contact:email