package UI; import backend.benutzer.*; import fassade.*; import java.time.LocalDate; import java.util.Scanner; import backend.creator.Creator; public class Ui { private final Fassade fassade; private final Scanner scanner; public Ui(Fassade fassade) { this.fassade = fassade; this.scanner = new Scanner(System.in); } public void starten() { boolean weiter = true; while (weiter) { System.out.println("Bitte wählen Sie eine Option:"); System.out.println("1.Medien durchsuchen"); System.out.println("2. Benutzer registrieren"); System.out.println("3. Benutzer anmelden"); System.out.println("4. ausleihen"); System.out.println("5.Medien zurückgeben"); System.out.println("6. Medien verlängern"); System.out.println("7. Gebühren einsehen"); System.out.println("8. Zeit verschieben"); System.out.println("9. Beenden"); int auswahl = scanner.nextInt(); scanner.nextLine(); // Puffer leeren switch (auswahl) { case 1: durchsuchenMedien(); break; case 2: registrierenBenutzer(); break; case 3: anmeldenBenutzer(); break; case 4: ausleihen(); break; case 5: rueckgabe(); break; case 6: verlaengern(); break; case 7: gebuehrenEinsehen(); break; case 8: zeitVerschieben(); break; case 9: weiter = false; break; default: System.out.println("Ungültige Auswahl."); break; } } } private void durchsuchenMedien() { System.out.print("Suchbegriff (oder 'all' für alle backend.medium.Medien): "); String suchbegriff = scanner.nextLine(); var ergebnisse = fassade.durchsuchenMedien(suchbegriff); if (ergebnisse.isEmpty()) { System.out.println("Keine backend.medium.Medien gefunden."); } else { ergebnisse.forEach(m -> System.out.println(m)); } } private void registrierenBenutzer() { System.out.print("Vorname: "); String vorname = scanner.nextLine(); System.out.print("Nachname: "); String nachname = scanner.nextLine(); System.out.print("Benutzertyp (e für Erwachsener, s für Schüler/Student): "); String art = scanner.nextLine(); // Erstelle den Benutzer über die backend.benutzer.Creator-Fabrikmethode Benutzer benutzer = Creator.factoryBenutzer(vorname, nachname, 0, art); // Kundennummer könnte hier 0 sein, wenn sie noch nicht vergeben wurde. if (benutzer != null) { fassade.registriereBenutzer(benutzer); System.out.println("Benutzer erfolgreich registriert."); } else { System.out.println("Fehler: Ungültiger Benutzertyp."); } } private void anmeldenBenutzer() { System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); scanner.nextLine(); // Puffer leeren Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer); if (benutzer != null) { System.out.println("Benutzer angemeldet: " + benutzer.getName() + " " + benutzer.getNachname()); } else { System.out.println("Benutzer nicht gefunden."); } } private void ausleihen() { System.out.print("backend.medium.Medien ID: "); int medienId = scanner.nextInt(); System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); scanner.nextLine(); // Puffer leeren Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer); if (benutzer != null) { System.out.print("Rückgabedatum (yyyy-MM-dd): "); LocalDate rueckgabeDatum = LocalDate.parse(scanner.nextLine()); fassade.ausleihen(medienId, benutzer, LocalDate.now(), rueckgabeDatum); System.out.println("Ausleihe erfolgreich."); } else { System.out.println("Benutzer nicht gefunden."); } } private void rueckgabe() { System.out.print("backend.medium.Medien ID: "); int medienId = scanner.nextInt(); System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); scanner.nextLine(); // Puffer leeren Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer); if (benutzer != null) { System.out.print("Rückgabedatum (yyyy-MM-dd): "); LocalDate rueckgabeDatum = LocalDate.parse(scanner.nextLine()); fassade.rueckgabe(medienId, benutzer, rueckgabeDatum); System.out.println("Rückgabe erfolgreich."); } else { System.out.println("Benutzer nicht gefunden."); } } private void verlaengern() { System.out.print("backend.medium.Medien ID: "); int medienId = scanner.nextInt(); System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); scanner.nextLine(); // Puffer leeren Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer); if (benutzer != null) { fassade.verlaengern(medienId, benutzer); } else { System.out.println("Benutzer nicht gefunden."); } } private void gebuehrenEinsehen() { System.out.print("Kundennummer: "); int kundennummer = scanner.nextInt(); scanner.nextLine(); // Puffer leeren Benutzer benutzer = fassade.anmeldenBenutzer(kundennummer); if (benutzer != null) { System.out.println("Ausstehende Gebühren: " + benutzer.getGebuehren() + "€"); } else { System.out.println("Benutzer nicht gefunden."); } } private void zeitVerschieben() { System.out.print("Neue Zeit (yyyy-MM-dd): "); String datum = scanner.nextLine(); fassade.zeitVerschieben(LocalDate.parse(datum)); System.out.println("Aktuelles Datum wurde auf " + datum + " geändert."); } }