Bib1/UI/Ui.java

166 lines
6.0 KiB
Java

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