document.addEventListener("DOMContentLoaded", () => { loadMitarbeiter(); }); function loadMitarbeiter() { fetch("/Projekt_SE2/MitarbeiterDatenServlet") .then(response => response.text()) .then(csv => { const rows = csv.trim().split("\n").slice(1); // Überspringe die Kopfzeile const tbody = document.querySelector("#mitarbeiterTabelle tbody"); tbody.innerHTML = ""; rows.forEach(row => { const columns = row.split(","); const tr = document.createElement("tr"); tr.innerHTML = ` ${columns[0]} ${columns[1]} ${columns[2]} ${columns[3]} ${columns[4]} ${columns[5]} ${columns[6]} ${columns[7]} ${columns[8]} `; tbody.appendChild(tr); }); }) .catch(error => showPopup("Fehler beim Laden der Mitarbeiter: " + error.message)); } function neuerMitarbeiter() { document.getElementById("popupOverlay").style.display = "flex"; document.getElementById("popupMessage").innerText = "Neuen Mitarbeiter hinzufügen"; clearPopupFields(); document.getElementById("popupConfirmButton").onclick = () => { const newMitarbeiter = { vorname: document.getElementById("vorname").value.trim(), nachname: document.getElementById("nachname").value.trim(), telefonNr: document.getElementById("telefonNr").value.trim(), email: document.getElementById("email").value.trim(), strasse: document.getElementById("strasse").value.trim(), hausnummer: document.getElementById("hausnummer").value.trim(), ort: document.getElementById("ort").value.trim(), password: document.getElementById("password").value.trim() }; if (Object.values(newMitarbeiter).some(value => value === "")) { showPopup("Fehler: Bitte alle Felder ausfüllen."); return; } fetch("/Projekt_SE2/NeuerMitarbeiterServlet", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams(newMitarbeiter).toString() }) .then(response => { if (response.ok) { loadMitarbeiter(); closePopup(); showPopup("Neuer Mitarbeiter erfolgreich hinzugefügt!"); } else { showPopup("Fehler beim Hinzufügen des Mitarbeiters."); } }) .catch(error => showPopup("Fehler beim Hinzufügen: " + error.message)); }; } function bearbeitenMitarbeiter(mitarbeiterNr) { fetch(`/Projekt_SE2/AktualisiereDatenServlet?mitarbeiterNr=${mitarbeiterNr}`) .then(response => response.text()) .then(csv => { const rows = csv.trim().split("\n"); if (rows.length === 0 || rows[0] === "") { throw new Error("Keine Mitarbeiterdaten gefunden."); } const mitarbeiterData = rows[0].split(","); if (mitarbeiterData.length < 9) { throw new Error("Ungültige CSV-Daten erhalten."); } // Felder mit den CSV-Daten füllen document.getElementById("vorname").value = mitarbeiterData[1]; document.getElementById("nachname").value = mitarbeiterData[2]; document.getElementById("telefonNr").value = mitarbeiterData[3]; document.getElementById("email").value = mitarbeiterData[4]; document.getElementById("strasse").value = mitarbeiterData[5]; document.getElementById("hausnummer").value = mitarbeiterData[6]; document.getElementById("ort").value = mitarbeiterData[7]; document.getElementById("password").value = mitarbeiterData[8]; // Popup anzeigen document.getElementById("popupOverlay").style.display = "flex"; document.getElementById("popupMessage").innerText = "Mitarbeiter bearbeiten"; // Speichern-Funktion setzen document.getElementById("popupConfirmButton").onclick = () => { saveMitarbeiter(mitarbeiterNr); // Erfolgsmeldung wird in saveMitarbeiter angezeigt }; }) .catch(error => showPopup("Fehler beim Laden der Mitarbeiterdetails: " + error.message)); } function saveMitarbeiter(mitarbeiterNr) { // Debug-Ausgabe zur Verfolgung // console.log("Speichern von Mitarbeiter:", mitarbeiterNr); // Sammeln der Formulardaten const formData = { vorname: document.getElementById("vorname").value.trim(), nachname: document.getElementById("nachname").value.trim(), telefonNr: document.getElementById("telefonNr").value.trim(), email: document.getElementById("email").value.trim(), strasse: document.getElementById("strasse").value.trim(), hausnummer: document.getElementById("hausnummer").value.trim(), ort: document.getElementById("ort").value.trim(), password: document.getElementById("password").value.trim() }; // Validierung: Überprüfen, ob alle Felder ausgefüllt sind const unfilledFields = Object.entries(formData).filter(([key, value]) => !value); if (unfilledFields.length > 0) { const fehlendeFelder = unfilledFields.map(([key]) => key).join(", "); showPopup(`Fehler: Die folgenden Felder sind leer: ${fehlendeFelder}`); return; } // URL je nach Kontext (Aktualisierung oder Neuerstellung) const servletURL = mitarbeiterNr ? `/Projekt_SE2/AktualisiereDatenServlet` : "/Projekt_SE2/NeuerMitarbeiterServlet"; // Bei Update wird die MitarbeiterNr angehängt if (mitarbeiterNr) { formData.mitarbeiterNr = mitarbeiterNr; } // Debug-Ausgabe der Daten console.log("Gesendete Daten:", formData); fetch(servletURL, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams(formData).toString() // Daten in x-www-form-urlencoded-Format umwandeln }) .then(response => { if (!response.ok) { // Fehlertext vom Server lesen return response.text().then((text) => { throw new Error(text); }); } const successMessage = mitarbeiterNr ? "Mitarbeiter erfolgreich aktualisiert!" : "Neuer Mitarbeiter erfolgreich hinzugefügt!"; showPopup(successMessage); closePopup(); loadMitarbeiter(); // Tabelle neu laden }) .catch((error) => showPopup("Fehler beim Speichern: " + error.message)); } // Mitarbeiter löschen function loeschenMitarbeiter(mitarbeiterNr) { const confirmation = confirm("Möchten Sie diesen Mitarbeiter wirklich löschen?"); if (confirmation) { fetch(`/Projekt_SE2/LoeschenMitarbeiterServlet`, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `mitarbeiterNr=${mitarbeiterNr}` }) .then(response => { if (response.ok) { // Mitarbeiter erfolgreich gelöscht alert("Mitarbeiter erfolgreich gelöscht!"); loadMitarbeiter(); // Aktualisiere die Tabelle } else { // Fehler vom Server lesen und anzeigen return response.text().then((errorMessage) => { showPopup("Fehler beim Löschen des Mitarbeiters: " + errorMessage); }); } }) .catch(error => { // Netzwerk- oder andere Fehler anzeigen showPopup("Fehler beim Löschen des Mitarbeiters: " + error.message); }); } } // Neuer Mitarbeiter hinzufügen // Popup schließen function closePopup() { document.getElementById("popupOverlay").style.display = "none"; clearPopupFields(); } // Felder im Popup leeren function clearPopupFields() { document.getElementById("vorname").value = ""; document.getElementById("nachname").value = ""; document.getElementById("telefonNr").value = ""; document.getElementById("email").value = ""; document.getElementById("strasse").value = ""; document.getElementById("hausnummer").value = ""; document.getElementById("ort").value = ""; document.getElementById("password").value = ""; } // Popup-Nachricht anzeigen function showPopup(message) { const popupOverlay = document.getElementById("popupOverlay"); const popupMessage = document.getElementById("popupMessage"); popupMessage.textContent = message; popupOverlay.style.display = "flex"; } // Popup-Nachricht mit Bestätigung anzeigen function showPopupWithConfirmation(message, onConfirm) { const popupOverlay = document.getElementById("popupOverlay"); const popupMessage = document.getElementById("popupMessage"); popupMessage.textContent = message; const confirmButton = document.getElementById("popupConfirmButton"); confirmButton.style.display = "inline-block"; confirmButton.onclick = () => { closePopup(); onConfirm(); }; popupOverlay.style.display = "flex"; }