render('admin/index.html.twig', [ '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, ]); } }