ajout recherche par nom
This commit is contained in:
parent
3a73c1adad
commit
ccab916286
11 changed files with 345 additions and 204 deletions
|
@ -76,6 +76,29 @@ final class AdminController extends AbstractController
|
|||
]);
|
||||
}
|
||||
|
||||
#[Route('/admin/commerce/{id}', name: 'app_admin_commerce')]
|
||||
public function commerce(int $id): Response
|
||||
{
|
||||
|
||||
// Vérifier si on est en prod
|
||||
if ($this->getParameter('kernel.environment') === 'prod') {
|
||||
$this->addFlash('error', 'Vous n\'avez pas accès à cette page en production.');
|
||||
return $this->redirectToRoute('app_public_index');
|
||||
}
|
||||
$commerce = $this->entityManager->getRepository(Place::class)->find($id);
|
||||
|
||||
if (!$commerce) {
|
||||
throw $this->createNotFoundException('Commerce non trouvé');
|
||||
}
|
||||
|
||||
// Redirection vers la page de modification avec les paramètres nécessaires
|
||||
return $this->redirectToRoute('app_public_edit', [
|
||||
'zipcode' => $commerce->getZipCode(),
|
||||
'name' => $commerce->getName() ?? '?',
|
||||
'uuid' => $commerce->getUuidForUrl()
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/admin/labourer/{zip_code}', name: 'app_admin_labourer')]
|
||||
public function labourer_zone(string $zip_code): Response
|
||||
{
|
||||
|
@ -201,13 +224,16 @@ final class AdminController extends AbstractController
|
|||
public function delete(int $id): Response
|
||||
{
|
||||
$commerce = $this->entityManager->getRepository(Place::class)->find($id);
|
||||
$name = $commerce->getName();
|
||||
$this->entityManager->remove($commerce);
|
||||
$this->entityManager->flush();
|
||||
if($commerce) {
|
||||
$this->entityManager->remove($commerce);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->addFlash('success', 'Le lieu '.$name.' a été supprimé avec succès de OSM Mes commerces, mais pas dans OpenStreetMap.');
|
||||
$this->addFlash('success', 'Le lieu '.$commerce->getName().' a été supprimé avec succès de OSM Mes commerces, mais pas dans OpenStreetMap.');
|
||||
} else {
|
||||
$this->addFlash('error', 'Le lieu n\'existe pas.');
|
||||
}
|
||||
|
||||
return $this->redirectToRoute('app_admin_dashboard');
|
||||
return $this->redirectToRoute('app_public_dashboard');
|
||||
}
|
||||
|
||||
#[Route('/admin/delete_by_zone/{zip_code}', name: 'app_admin_delete_by_zone')]
|
||||
|
@ -222,8 +248,8 @@ final class AdminController extends AbstractController
|
|||
|
||||
$this->addFlash('success', 'Tous les commerces de la zone '.$zip_code.' ont été supprimés avec succès de OSM Mes commerces, mais pas dans OpenStreetMap.');
|
||||
|
||||
return $this->redirectToRoute('app_admin_dashboard');
|
||||
}
|
||||
return $this->redirectToRoute('app_public_dashboard');
|
||||
}
|
||||
|
||||
|
||||
#[Route('/admin/export', name: 'app_admin_export')]
|
||||
|
|
|
@ -11,7 +11,8 @@ use Symfony\Component\HttpFoundation\Response;
|
|||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use GuzzleHttp\Client;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
use Symfony\Component\Mime\Email;
|
||||
use Symfony\Component\Mailer\MailerInterface;
|
||||
|
||||
class PublicController extends AbstractController
|
||||
{
|
||||
|
@ -20,21 +21,100 @@ class PublicController extends AbstractController
|
|||
|
||||
public function __construct(
|
||||
private EntityManagerInterface $entityManager,
|
||||
private Motocultrice $motocultrice
|
||||
private Motocultrice $motocultrice,
|
||||
private MailerInterface $mailer
|
||||
) {
|
||||
}
|
||||
|
||||
|
||||
#[Route('/propose-email/{email}/{type}/{id}', name: 'app_public_propose_email')]
|
||||
public function proposeEmail(string $email, string $type, int $id): Response
|
||||
{
|
||||
|
||||
|
||||
$data = $this->motocultrice->get_osm_object_data($type, $id);
|
||||
// Récupérer le code postal depuis les tags, sinon mettre -1
|
||||
$zipCode = isset($data['tags_converted']['addr:postcode']) ? (int)$data['tags_converted']['addr:postcode'] : -1;
|
||||
$place_name = $data['tags_converted']['name'];
|
||||
|
||||
// Vérifier si une Place existe déjà avec le même osm_kind et osmId
|
||||
$existingPlace = $this->entityManager->getRepository(Place::class)->findOneBy([
|
||||
'osm_kind' => $type,
|
||||
'osmId' => $id
|
||||
]);
|
||||
|
||||
if ($existingPlace) {
|
||||
// Mettre à jour l'email de la Place existante
|
||||
$existingPlace->setEmail($email)->setLastContactAttemptDate(new \DateTime());
|
||||
$this->entityManager->flush();
|
||||
|
||||
$debug = '';
|
||||
if ($this->getParameter('kernel.environment') !== 'prod') {
|
||||
$debug = 'Bonjour, nous sommes des bénévoles d\'OpenStreetMap France et nous vous proposons de modifier les informations de votre commerce. Voici votre lien unique de modification: ' . $this->generateUrl('app_public_edit', [
|
||||
'zipcode' => $zipCode,
|
||||
'name' => $place_name,
|
||||
'uuid' => $existingPlace->getUuidForUrl()
|
||||
], true);
|
||||
}
|
||||
|
||||
$this->addFlash('success', 'L\'email a été mis à jour. Un email vous sera envoyé avec le lien de modification. '.$debug);
|
||||
} else {
|
||||
|
||||
|
||||
// Créer une nouvelle entité Place
|
||||
$place = new Place();
|
||||
$place->setEmail($email)
|
||||
->setOsmId($id)
|
||||
->setOsmKind($type)
|
||||
->setAskedHumainsSupport(false)
|
||||
->setOptedOut(false)
|
||||
->setDead(false)
|
||||
->setNote('')
|
||||
->setModifiedDate(new \DateTime())
|
||||
->setZipCode($zipCode)
|
||||
->setPlaceCount(0)
|
||||
|
||||
->setLastContactAttemptDate(new \DateTime())
|
||||
->setUuidForUrl(uniqid());
|
||||
|
||||
$this->entityManager->persist($place);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$debug = '';
|
||||
if ($this->getParameter('kernel.environment') !== 'prod') {
|
||||
$debug = 'Bonjour, nous sommes des bénévoles d\'OpenStreetMap France et nous vous proposons de modifier les informations de votre commerce. Voici votre lien unique de modification: ' . $this->generateUrl('app_public_edit', [
|
||||
'zipcode' => $zipCode,
|
||||
'name' => $place_name,
|
||||
'uuid' => $place->getUuidForUrl()
|
||||
], true);
|
||||
}
|
||||
$this->addFlash('success', 'Un email vous sera envoyé avec le lien de modification. '.$debug);
|
||||
}
|
||||
|
||||
// Envoyer l'email
|
||||
$destinataire = $this->getParameter('kernel.environment') === 'prod' ? $email : 'contact+essai_osm_commerce@cipherbliss.com';
|
||||
|
||||
$message = (new Email())
|
||||
->from('contact@osm-commerce.fr')
|
||||
->to($destinataire)
|
||||
->subject('Votre lien de modification OpenStreetMap')
|
||||
->text('Bonjour, nous sommes des bénévoles d\'OpenStreetMap France et nous vous proposons de modifier les informations de votre commerce. Voici votre lien unique de modification: ' . $this->generateUrl('app_public_edit', [
|
||||
'zipcode' => $zipCode,
|
||||
'name' => $place_name,
|
||||
'uuid' => $existingPlace ? $existingPlace->getUuidForUrl() : $place->getUuidForUrl()
|
||||
], true));
|
||||
|
||||
$this->mailer->send($message);
|
||||
|
||||
return $this->redirectToRoute('app_public_index');
|
||||
}
|
||||
|
||||
#[Route('/', name: 'app_public_index')]
|
||||
public function index(): Response
|
||||
{
|
||||
$commerce = $this->motocultrice->get_osm_object_data();
|
||||
return $this->render('public/index.html.twig', [
|
||||
|
||||
return $this->render('public/home.html.twig', [
|
||||
'controller_name' => 'PublicController',
|
||||
'commerce' => $commerce,
|
||||
'mapbox_token' => $_ENV['MAPBOX_TOKEN'],
|
||||
'maptiler_token' => $_ENV['MAPTILER_TOKEN'],
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -123,13 +203,8 @@ class PublicController extends AbstractController
|
|||
$status = "Erreur : Le code postal doit être composé de 5 chiffres";
|
||||
continue;
|
||||
}
|
||||
} elseif ($tagKey === 'contact:phone' || $tagKey === 'phone') {
|
||||
// Nettoyer le numéro de téléphone
|
||||
$value = preg_replace('/[^0-9+]/', '', $value);
|
||||
} elseif (strpos($value, 'http://') === 0) {
|
||||
$value = str_replace('http://', 'https://', $value);
|
||||
}
|
||||
$tags[$tagKey] = $value;
|
||||
$tags[$tagKey] = trim($value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue