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

View file

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

View file

@ -33,7 +33,11 @@
{% 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">
<div id="main_name" class="row g-3 mb-4">

View file

@ -122,7 +122,10 @@
<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 }}">