// pages/api/poiUpdateModal.js import React, { useState, useEffect } from "react"; const PoiUpdateModal = ({ onClose, poiData }) => { const [poiId, setPoiId] = useState(poiData ? poiData.idPoi : ""); const [name, setName] = useState(poiData ? poiData.name : ""); const [poiTypData, setPoiTypData] = useState([]); const [poiTypeId, setPoiTypeId] = useState(""); const [locationDeviceData, setLocationDeviceData] = useState([]); const [deviceName, setDeviceName] = useState(""); const [description, setDescription] = useState( poiData ? poiData.description : "" ); // Function to handle deleting a POI const handleDeletePoi = async () => { if (confirm("Sind Sie sicher, dass Sie diesen POI löschen möchten?")) { try { const response = await fetch(`/api/deletePoi?id=${poiId}`, { method: "DELETE", }); if (response.ok) { alert("POI wurde erfolgreich gelöscht."); onClose(); // Close the modal //Browser neu laden, um die aktualisierte Liste anzuzeigen window.location.reload(); } else { throw new Error("Fehler beim Löschen des POI."); } } catch (error) { console.error("Fehler beim Löschen des POI:", error); alert("Fehler beim Löschen des POI."); } } }; // Fetch POI types useEffect(() => { const fetchPoiTypData = async () => { try { const response = await fetch("/api/readPoiTyp"); const data = await response.json(); setPoiTypData(data); if (data && data.length > 0) { setPoiTypeId(data[0].idPoiTyp); // Set the first type as default } } catch (error) { console.error("Fehler beim Abrufen der poiTyp Daten:", error); } }; fetchPoiTypData(); }, []); // Fetch device data useEffect(() => { const fetchData = async () => { try { const response = await fetch("/api/talas_v5/location_device"); const data = await response.json(); setLocationDeviceData(data); if (data.length > 0) { setDeviceName(data[0].name); // Set initial device name } } catch (error) { console.error( "Fehler beim Abrufen der Standort- und Gerätedaten:", error ); } }; fetchData(); }, []); // Form submission handler const handleSubmit = async (event) => { event.preventDefault(); const idLDResponse = await fetch( `/api/getDeviceId?deviceName=${encodeURIComponent(deviceName)}` ); const idLDData = await idLDResponse.json(); const idLD = idLDData.idLD; try { const response = await fetch("/api/updatePoi", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ idPoi: poiId, description: name, idPoiTyp: poiTypeId, idLD: idLD, }), }); if (response.ok) { alert("POI wurde erfolgreich aktualisiert."); onClose(); // Schließen des Modals und Aktualisieren der Ansicht } else { const errorResponse = await response.json(); throw new Error( errorResponse.error || "Fehler beim Aktualisieren des POI." ); } } catch (error) { console.error("Fehler beim Aktualisieren des POI:", error); alert("Fehler beim Aktualisieren des POI."); } }; return (
); }; export default PoiUpdateModal;