diff --git a/Restaurantverwaltung/src/Absence.java b/Restaurantverwaltung/src/Absence.java new file mode 100644 index 0000000..9887685 --- /dev/null +++ b/Restaurantverwaltung/src/Absence.java @@ -0,0 +1,32 @@ +class Absence { + private String username; + private String date; + private String reason; + + public Absence(String username, String date, String reason) { + this.username = username; + this.date = date; + this.reason = reason; + } + + public String getUsername() { + return username; + } + + public String getDate() { + return date; + } + + public String getReason() { + return reason; + } + + public String toFileFormat() { + return username + ";" + date + ";" + reason; + } + + @Override + public String toString() { + return "Mitarbeiter: " + username + ", Datum: " + date + ", Grund: " + reason; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Feedback.java b/Restaurantverwaltung/src/Feedback.java new file mode 100644 index 0000000..b453cef --- /dev/null +++ b/Restaurantverwaltung/src/Feedback.java @@ -0,0 +1,26 @@ +class Feedback { + private String employeeUsername; + private String feedbackText; + + public Feedback(String employeeUsername, String feedbackText) { + this.employeeUsername = employeeUsername; + this.feedbackText = feedbackText; + } + + public String getEmployeeUsername() { + return employeeUsername; + } + + public String getFeedbackText() { + return feedbackText; + } + + public String toFileFormat() { + return employeeUsername + ";" + feedbackText; + } + + @Override + public String toString() { + return "Kunde gibt Feedback zu " + employeeUsername + ": " + feedbackText; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/Shift.java b/Restaurantverwaltung/src/Shift.java new file mode 100644 index 0000000..648eb94 --- /dev/null +++ b/Restaurantverwaltung/src/Shift.java @@ -0,0 +1,35 @@ +import java.util.*; +import java.io.*; + +class Shift { + private String username; + private String shiftDate; + private String shiftTime; + + public Shift(String username, String shiftDate, String shiftTime) { + this.username = username; + this.shiftDate = shiftDate; + this.shiftTime = shiftTime; + } + + public String getUsername() { + return username; + } + + public String getShiftDate() { + return shiftDate; + } + + public String getShiftTime() { + return shiftTime; + } + + public String toFileFormat() { + return username + ";" + shiftDate + ";" + shiftTime; + } + + @Override + public String toString() { + return "Mitarbeiter: " + username + ", Datum: " + shiftDate + ", Uhrzeit: " + shiftTime; + } +} \ No newline at end of file diff --git a/Restaurantverwaltung/src/SystemController.java b/Restaurantverwaltung/src/SystemController.java index f0e8742..07e76af 100644 --- a/Restaurantverwaltung/src/SystemController.java +++ b/Restaurantverwaltung/src/SystemController.java @@ -9,9 +9,18 @@ class SystemController { private Menu menu = new Menu(); private FinancialManager financialManager = new FinancialManager(); private ReservationManager reservationManager = new ReservationManager(); + private List shifts = new ArrayList<>(); + private List absences = new ArrayList<>(); + private List feedbacks = new ArrayList<>(); + private final String SHIFT_FILE = "src/shifts.txt"; + private final String ABSENCE_FILE = "src/absences.txt"; + private final String FEEDBACK_FILE = "src/feedback.txt"; public SystemController() { loadUsersFromFile(); + loadShiftsFromFile(); + loadAbsencesFromFile(); + loadFeedbacksFromFile(); } public void startSystem() { @@ -49,7 +58,8 @@ class SystemController { System.out.println("4. Bestellungen verwalten"); System.out.println("5. Finanzbericht anzeigen"); System.out.println("6. Reservierungen verwalten"); - System.out.println("7. Beenden"); + System.out.println("7. Mitarbeiter verwalten"); + System.out.println("8. Beenden"); System.out.print("Bitte wähle eine Option: "); int choice = scanner.nextInt(); scanner.nextLine(); @@ -60,7 +70,8 @@ class SystemController { case 4 -> manageOrders(); case 5 -> showFinancialReports(); case 6 -> manageReservations(user); - case 7 -> { running = false; System.out.println("System wird beendet. Auf Wiedersehen!"); } + case 7 -> manageEmployees(user); + case 8 -> { running = false; System.out.println("System wird beendet. Auf Wiedersehen!"); } default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut."); } } @@ -189,6 +200,50 @@ class SystemController { } } } + + public void manageEmployees(User user) { + boolean managingEmployees = true; + while (managingEmployees) { + System.out.println("\n--- Mitarbeiter verwalten ---"); + System.out.println("1. Schichtplan anzeigen"); + System.out.println("2. Abwesenheit eintragen"); + System.out.println("3. Abwesenheit anzeigen"); + System.out.println("4. Feedback geben"); + System.out.println("5. Feedback anzeigen"); + System.out.println("6. Zurück zum Hauptmenü"); + System.out.print("Bitte wähle eine Option: "); + int choice = scanner.nextInt(); + scanner.nextLine(); // Eingabepuffer leeren + + switch (choice) { + case 1 -> showShiftPlan(user.username); // Schichtplan für den eingeloggten Mitarbeiter anzeigen + case 2 -> { + if (user.role == Role.MANAGER) { + createAbsence(user.username); // Abwesenheit für Mitarbeiter erstellen + } else { + System.out.println("Keine Rechte, um neue Nutzer zu erstellen."); + } + } + case 3 -> { + if (user.role == Role.MANAGER) { + showAbsences(); // Abwesenheiten zeigen + } else { + System.out.println("Keine Rechte, um neue Nutzer zu erstellen."); + } + } + case 4 -> giveFeedback(); // Feedback geben + case 5 -> { + if (user.role == Role.MANAGER) { + showFeedback(); // Feedbacks zeigen + } else { + System.out.println("Keine Rechte, um neue Nutzer zu erstellen."); + } + } + case 6 -> managingEmployees = false; // Zurück zum Hauptmenü + default -> System.out.println("Ungültige Auswahl. Bitte versuche es erneut."); + } + } + } private void createUser() { String username = ""; @@ -239,6 +294,143 @@ class SystemController { System.out.println("Fehler beim Lesen der Benutzerdatenbank: " + e.getMessage()); } } + + private void loadShiftsFromFile() { + try (BufferedReader reader = new BufferedReader(new FileReader("src/shifts.txt"))) { + String line; + while ((line = reader.readLine()) != null) { + String[] parts = line.split(";"); + String username = parts[0]; + String shiftDate = parts[1]; + String shiftTime = parts[2]; + + // Erstelle neuen Shift-Objekt und füge es der Liste hinzu + Shift shift = new Shift(username, shiftDate, shiftTime); + shifts.add(shift); + } + } catch (IOException e) { + System.out.println("Fehler beim Laden der Schichtpläne: " + e.getMessage()); + } + } + + private void loadAbsencesFromFile() { + try (BufferedReader reader = new BufferedReader(new FileReader("src/absences.txt"))) { + String line; + while ((line = reader.readLine()) != null) { + String[] parts = line.split(";"); + String username = parts[0]; + String date = parts[1]; + String reason = parts[2]; + + // Erstelle neues Absence-Objekt und füge es der Liste hinzu + Absence absence = new Absence(username, date, reason); + absences.add(absence); + } + } catch (IOException e) { + System.out.println("Fehler beim Laden der Abwesenheiten: " + e.getMessage()); + } + } + + private void loadFeedbacksFromFile() { + try (BufferedReader reader = new BufferedReader(new FileReader("src/feedback.txt"))) { + String line; + while ((line = reader.readLine()) != null) { + String[] parts = line.split(";"); + String username = parts[0]; + String feedback = parts[1]; + + // Erstelle neues Feedback-Objekt und füge es der Liste hinzu + Feedback feedbackObj = new Feedback(username, feedback); + feedbacks.add(feedbackObj); + } + } catch (IOException e) { + System.out.println("Fehler beim Laden der Feedbacks: " + e.getMessage()); + } + } + + public void showShiftPlan(String username) { + System.out.println("\n--- Dein Schichtplan ---"); + for (Shift shift : shifts) { + if (shift.getUsername().equals(username)) { + System.out.println(shift); + } + } + } + + public void createAbsence(String username) { + System.out.println("Gib Den Namen des Mitarbeiters ein:"); + String name = scanner.nextLine(); + System.out.print("Gib das Datum der Abwesenheit ein: "); + String date = scanner.nextLine(); + System.out.print("Gib den Grund der Abwesenheit ein: "); + String reason = scanner.nextLine(); + + Absence absence = new Absence(name, date, reason); + absences.add(absence); + saveAbsencesToFile(); + System.out.println("Abwesenheit wurde erfolgreich eingetragen."); + } + + public void saveShiftToFile(String shift) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter("src/shifts.txt", true))) { + writer.write(shift); // Schicht als String speichern + writer.newLine(); + } catch (IOException e) { + System.out.println("Fehler beim Speichern der Schicht: " + e.getMessage()); + } + } + + public void showAbsences() { + System.out.println("\n--- Abwesenheiten ---"); + for (Absence absence : absences) { + System.out.println(absence); + } + } + + public void giveFeedback() { + System.out.print("Gib den Benutzernamen des Mitarbeiters ein: "); + String employeeUsername = scanner.nextLine(); + System.out.print("Gib das Feedback ein: "); + String feedbackText = scanner.nextLine(); + + Feedback feedback = new Feedback(employeeUsername, feedbackText); + feedbacks.add(feedback); + saveFeedbackToFile(); + System.out.println("Feedback wurde erfolgreich gespeichert."); + } + + public void showFeedback() { + if (feedbacks.isEmpty()) { + System.out.println("Keine Feedbacks vorhanden."); + } else { + System.out.println("\n--- Feedbacks ---"); + for (Feedback feedback : feedbacks) { + System.out.println(feedback.toString()); + } + } + } + + private void saveAbsencesToFile() { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(ABSENCE_FILE, true))) { + for (Absence absence : absences) { + writer.write(absence.toFileFormat()); + writer.newLine(); + } + } catch (IOException e) { + System.out.println("Fehler beim Speichern der Abwesenheiten: " + e.getMessage()); + } + } + + private void saveFeedbackToFile() { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(FEEDBACK_FILE, false))) { + for (Feedback feedback : feedbacks) { + writer.write(feedback.toFileFormat()); + writer.newLine(); + } + } catch (IOException e) { + System.out.println("Fehler beim Speichern des Feedbacks: " + e.getMessage()); + } + } private void saveUserToFile(User user) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(USERS_FILE, true))) { diff --git a/Restaurantverwaltung/src/absences.txt b/Restaurantverwaltung/src/absences.txt new file mode 100644 index 0000000..eba6423 --- /dev/null +++ b/Restaurantverwaltung/src/absences.txt @@ -0,0 +1,7 @@ +Arim;22.02.2025;Krank +Arim;22.02.2025;Krank +Dimitry ;25.04.2025;Krankheit +Arim;22.02.2025;Krank +Arim;22.02.2025;Krank +Dimitry ;25.04.2025;Krankheit +Abbas;26.03.2025;Krankheit diff --git a/Restaurantverwaltung/src/feedback.txt b/Restaurantverwaltung/src/feedback.txt new file mode 100644 index 0000000..cde5cf2 --- /dev/null +++ b/Restaurantverwaltung/src/feedback.txt @@ -0,0 +1,5 @@ +Abbas;Abbas hat den Tisch nicht gewaschen und beim Abrechnen aggressiv trinkgeld verlangt +Abbas;Schlecht +Arim;Gut +Dimitry;Gut arbeit +Abbas;Guter man diff --git a/Restaurantverwaltung/src/shifts.txt b/Restaurantverwaltung/src/shifts.txt new file mode 100644 index 0000000..e19bc68 --- /dev/null +++ b/Restaurantverwaltung/src/shifts.txt @@ -0,0 +1,3 @@ +Ali;25.03.2024;13 Uhr +Abbas;22.01.2024;14 Uhr +Dimitry;15.01.2024; 15 Uhr \ No newline at end of file