PR2-Testate/LibrarySystem/UI/UI.java

147 lines
5.5 KiB
Java

package LibrarySystem.UI;
import LibrarySystem.domain.benutzern.*;
import LibrarySystem.facade.BibliothekSystem;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class UI {
private BibliothekSystem system;
private Scanner scanner;
public UI(BibliothekSystem system) {
this.system = system;
this.scanner = new Scanner(System.in);
}
public void starten() {
while (true) {
System.out.println("Willkommen in der Bibliothek!\n");
System.out.println("1. Anmelden");
System.out.println("2. Medien durchsuchen");
System.out.println("3. Ausleihen eines Mediums");
System.out.println("4. Rückgabe eines Mediums");
System.out.println("5. Zeige ausgeliehene Medien und Gebühren");
System.out.println("6. Verlängern der Leihfrist");
System.out.println("7. Admin-Login (Überfällige Gebühren verbuchen)");
System.out.println("8. Systemdatum manuell ändern.");
System.out.println("0. Beenden\n");
System.out.print("Bitte wählen Sie eine Option: ");
int auswahl = scanner.nextInt();
scanner.nextLine();
switch (auswahl) {
case 1 -> anmelden();
case 2 -> durchsuchenMedien();
case 3 -> ausleihenMedium();
case 4 -> rueckgabeMedium();
case 5 -> zeigeAusgelieheneMedienUndGebuehren();
case 6 -> verlaengernLeihfrist();
case 7 -> adminLogin();
case 8 -> aendernDatumManuell();
case 0 -> {
System.out.println("Auf Wiedersehen!");
return;
}
default -> System.out.println("Ungültige Auswahl, bitte erneut versuchen.");
}
}
}
//1. Anmelden
private void anmelden() {
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
String kartennummer = scanner.nextLine();
Benutzer benutzer = system.anmelden(kartennummer);
if (benutzer != null) {
System.out.println("Willkommen! Erfolgreich angemeldet als: " + benutzer.getName() + ".");
} else {
System.out.println("Flasche Kartennummer. Bitte erneut versuchen!");
}
}
//2. Medien durchsuchen
private void durchsuchenMedien() {
System.out.println("Durchsuchen der Medien: (bitte nur Titel und Medienart eingeben)");
System.out.println("Titel: ");
String titel = scanner.nextLine();
System.out.println("Medienart: ");
String medienart = scanner.nextLine();
system.durchsuchenMedien(titel, medienart);
}
//3. Ausleihe eines Mediums
private void ausleihenMedium() {
System.out.println("Bitte melden Sie sich mit der Kartennummer ein: ");
String kartennummer = scanner.nextLine();
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie ausleihen möchten: ");
String mediumID = scanner.nextLine();
system.ausleiheMedium(kartennummer, mediumID);
}
//4. Rückgabe eines Mediums
private void rueckgabeMedium() {
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: ");
String mediumId = scanner.nextLine();
system.rueckgabeMedium(mediumId);
}
//5. Zeige ausgeliehene Medien und Gebühren
private void zeigeAusgelieheneMedienUndGebuehren() {
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
String kartennummer = scanner.nextLine();
Benutzer benutzer = system.anmelden(kartennummer);
if (benutzer != null) {
system.zeigeGebuehrenkonto(kartennummer);
benutzer.anzeigenAusleihen();
}
}
//6. Verlängern der Leihfrist
private void verlaengernLeihfrist() {
System.out.println("Bitte melden Sie sich mit der Kartennummer ein: ");
String kartennummer = scanner.nextLine();
System.out.print("Bitte geben Sie die ID des Mediums ein, dessen Leihfrist Sie verlängern möchten: ");
String mediumId = scanner.nextLine();
system.verlaengernMedium(kartennummer,mediumId);
}
//7. Admin-Login
private void adminLogin() {
System.out.print("Bitte geben Sie Ihre Admin-Kartennummer ein: ");
String kartennummer = scanner.nextLine();
Benutzer admin = system.anmelden(kartennummer);
if (admin instanceof Admin) {
System.out.println("Admin erfolgreich eingeloggt.");
System.out.print("Bitte geben Sie die Kartennummer des Benutzers ein, dessen Gebühren Sie verbuchen möchten: ");
String benutzerKartennummer = scanner.nextLine();
Benutzer benutzer = system.anmelden(benutzerKartennummer);
if (benutzer != null) {
((Admin) admin).bestaetigeGebuehrenzahlung(benutzer);
}
} else {
System.out.println("Ungültige Admin-Kartennummer.");
}
}
private void aendernDatumManuell(){
System.out.println("Neues Datum eingeben (Format: yyyy-MM-dd)");
String datum = scanner.nextLine();
try{
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date neuesDatum = formatter.parse(datum);
system.setAktuellesDatum(neuesDatum);
} catch (ParseException e) {
System.out.println("Üngultiges Datum.");
}
}
}