190 lines
6.8 KiB
Java
190 lines
6.8 KiB
Java
package UI;
|
|
|
|
import backend.benutzer.*;
|
|
import fassade.*;
|
|
import backend.creator.Creator;
|
|
|
|
import java.time.LocalDate;
|
|
import java.util.Scanner;
|
|
|
|
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. Medien 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. Admin-Login zur Gebührenverwaltung");
|
|
System.out.println("10. 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: adminLogin(); break;
|
|
case 10: weiter = false; break;
|
|
default: System.out.println("Ungültige Auswahl."); break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Medien durchsuchen
|
|
private void durchsuchenMedien() {
|
|
System.out.print("Suchbegriff (oder 'all' für alle Medien): ");
|
|
String suchbegriff = scanner.nextLine();
|
|
var ergebnisse = fassade.durchsuchenMedien(suchbegriff);
|
|
if (ergebnisse.isEmpty()) {
|
|
System.out.println("Keine Medien gefunden.");
|
|
} else {
|
|
ergebnisse.forEach(m -> System.out.println(m));
|
|
}
|
|
}
|
|
|
|
// Benutzer registrieren
|
|
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();
|
|
|
|
// Benutzer über die Fassade registrieren
|
|
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.");
|
|
}
|
|
}
|
|
|
|
// Benutzer anmelden
|
|
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.");
|
|
}
|
|
}
|
|
|
|
// Medien ausleihen
|
|
private void ausleihen() {
|
|
System.out.print("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.");
|
|
}
|
|
}
|
|
|
|
// Medien zurückgeben
|
|
private void rueckgabe() {
|
|
System.out.print("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.");
|
|
}
|
|
}
|
|
|
|
// Medien verlängern
|
|
private void verlaengern() {
|
|
System.out.print("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.");
|
|
}
|
|
}
|
|
|
|
// Gebühren einsehen
|
|
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.");
|
|
}
|
|
}
|
|
|
|
// Zeit verschieben
|
|
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.");
|
|
}
|
|
|
|
// Admin-Login zur Gebührenverwaltung
|
|
private void adminLogin() {
|
|
System.out.print("Admin-Benutzername: ");
|
|
String benutzername = scanner.nextLine();
|
|
System.out.print("Admin-Passwort: ");
|
|
String passwort = scanner.nextLine();
|
|
|
|
if (fassade.adminLogin(benutzername, passwort)) {
|
|
System.out.println("Admin-Login erfolgreich.");
|
|
fassade.verbucheUeberfaelligeGebuehren(); // Verbucht überfällige Gebühren
|
|
} else {
|
|
System.out.println("Falsche Admin-Zugangsdaten.");
|
|
}
|
|
}
|
|
}
|