diff --git a/Biblio/src/Bibliothek/Bibliotheksverwaltung.java b/Biblio/src/Bibliothek/Bibliotheksverwaltung.java index 14a83ef..6e73ad3 100644 --- a/Biblio/src/Bibliothek/Bibliotheksverwaltung.java +++ b/Biblio/src/Bibliothek/Bibliotheksverwaltung.java @@ -145,23 +145,32 @@ public class Bibliotheksverwaltung { } } - - public void medienVerlaengern(String medienId, String kundenId, int aktuelleVerlaengerungen) { + /** + *Wenn ein Kunde ein von Ihm ausgeliehenes Medium verlängern möchte und das Medium verlängert werden kann + *wird das Medium um die erlaubte Zeit verlänegrt + * @param medienId + * @param kundenId + */ + public void medienVerlaengern(String medienId, String kundenId) { Medien medien = medienBestand.get(medienId); Kunde kunde = kundenListe.get(kundenId); if (medien != null && kunde != null) { - boolean erfolg = kunde.medienVerlaengern(medien, aktuelleVerlaengerungen); + boolean erfolg = kunde.medienVerlaengern(medien); if (erfolg) { System.out.println("Medium erfolgreich verlängert: " + medien.getTitel()); } else { - System.out.println("Verlängerung nicht möglich: Maximale Anzahl erreicht."); + System.out.println("Verlängerung nicht möglich: Maximale Anzahl erreicht oder Medium ist nicht verlängerbar."); } } else { System.out.println(medien == null ? "Medium nicht gefunden." : "Kunde nicht gefunden."); } } + /** + * Erlaubt es neue Medien hinzuzufügen mit ihrer Id und es wird überprüft ob die ID schon vorhanden ist + * @param medien + */ public void medienHinzufuegen(Medien medien) { String id = medien.getId().trim().toUpperCase(); // Normalisierung if (medienBestand.containsKey(id)) { @@ -172,6 +181,12 @@ public class Bibliotheksverwaltung { System.out.println("Medium hinzugefügt: " + medien.getTitel() + " (ID: " + id + ")"); } + /** + * Erlaubt es einem registrierten Kunden sich einzuloggen, wenn der Kunde bereits eingeloggt ist, + * wird eine Nachricht darüber zurückgegeben sowie auch wenn der Kunde noch nicht existiert + * @param kundenId + * @return + */ public boolean loginKunde(String kundenId) { if (eingeloggterBenutzer != null) { System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName()); @@ -188,6 +203,11 @@ public class Bibliotheksverwaltung { } } + /** + * Erlaubt es einem Admin sich einzuloggen so wie es auch beim Kunden läuft + * @param adminId + * @return + */ public boolean loginAdmin(String adminId) { if (eingeloggterBenutzer != null) { System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName()); @@ -204,6 +224,9 @@ public class Bibliotheksverwaltung { } } + /** + * loggt den Benutzer aus, sollte allerdings keiner eingeloggt sein wird eine Fehlermeldung ausgegeben + */ public void logout() { if (eingeloggterBenutzer != null) { System.out.println("Benutzer " + eingeloggterBenutzer.getName() + " wurde ausgeloggt."); @@ -213,6 +236,13 @@ public class Bibliotheksverwaltung { } } + /** + * Erstellt einen neuen Kunden mit dem K oder S präfix sowie einer hochzählenden Nummer um erkenntlich zu machen + * ob ein Student oder ein normaler Kunde vorhanden ist + * @param name + * @param istStudent + * @return + */ public Kunde registriereKunde(String name, boolean istStudent) { String prefix = istStudent ? "S" : "K"; int maxId = kundenListe.keySet().stream() @@ -228,6 +258,9 @@ public class Bibliotheksverwaltung { return neuerKunde; } + /** + * Erlaubt es dem Kunden seine ausgeliehenen Medien anzusehen als auch ob überziehungskosten entstanden sind + */ public void zeigeAusgelieheneMedien() { if (!(eingeloggterBenutzer instanceof Kunde)) { System.out.println("Nur eingeloggte Kunden können ausgeliehene Medien anzeigen."); @@ -249,11 +282,4 @@ public class Bibliotheksverwaltung { } } - public void pruefeUeberzogeneMedien() { - System.out.println("Überzogene Medien (Stand: " + aktuellesDatum + "):"); - medienBestand.values().stream() - .filter(medien -> !medien.verfuegbar() && medien.istUeberzogen(aktuellesDatum)) - .forEach(medien -> System.out.println("- " + medien.getDetails() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")")); - } - } diff --git a/Biblio/src/Bibliothek/Brettspiel.java b/Biblio/src/Bibliothek/Brettspiel.java index 54aaea1..91c42a5 100644 --- a/Biblio/src/Bibliothek/Brettspiel.java +++ b/Biblio/src/Bibliothek/Brettspiel.java @@ -12,12 +12,12 @@ public class Brettspiel extends Medien { @Override public int getAusleihdauer() { - return 3; + return 2; } @Override public int getMaxVerlaengerungen() { - return 1; + return 0; } @Override diff --git a/Biblio/src/Bibliothek/CD.java b/Biblio/src/Bibliothek/CD.java index e66d0d8..8bd4c3f 100644 --- a/Biblio/src/Bibliothek/CD.java +++ b/Biblio/src/Bibliothek/CD.java @@ -17,7 +17,7 @@ public class CD extends Medien { @Override public int getMaxVerlaengerungen() { - return 2; + return 0; } @Override diff --git a/Biblio/src/Bibliothek/DVD.java b/Biblio/src/Bibliothek/DVD.java index ef7025d..7210cb6 100644 --- a/Biblio/src/Bibliothek/DVD.java +++ b/Biblio/src/Bibliothek/DVD.java @@ -17,7 +17,7 @@ public class DVD extends Medien { @Override public int getMaxVerlaengerungen() { - return 1; + return 0; } @Override diff --git a/Biblio/src/Bibliothek/Kunde.java b/Biblio/src/Bibliothek/Kunde.java index 2a89be2..d45422e 100644 --- a/Biblio/src/Bibliothek/Kunde.java +++ b/Biblio/src/Bibliothek/Kunde.java @@ -38,10 +38,16 @@ public class Kunde extends User { .sum(); } + public Medien sucheAusgeliehenesMedium(String medienId) { + return ausgelieheneMedien.stream() + .filter(medien -> medien.getId().equalsIgnoreCase(medienId)) + .findFirst() + .orElse(null); + } - public boolean medienVerlaengern(Medien medien, int aktuelleVerlaengerungen) { + public boolean medienVerlaengern(Medien medien) { Consumer verlaengerung = m -> { - if (ausgelieheneMedien.contains(m) && m.verlaengern(aktuelleVerlaengerungen)) { + if (ausgelieheneMedien.contains(m) && m.verlaengern()) { // Kein Argument übergeben System.out.println("Medium verlängert: " + m.getTitel()); } else { System.out.println("Verlängerung nicht möglich."); @@ -50,4 +56,5 @@ public class Kunde extends User { verlaengerung.accept(medien); return false; } + } diff --git a/Biblio/src/Bibliothek/Medien.java b/Biblio/src/Bibliothek/Medien.java index 9f32732..927ffad 100644 --- a/Biblio/src/Bibliothek/Medien.java +++ b/Biblio/src/Bibliothek/Medien.java @@ -70,13 +70,21 @@ public abstract class Medien { return verlaengerungen; } - public boolean verlaengern(int aktuelleVerlaengerungen) { - if (aktuelleVerlaengerungen < getMaxVerlaengerungen()) { + public boolean verlaengern() { + if (getMaxVerlaengerungen() == 0) { + System.out.println("Dieses Medium kann nicht verlängert werden."); + return false; + } + + if (verlaengerungen < getMaxVerlaengerungen()) { verlaengerungen++; rueckgabedat = rueckgabedat.plusWeeks(getAusleihdauer()); + System.out.println("Das Medium wurde verlängert. Neues Rückgabedatum: " + rueckgabedat); return true; + } else { + System.out.println("Maximale Verlängerungsanzahl erreicht."); + return false; } - return false; } public void zurueckgeben() { diff --git a/Biblio/src/Bibliothek/UI.java b/Biblio/src/Bibliothek/UI.java index 7959f0a..bbaf697 100644 --- a/Biblio/src/Bibliothek/UI.java +++ b/Biblio/src/Bibliothek/UI.java @@ -140,20 +140,22 @@ public class UI { } private void medienVerlaengern() { - if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) { - System.out.println("Bitte loggen Sie sich als Kunde ein, um Medien zu verlängern."); - return; - } System.out.print("Medium-ID eingeben: "); String medienId = scanner.nextLine(); - System.out.print("Anzahl bisheriger Verlängerungen eingeben: "); - int verlaengerungen; - try { - verlaengerungen = Integer.parseInt(scanner.nextLine()); - Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer(); - verwaltung.medienVerlaengern(medienId, kunde.getId(), verlaengerungen); - } catch (NumberFormatException e) { - System.out.println("Ungültige Eingabe für Verlängerungen. Bitte eine Zahl eingeben."); + if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) { + System.out.println("Nur Kunden können Medien verlängern."); + return; + } + Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer(); + Medien medien = kunde.sucheAusgeliehenesMedium(medienId); // Suche im Kundenbestand + if (medien == null) { + System.out.println("Medium wurde nicht gefunden oder gehört nicht zu diesem Kunden."); + return; + } + + // Versuch, das Medium zu verlängern + if (!medien.verlaengern()) { + System.out.println("Die Verlängerung war nicht erfolgreich."); } } diff --git a/Biblio/src/Bibliothek/Videospiel.java b/Biblio/src/Bibliothek/Videospiel.java index 57cdaf1..f590e7d 100644 --- a/Biblio/src/Bibliothek/Videospiel.java +++ b/Biblio/src/Bibliothek/Videospiel.java @@ -12,12 +12,12 @@ public class Videospiel extends Medien { @Override public int getAusleihdauer() { - return 2; + return 4; } @Override public int getMaxVerlaengerungen() { - return 2; + return 1; } @Override diff --git a/out/production/Biblio/Bibliothek/Admin.class b/out/production/Biblio/Bibliothek/Admin.class index 02ede55..db7b75d 100644 Binary files a/out/production/Biblio/Bibliothek/Admin.class and b/out/production/Biblio/Bibliothek/Admin.class differ diff --git a/out/production/Biblio/Bibliothek/Bibliotheksverwaltung.class b/out/production/Biblio/Bibliothek/Bibliotheksverwaltung.class index 84c6e47..9a36611 100644 Binary files a/out/production/Biblio/Bibliothek/Bibliotheksverwaltung.class and b/out/production/Biblio/Bibliothek/Bibliotheksverwaltung.class differ diff --git a/out/production/Biblio/Bibliothek/Brettspiel.class b/out/production/Biblio/Bibliothek/Brettspiel.class index 9461f45..ba15791 100644 Binary files a/out/production/Biblio/Bibliothek/Brettspiel.class and b/out/production/Biblio/Bibliothek/Brettspiel.class differ diff --git a/out/production/Biblio/Bibliothek/CD.class b/out/production/Biblio/Bibliothek/CD.class index 34c51cc..4e21fca 100644 Binary files a/out/production/Biblio/Bibliothek/CD.class and b/out/production/Biblio/Bibliothek/CD.class differ diff --git a/out/production/Biblio/Bibliothek/DVD.class b/out/production/Biblio/Bibliothek/DVD.class index 1355ee2..3abd2c8 100644 Binary files a/out/production/Biblio/Bibliothek/DVD.class and b/out/production/Biblio/Bibliothek/DVD.class differ diff --git a/out/production/Biblio/Bibliothek/Kunde.class b/out/production/Biblio/Bibliothek/Kunde.class index b7f402e..79f470d 100644 Binary files a/out/production/Biblio/Bibliothek/Kunde.class and b/out/production/Biblio/Bibliothek/Kunde.class differ diff --git a/out/production/Biblio/Bibliothek/Main.class b/out/production/Biblio/Bibliothek/Main.class index c60d323..a57b509 100644 Binary files a/out/production/Biblio/Bibliothek/Main.class and b/out/production/Biblio/Bibliothek/Main.class differ diff --git a/out/production/Biblio/Bibliothek/Medien.class b/out/production/Biblio/Bibliothek/Medien.class index ba0e0e5..8c9e2a9 100644 Binary files a/out/production/Biblio/Bibliothek/Medien.class and b/out/production/Biblio/Bibliothek/Medien.class differ diff --git a/out/production/Biblio/Bibliothek/UI.class b/out/production/Biblio/Bibliothek/UI.class index 1dd5dc9..b78f4e4 100644 Binary files a/out/production/Biblio/Bibliothek/UI.class and b/out/production/Biblio/Bibliothek/UI.class differ diff --git a/out/production/Biblio/Bibliothek/User.class b/out/production/Biblio/Bibliothek/User.class index 49bb8c5..476b15d 100644 Binary files a/out/production/Biblio/Bibliothek/User.class and b/out/production/Biblio/Bibliothek/User.class differ diff --git a/out/production/Biblio/Bibliothek/Videospiel.class b/out/production/Biblio/Bibliothek/Videospiel.class index 64338f0..7b70ef2 100644 Binary files a/out/production/Biblio/Bibliothek/Videospiel.class and b/out/production/Biblio/Bibliothek/Videospiel.class differ