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";
}