fix submit edit place

This commit is contained in:
Tykayn 2025-08-09 11:47:23 +02:00 committed by tykayn
parent 63dd364bcb
commit bcafef75f1
4 changed files with 35 additions and 24 deletions

View file

@ -195,6 +195,7 @@ class PublicController extends AbstractController
if ($stats_exist) { if ($stats_exist) {
$stats = $stats_exist; $stats = $stats_exist;
} else { } else {
// var_dump('création d\'objet stats ');
$stats = new Stats(); $stats = new Stats();
$zipcode = (string)$demande->getInsee(); $zipcode = (string)$demande->getInsee();
$stats->setZone($zipcode); $stats->setZone($zipcode);
@ -387,6 +388,7 @@ class PublicController extends AbstractController
'name' => $name, 'name' => $name,
'commerce' => $place, 'commerce' => $place,
'zone' => $zipcode, 'zone' => $zipcode,
'zipcode' => $zipcode,
'completion_percentage' => $place->getCompletionPercentage(), 'completion_percentage' => $place->getCompletionPercentage(),
'hide_filled_inputs' => $this->hide_filled_inputs, 'hide_filled_inputs' => $this->hide_filled_inputs,
'excluded_tags_to_render' => $this->motocultrice->excluded_tags_to_render, 'excluded_tags_to_render' => $this->motocultrice->excluded_tags_to_render,
@ -499,8 +501,8 @@ class PublicController extends AbstractController
]); ]);
} }
#[Route('/modify/{osm_object_id}/{version}/{changesetID}', name: 'app_public_submit')] #[Route('/modify/{osm_object_id}/{version}/{changesetID}/{insee_code}', name: 'app_public_submit')]
public function submit($osm_object_id, $version, $changesetID): Response public function submit($osm_object_id, $version, $changesetID,$insee_code): Response
{ {
$this->actionLogger->log('submit_object', [ $this->actionLogger->log('submit_object', [
@ -509,11 +511,15 @@ class PublicController extends AbstractController
'changesetID' => $changesetID 'changesetID' => $changesetID
]); ]);
$place = $this->entityManager->getRepository(Place::class)->findOneBy(['osmId' => $osm_object_id]); $place = $this->entityManager->getRepository(Place::class)->findOneBy(['osmId' => $osm_object_id]);
if (!$place) { if (!$place) {
$this->addFlash('warning', 'Ce commerce n\'existe pas.'); $this->addFlash('warning', 'Ce commerce n\'existe pas.');
return $this->redirectToRoute('app_public_index'); return $this->redirectToRoute('app_public_index');
} }
$stats = $place->getStats();
$stat_zone = $stats->getZone();
// var_dump('stats object:', $stats->getZone());
// Récupérer les données POST // Récupérer les données POST
$request = Request::createFromGlobals(); $request = Request::createFromGlobals();
@ -555,11 +561,6 @@ class PublicController extends AbstractController
// Récupérer le token OSM depuis les variables d'environnement // Récupérer le token OSM depuis les variables d'environnement
$osm_api_token = $_ENV['APP_OSM_BEARER']; $osm_api_token = $_ENV['APP_OSM_BEARER'];
// var_dump($tags_after_modif);
// die("tosssp");
try { try {
$client = new Client(); $client = new Client();
@ -661,27 +662,28 @@ class PublicController extends AbstractController
$place->update_place_from_overpass_data($commerce_overpass); $place->update_place_from_overpass_data($commerce_overpass);
$this->entityManager->persist($place); $this->entityManager->persist($place);
$this->entityManager->flush(); // $this->entityManager->flush();
$this->entityManager->clear(); // $this->entityManager->clear();
$stats = $place->getStats(); $stats = $place->getStats();
if (!$stats) { // if (!$stats) {
$stats_exist = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $place->getZipCode()]); // // When modifying a Place, only use existing Stats objects, don't create new ones
if ($stats_exist) { // $stats_exist = $this->entityManager->getRepository(Stats::class)->findOneBy(['zone' => $insee_code]);
$stats = $stats_exist; // if ($stats_exist) {
} else { // $stats = $stats_exist;
$stats = new Stats(); // } else {
$stats->setZone($place->getZipCode()); // // If no Stats object exists for this INSEE code, we can't proceed
$stats->setKind('user'); // Set the kind to 'user' as it's created from a user interaction // $this->addFlash('warning', 'Impossible de modifier ce commerce car aucune statistique n\'existe pour cette zone.');
} // return $this->redirectToRoute('app_public_index');
} // }
// }
$stats->addPlace($place); $stats->addPlace($place);
$place->setStats($stats); // $place->setStats($stats);
$place->setModifiedDate(new \DateTime()); $place->setModifiedDate(new \DateTime());
$stats->computeCompletionPercent(); $stats->computeCompletionPercent();
$this->entityManager->persist($stats); // $this->entityManager->persist($stats);
$this->entityManager->persist($place); $this->entityManager->persist($place);
$this->entityManager->flush(); $this->entityManager->flush();
$this->entityManager->clear(); $this->entityManager->clear();
@ -693,6 +695,8 @@ class PublicController extends AbstractController
'commerce_overpass' => $commerce_overpass, 'commerce_overpass' => $commerce_overpass,
'place' => $place, 'place' => $place,
'status' => $status, 'status' => $status,
'insee_code' => $insee_code,
'stat_zone' => $stat_zone,
'exception' => $exception, 'exception' => $exception,
'exception_message' => $exception_message, 'exception_message' => $exception_message,
'mapbox_token' => $_ENV['MAPBOX_TOKEN'], 'mapbox_token' => $_ENV['MAPBOX_TOKEN'],

View file

@ -53,7 +53,7 @@ class Place
#[ORM\OneToMany(targetEntity: History::class, mappedBy: 'place_id', orphanRemoval: true)] #[ORM\OneToMany(targetEntity: History::class, mappedBy: 'place_id', orphanRemoval: true)]
private Collection $histories; private Collection $histories;
#[ORM\ManyToOne(inversedBy: 'places', cascade: ['persist'])] #[ORM\ManyToOne(inversedBy: 'places')]
private ?Stats $stats = null; private ?Stats $stats = null;
#[ORM\Column(type: Types::BIGINT)] #[ORM\Column(type: Types::BIGINT)]

View file

@ -33,7 +33,11 @@
{% if commerce_overpass is not empty %} {% if commerce_overpass is not empty %}
<form action="{{ path('app_public_submit', {'osm_object_id': commerce_overpass['@attributes'].id, 'version': commerce_overpass['@attributes'].version, 'changesetID': commerce_overpass['@attributes'].changeset }) }}" <form action="{{ path('app_public_submit',
{'osm_object_id': commerce_overpass['@attributes'].id,
'version': commerce_overpass['@attributes'].version,
'changesetID': commerce_overpass['@attributes'].changeset,
'insee_code': zipcode }) }}"
method="post" class="needs-validation"> method="post" class="needs-validation">
<div id="main_name" class="row g-3 mb-4"> <div id="main_name" class="row g-3 mb-4">

View file

@ -122,7 +122,10 @@
<hr> <hr>
<form action="{{ path('app_public_submit', {'osm_object_id': commerce_overpass['@attributes'].id, 'version': commerce_overpass['@attributes'].version, 'changesetID': commerce_overpass['@attributes'].changeset }) }}" method="post" class="needs-validation"> <form action="{{ path('app_public_submit', {'osm_object_id': commerce_overpass['@attributes'].id,
'version': commerce_overpass['@attributes'].version,
'changesetID': commerce_overpass['@attributes'].changeset,
'insee_code' : insee_code }) }}" method="post" class="needs-validation">
<input type="hidden" name="osm_kind" value="{{ place.osmKind }}"> <input type="hidden" name="osm_kind" value="{{ place.osmKind }}">