2025-05-26 11:55:44 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Controller;
|
|
|
|
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
use Symfony\Component\Routing\Attribute\Route;
|
2025-05-26 12:57:10 +02:00
|
|
|
use App\Entity\Place;
|
|
|
|
|
|
|
|
use App\Service\Motocultrice;
|
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
|
|
use function uuid_create;
|
2025-05-26 11:55:44 +02:00
|
|
|
|
|
|
|
final class AdminController extends AbstractController
|
|
|
|
{
|
2025-05-26 12:57:10 +02:00
|
|
|
|
|
|
|
public function __construct(
|
|
|
|
private EntityManagerInterface $entityManager,
|
|
|
|
private Motocultrice $motocultrice
|
|
|
|
) {
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2025-05-26 11:55:44 +02:00
|
|
|
#[Route('/admin', name: 'app_admin')]
|
|
|
|
public function index(): Response
|
|
|
|
{
|
|
|
|
return $this->render('admin/index.html.twig', [
|
|
|
|
'controller_name' => 'AdminController',
|
|
|
|
]);
|
|
|
|
}
|
2025-05-26 12:57:10 +02:00
|
|
|
|
|
|
|
#[Route('/admin/labourer/{zip_code}', name: 'app_admin_labourer')]
|
|
|
|
public function labourer_zone(string $zip_code): Response
|
|
|
|
{
|
|
|
|
$results = [];
|
|
|
|
// $zone = 'Briis sous forges';
|
|
|
|
$results = $this->motocultrice->labourer($zip_code);
|
|
|
|
|
|
|
|
|
|
|
|
// Récupérer les commerces existants dans la base de données pour cette zone
|
|
|
|
$commerces = $this->entityManager->getRepository(Place::class)->findBy(['zip_code' => $zip_code]);
|
|
|
|
|
|
|
|
$osm_object_ids = [];
|
|
|
|
|
|
|
|
if ($commerces) {
|
|
|
|
// Extraire les osm_object_ids des commerces existants
|
|
|
|
$osm_object_ids = array_map(function($commerce) {
|
|
|
|
return $commerce->getOsmId();
|
|
|
|
}, $commerces);
|
|
|
|
}
|
|
|
|
// pour chaque résultat, vérifier que l'on a pas déjà un commerce avec le même osm_object_id
|
|
|
|
|
|
|
|
$results = array_filter($results, function($commerce) use ($osm_object_ids) {
|
|
|
|
return !in_array($commerce['id'], $osm_object_ids);
|
|
|
|
});
|
|
|
|
|
|
|
|
// on crée un commerce pour chaque résultat qui reste
|
|
|
|
foreach ($results as $result) {
|
|
|
|
$commerce = new Place();
|
|
|
|
$commerce->setOsmId($result['id'])
|
|
|
|
->setOsmKind($result['type'])
|
|
|
|
->setName($result['name'])
|
|
|
|
->setZipCode($zip_code)
|
|
|
|
->setEmail($result['email'])
|
|
|
|
->setUuidForUrl($this->motocultrice->uuid_create())
|
|
|
|
->setOptedOut(false)
|
|
|
|
->setDead(false)
|
|
|
|
->setNote($result['note'] ?? null)
|
|
|
|
->setModifiedDate(new \DateTime())
|
|
|
|
->setAskedHumainsSupport(false)
|
|
|
|
->setLastContactAttemptDate(null)
|
|
|
|
->setStats(null);
|
|
|
|
$this->entityManager->persist($commerce);
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->entityManager->flush();
|
|
|
|
|
|
|
|
return $this->render('admin/labourage_results.html.twig', [
|
|
|
|
'results' => $results,
|
|
|
|
'zone' => $zip_code,
|
|
|
|
]);
|
|
|
|
}
|
2025-05-26 11:55:44 +02:00
|
|
|
}
|