mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-06-20 01:44:42 +02:00
récupérer les objets avec email dans une zone par code postal
This commit is contained in:
parent
f5ab0c8205
commit
cb240dd169
8 changed files with 348 additions and 73 deletions
|
@ -5,9 +5,22 @@ namespace App\Controller;
|
|||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use App\Entity\Place;
|
||||
|
||||
use App\Service\Motocultrice;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use function uuid_create;
|
||||
|
||||
final class AdminController extends AbstractController
|
||||
{
|
||||
|
||||
public function __construct(
|
||||
private EntityManagerInterface $entityManager,
|
||||
private Motocultrice $motocultrice
|
||||
) {
|
||||
}
|
||||
|
||||
|
||||
#[Route('/admin', name: 'app_admin')]
|
||||
public function index(): Response
|
||||
{
|
||||
|
@ -15,4 +28,56 @@ final class AdminController extends AbstractController
|
|||
'controller_name' => 'AdminController',
|
||||
]);
|
||||
}
|
||||
|
||||
#[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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue