diff --git a/Projekt_SE2/build/classes/com/cafe/login/LoginServlet.class b/Projekt_SE2/build/classes/com/cafe/login/LoginServlet.class
index 915e9e4..25d3b18 100644
Binary files a/Projekt_SE2/build/classes/com/cafe/login/LoginServlet.class and b/Projekt_SE2/build/classes/com/cafe/login/LoginServlet.class differ
diff --git a/Projekt_SE2/src/main/java/com/cafe/login/LoginServlet.java b/Projekt_SE2/src/main/java/com/cafe/login/LoginServlet.java
index bd8939d..ef942da 100644
--- a/Projekt_SE2/src/main/java/com/cafe/login/LoginServlet.java
+++ b/Projekt_SE2/src/main/java/com/cafe/login/LoginServlet.java
@@ -7,76 +7,85 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.io.PrintWriter;
import java.sql.*;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
- private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
+ private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String username = request.getParameter("username");
- String password = request.getParameter("password");
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ String username = request.getParameter("username");
+ String password = request.getParameter("password");
- String userRole = authenticateUser(username, password);
+ String userRole = authenticateUser(username, password);
- if ("Mitarbeiter".equals(userRole)) {
- // Weiterleitung zur Mitarbeiter-Seite
- response.sendRedirect("mitarbeiter.jsp");
- } else if ("Chef".equals(userRole)) {
- // Weiterleitung zur Chef-Seite
- response.sendRedirect("chef.jsp");
- } else {
- // Zurück zur Login-Seite mit Fehlermeldung
- request.setAttribute("errorMessage", "Ungültige Anmeldedaten!");
- request.getRequestDispatcher("startseite.jsp").forward(request, response);
- }
- }
+ if ("Mitarbeiter".equals(userRole)) {
+ // Weiterleitung zur Mitarbeiter-Seite
+ response.sendRedirect("mitarbeiter.jsp");
+ } else if ("Chef".equals(userRole)) {
+ // Weiterleitung zur Chef-Seite
+ response.sendRedirect("chef.jsp");
+ } else {
+ // Zurück zur Login-Seite mit Fehlermeldung
+ request.setAttribute("errorMessage", "Ungültige Anmeldedaten!");
+ request.getRequestDispatcher("startseite.jsp").forward(request, response);
+ }
+ }
- /**
- * Authentifiziert den Benutzer in der Datenbank.
- *
- * @param username Der Benutzername (E-Mail in der Datenbank)
- * @param password Das Passwort
- * @return Die Benutzerrolle ("Mitarbeiter", "Chef") oder null, wenn ungültig
- */
- private String authenticateUser(String username, String password) {
- String role = null;
+ /**
+ * Authentifiziert den Benutzer in der Datenbank.
+ *
+ * @param username Der Benutzername (E-Mail in der Datenbank)
+ * @param password Das Passwort
+ * @return Die Benutzerrolle ("Mitarbeiter", "Chef") oder null, wenn ungültig
+ */
+ private String authenticateUser(String username, String password) {
+ String role = null;
- String mitarbeiterQuery = "SELECT 'Mitarbeiter' as role FROM mitarbeiter WHERE email = ? AND password = ?";
- String chefQuery = "SELECT 'Chef' as role FROM chef WHERE email = ? AND password = ?";
+ try {
+ Class.forName("org.sqlite.JDBC");
+ } catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ }
- try (Connection conn = DriverManager.getConnection(DB_URL)) {
- // Mitarbeiter-Check
- try (PreparedStatement mitarbeiterStmt = conn.prepareStatement(mitarbeiterQuery)) {
- mitarbeiterStmt.setString(1, username);
- mitarbeiterStmt.setString(2, password);
+ String mitarbeiterQuery = "SELECT 'Mitarbeiter' as role FROM mitarbeiter WHERE email = ? AND password = ?";
+ String chefQuery = "SELECT 'Chef' as role FROM chef WHERE email = ? AND password = ?";
- try (ResultSet rs = mitarbeiterStmt.executeQuery()) {
- if (rs.next()) {
- role = rs.getString("role");
- return role;
- }
- }
- }
+ try (Connection conn = DriverManager.getConnection(DB_URL)) {
+ // Mitarbeiter-Check
+ try (PreparedStatement mitarbeiterStmt = conn.prepareStatement(mitarbeiterQuery)) {
+ mitarbeiterStmt.setString(1, username);
+ mitarbeiterStmt.setString(2, password);
- // Chef-Check
- try (PreparedStatement chefStmt = conn.prepareStatement(chefQuery)) {
- chefStmt.setString(1, username);
- chefStmt.setString(2, password);
+ try (ResultSet rs = mitarbeiterStmt.executeQuery()) {
+ if (rs.next()) {
+ role = rs.getString("role");
+ return role;
+ }
+ }
+ }
- try (ResultSet rs = chefStmt.executeQuery()) {
- if (rs.next()) {
- role = rs.getString("role");
- }
- }
- }
+ // Chef-Check
+ try (PreparedStatement chefStmt = conn.prepareStatement(chefQuery)) {
+ chefStmt.setString(1, username);
+ chefStmt.setString(2, password);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return role;
- }
-}
+ try (ResultSet rs = chefStmt.executeQuery()) {
+ if (rs.next()) {
+ role = rs.getString("role");
+ }
+ }
+ }
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return role;
+
+ }
+}
\ No newline at end of file
diff --git a/Projekt_SE2/src/main/java/com/cafe/verwaltung/AktualisiereDatenServlet.java b/Projekt_SE2/src/main/java/com/cafe/verwaltung/AktualisiereDatenServlet.java
new file mode 100644
index 0000000..49a2020
--- /dev/null
+++ b/Projekt_SE2/src/main/java/com/cafe/verwaltung/AktualisiereDatenServlet.java
@@ -0,0 +1,129 @@
+package com.cafe.verwaltung;
+
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.*;
+
+@WebServlet("/AktualisiereDatenServlet")
+public class AktualisiereDatenServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+ String mitarbeiterNr = request.getParameter("mitarbeiterNr");
+ if (mitarbeiterNr == null || mitarbeiterNr.isEmpty()) {
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "MitarbeiterNr fehlt.");
+ return;
+ }
+
+ response.setContentType("text/plain;charset=UTF-8");
+
+ try {
+ Class.forName("org.sqlite.JDBC");
+ } catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ }
+
+ try (Connection conn = DriverManager.getConnection(DB_URL)) {
+ String query = "SELECT m.mitarbeiterNr, m.vorname, m.nachname, m.telefonNr, m.email, " +
+ "m.strasse, m.hausnummer, m.ortsNr AS ort, m.password " +
+ "FROM Mitarbeiter m " +
+ "WHERE m.mitarbeiterNr = ?";
+
+ try (PreparedStatement stmt = conn.prepareStatement(query)) {
+ stmt.setInt(1, Integer.parseInt(mitarbeiterNr));
+ try (ResultSet rs = stmt.executeQuery()) {
+ if (rs.next()) {
+ String csvOutput = String.join(",",
+ rs.getString("mitarbeiterNr"),
+ rs.getString("vorname"),
+ rs.getString("nachname"),
+ rs.getString("telefonNr"),
+ rs.getString("email"),
+ rs.getString("strasse"),
+ rs.getString("hausnummer"),
+ rs.getString("ort"),
+ rs.getString("password")
+ );
+ response.getWriter().print(csvOutput);
+ } else {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "Mitarbeiter nicht gefunden.");
+ }
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
+ }
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+ // Parameter aus der Anfrage lesen
+ String mitarbeiterNr = request.getParameter("mitarbeiterNr");
+ String vorname = request.getParameter("vorname");
+ String nachname = request.getParameter("nachname");
+ String telefonNr = request.getParameter("telefonNr");
+ String email = request.getParameter("email");
+ String strasse = request.getParameter("strasse");
+ String hausnummer = request.getParameter("hausnummer");
+ String ortsNr = request.getParameter("ort");
+ String password = request.getParameter("password");
+
+ // Überprüfung, ob alle Felder gefüllt sind
+ if (mitarbeiterNr == null || mitarbeiterNr.isEmpty() ||
+ vorname == null || vorname.isEmpty() ||
+ nachname == null || nachname.isEmpty() ||
+ telefonNr == null || telefonNr.isEmpty() ||
+ email == null || email.isEmpty() ||
+ strasse == null || strasse.isEmpty() ||
+ hausnummer == null || hausnummer.isEmpty() ||
+ ortsNr == null || ortsNr.isEmpty() ||
+ password == null || password.isEmpty()) {
+
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Alle Felder müssen ausgefüllt sein.");
+ return;
+ }
+
+ try {
+ Class.forName("org.sqlite.JDBC");
+ } catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ }
+
+ try (Connection conn = DriverManager.getConnection(DB_URL)) {
+ String query = "UPDATE Mitarbeiter SET vorname = ?, nachname = ?, telefonNr = ?, email = ?, " +
+ "strasse = ?, hausnummer = ?, ortsNr = ?, password = ? WHERE mitarbeiterNr = ?";
+
+ try (PreparedStatement stmt = conn.prepareStatement(query)) {
+ stmt.setString(1, vorname);
+ stmt.setString(2, nachname);
+ stmt.setString(3, telefonNr);
+ stmt.setString(4, email);
+ stmt.setString(5, strasse);
+ stmt.setString(6, hausnummer);
+ stmt.setInt(7, Integer.parseInt(ortsNr));
+ stmt.setString(8, password);
+ stmt.setInt(9, Integer.parseInt(mitarbeiterNr));
+
+ int rowsUpdated = stmt.executeUpdate();
+ if (rowsUpdated > 0) {
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.getWriter().write("Mitarbeiterdaten erfolgreich aktualisiert.");
+ } else {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "Mitarbeiter nicht gefunden.");
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
+ }
+ }
+}
diff --git a/Projekt_SE2/src/main/java/com/cafe/verwaltung/LoeschenMitarbeiterServlet.java b/Projekt_SE2/src/main/java/com/cafe/verwaltung/LoeschenMitarbeiterServlet.java
new file mode 100644
index 0000000..ebff3a8
--- /dev/null
+++ b/Projekt_SE2/src/main/java/com/cafe/verwaltung/LoeschenMitarbeiterServlet.java
@@ -0,0 +1,46 @@
+package com.cafe.verwaltung;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.*;
+
+
+@WebServlet("/LoeschenMitarbeiterServlet")
+public class LoeschenMitarbeiterServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+ String mitarbeiterNr = request.getParameter("mitarbeiterNr");
+
+ try {
+ Class.forName("org.sqlite.JDBC");
+ } catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ }
+
+ if (mitarbeiterNr == null || mitarbeiterNr.isEmpty()) {
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Ungültige Mitarbeiter-Nr.");
+ return;
+ }
+
+ try (Connection conn = DriverManager.getConnection(DB_URL)) {
+ String query = "DELETE FROM Mitarbeiter WHERE mitarbeiterNr = ?";
+ try (PreparedStatement stmt = conn.prepareStatement(query)) {
+ stmt.setInt(1, Integer.parseInt(mitarbeiterNr));
+ stmt.executeUpdate();
+ response.setStatus(HttpServletResponse.SC_OK);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
+ }
+ }
+}
diff --git a/Projekt_SE2/src/main/java/com/cafe/verwaltung/MitarbeiterDatenServlet.java b/Projekt_SE2/src/main/java/com/cafe/verwaltung/MitarbeiterDatenServlet.java
new file mode 100644
index 0000000..81bed9c
--- /dev/null
+++ b/Projekt_SE2/src/main/java/com/cafe/verwaltung/MitarbeiterDatenServlet.java
@@ -0,0 +1,63 @@
+package com.cafe.verwaltung;
+
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.*;
+
+@WebServlet("/MitarbeiterDatenServlet")
+public class MitarbeiterDatenServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+ response.setContentType("text/plain;charset=UTF-8");
+
+ try {
+ Class.forName("org.sqlite.JDBC");
+ } catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ }
+
+ try (PrintWriter out = response.getWriter()) {
+ try (Connection conn = DriverManager.getConnection(DB_URL)) {
+ String query = "SELECT m.mitarbeiterNr, m.vorname, m.nachname, m.telefonNr, m.email, " +
+ "m.strasse, m.hausnummer, o.name AS ort, o.plz, m.password " +
+ "FROM Mitarbeiter m " +
+ "JOIN Orte o ON m.ortsNr = o.ortsNr " +
+ "ORDER BY m.mitarbeiterNr";
+
+ try (PreparedStatement stmt = conn.prepareStatement(query);
+ ResultSet rs = stmt.executeQuery()) {
+
+ StringBuilder csvOutput = new StringBuilder();
+ csvOutput.append("mitarbeiterNr,vorname,nachname,telefonNr,email,strasse,hausNr,ort,plz,password\n");
+
+ while (rs.next()) {
+ csvOutput.append(rs.getInt("mitarbeiterNr")).append(",")
+ .append(rs.getString("vorname")).append(",")
+ .append(rs.getString("nachname")).append(",")
+ .append(rs.getString("telefonNr")).append(",")
+ .append(rs.getString("email")).append(",")
+ .append(rs.getString("strasse")).append(",")
+ .append(rs.getString("hausnummer")).append(",")
+ .append(rs.getString("ort")).append(",")
+ .append(rs.getString("plz")).append(",")
+ .append(rs.getString("password")).append("\n");
+ }
+
+ out.print(csvOutput.toString());
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
+ }
+ }
+ }
+}
diff --git a/Projekt_SE2/src/main/java/com/cafe/verwaltung/NeuerMitarbeiterServlet.java b/Projekt_SE2/src/main/java/com/cafe/verwaltung/NeuerMitarbeiterServlet.java
new file mode 100644
index 0000000..5027bcb
--- /dev/null
+++ b/Projekt_SE2/src/main/java/com/cafe/verwaltung/NeuerMitarbeiterServlet.java
@@ -0,0 +1,80 @@
+package com.cafe.verwaltung;
+
+import jakarta.servlet.ServletException;
+import java.sql.*;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+
+@WebServlet("/NeuerMitarbeiterServlet")
+public class NeuerMitarbeiterServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+ String vorname = request.getParameter("vorname");
+ String nachname = request.getParameter("nachname");
+ String telefonNr = request.getParameter("telefonNr");
+ String email = request.getParameter("email");
+ String strasse = request.getParameter("strasse");
+ String hausNr = request.getParameter("hausnummer");
+ String ortsnr = request.getParameter("ort");
+ String password = request.getParameter("password");
+
+ /*
+ System.out.println("Vorname: " + vorname);
+ System.out.println("Nachname: " + nachname);
+ System.out.println("TelefonNr: " + telefonNr);
+ System.out.println("Email: " + email);
+ System.out.println("Strasse: " + strasse);
+ System.out.println("HausNr: " + hausNr);
+ System.out.println("Ort: " + ortsnr);
+ System.out.println("Password: " + password);
+ */
+
+ // Validierung: Überprüfe, ob Pflichtfelder null oder leer sind
+ if (isEmpty(vorname) || isEmpty(nachname) || isEmpty(telefonNr) ||
+ isEmpty(email) || isEmpty(strasse) || isEmpty(hausNr) ||
+ isEmpty(ortsnr) || isEmpty(password)) {
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ response.getWriter().write("Bitte alle Felder ausfüllen.");
+ return;
+ }
+
+ try (Connection conn = DriverManager.getConnection(DB_URL)) {
+ String query = "INSERT INTO mitarbeiter (vorname, nachname, telefonNr, email, strasse, hausnummer, ortsNr, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
+ try (PreparedStatement stmt = conn.prepareStatement(query)) {
+ stmt.setString(1, vorname);
+ stmt.setString(2, nachname);
+ stmt.setString(3, telefonNr);
+ stmt.setString(4, email);
+ stmt.setString(5, strasse);
+ stmt.setString(6, hausNr);
+ stmt.setInt(7, Integer.parseInt(ortsnr)); // Konvertiere Ort zu Integer
+ stmt.setString(8, password);
+ stmt.executeUpdate();
+ response.setStatus(HttpServletResponse.SC_OK);
+ }
+ } catch (NumberFormatException e) {
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ response.getWriter().write("Fehler: " + e.getMessage());
+ } catch (SQLException e) {
+ e.printStackTrace();
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ response.getWriter().write("Datenbankfehler: " + e.getMessage());
+ }
+ }
+
+ private boolean isEmpty(String value) {
+ return value == null || value.trim().isEmpty();
+ }
+}
+
+
+
diff --git a/Projekt_SE2/src/main/webapp/WEB-INF/lib/web.xml b/Projekt_SE2/src/main/webapp/WEB-INF/lib/web.xml
index e1a30bc..cfa23fc 100644
--- a/Projekt_SE2/src/main/webapp/WEB-INF/lib/web.xml
+++ b/Projekt_SE2/src/main/webapp/WEB-INF/lib/web.xml
@@ -70,4 +70,36 @@
Willkommen zur Mitarbeiterverwaltung
vom EJSS Palast
- Hier kannst du alle deine Mitarbeiter verwalten, ihre Daten einsehen und deren Passwörter aktuellisieren.
+ Hier kannst du alle deine Mitarbeiter verwalten, ihre Daten einsehen und aktualisieren.
Falls du Unterstützung brauchst, steht dir unser Support-Team jederzeit zur Verfügung.
Wir freuen uns, dich auf dem Weg zum Erfolg begleiten zu dürfen.
Dein EJSS Palast Admin-Team
| Mitarbeiter-Nr | +Vorname | +Nachname | +Telefon | +Straße | +Haus-Nr | +Ort | +PLZ | +Aktionen | +
|---|