111 lines
4.1 KiB
Java
111 lines
4.1 KiB
Java
package fassade;
|
|
|
|
import backend.medium.Medien;
|
|
import backend.benutzer.*;
|
|
import fassade.Aausleihe;
|
|
import java.time.LocalDate;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.time.temporal.ChronoUnit;
|
|
|
|
|
|
public class Fassade {
|
|
|
|
private final Verwaltung verwaltung;
|
|
private LocalDate aktuellesDatum;
|
|
|
|
// Dummy Admin-Zugangsdaten
|
|
private static final String ADMIN_USERNAME = "admin";
|
|
private static final String ADMIN_PASSWORD = "admin123";
|
|
|
|
// Konstruktor
|
|
public Fassade(Verwaltung verwaltung) {
|
|
this.verwaltung = verwaltung;
|
|
this.aktuellesDatum = LocalDate.now(); // Initiales Datum ist das heutige Datum
|
|
}
|
|
|
|
// Benutzer registrieren
|
|
public void registriereBenutzer(Benutzer benutzer) {
|
|
verwaltung.addBenutzer(benutzer); // Benutzer zur fassade.Verwaltung hinzufügen
|
|
}
|
|
|
|
// Benutzer anmelden
|
|
public Benutzer anmeldenBenutzer(int kundennummer) {
|
|
return verwaltung.benutzerListe.stream()
|
|
.filter(b -> b.getKundennummer() == kundennummer)
|
|
.findFirst()
|
|
.orElse(null); // Gibt null zurück, wenn Benutzer nicht gefunden wurde
|
|
}
|
|
|
|
// backend.medium.Medien durchsuchen
|
|
public List<Medien> durchsuchenMedien(String suchbegriff) {
|
|
return verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
|
|
}
|
|
|
|
// backend.medium.Medien ausleihen
|
|
public void ausleihen(int medienId, Benutzer benutzer, LocalDate ausleihDatum, LocalDate rueckgabeDatum) {
|
|
Medien medien = verwaltung.mediensListe.stream()
|
|
.filter(m -> m.getId() == medienId)
|
|
.findFirst()
|
|
.orElse(null);
|
|
|
|
if (medien != null) {
|
|
verwaltung.addAL(medien, benutzer, ausleihDatum, rueckgabeDatum); // Leihe das Medium aus
|
|
} else {
|
|
System.out.println("backend.medium.Medien nicht gefunden.");
|
|
}
|
|
}
|
|
|
|
// backend.medium.Medien zurückgeben
|
|
public void rueckgabe(int medienId, Benutzer benutzer, LocalDate rueckgabeDatum) {
|
|
verwaltung.rueckgabe(medienId, benutzer, rueckgabeDatum); // Rückgabe des Mediums
|
|
}
|
|
|
|
// backend.medium.Medien verlängern
|
|
public void verlaengern(int medienId, Benutzer benutzer) {
|
|
Medien medien = verwaltung.mediensListe.stream()
|
|
.filter(m -> m.getId() == medienId)
|
|
.findFirst()
|
|
.orElse(null);
|
|
|
|
if (medien != null) {
|
|
verwaltung.verlängern(medien, benutzer); // Verlängere die Leihfrist
|
|
} else {
|
|
System.out.println("backend.medium.Medien nicht gefunden.");
|
|
}
|
|
}
|
|
|
|
// Zeit verschieben
|
|
public void zeitVerschieben(LocalDate neuesDatum) {
|
|
this.aktuellesDatum = neuesDatum; // Aktuelles Datum auf das neue Datum setzen
|
|
}
|
|
|
|
// Aktuelles Datum abrufen
|
|
public LocalDate getAktuellesDatum() {
|
|
return aktuellesDatum; // Gibt das aktuelle Datum zurück
|
|
}
|
|
|
|
// Admin-Login-Methode
|
|
public boolean adminLogin(String benutzername, String passwort) {
|
|
return ADMIN_USERNAME.equals(benutzername) && ADMIN_PASSWORD.equals(passwort);
|
|
}
|
|
|
|
// Methode zum Verbuchen überfälliger Gebühren
|
|
public void verbucheUeberfaelligeGebuehren() {
|
|
// Hole alle überfälligen Ausleihen
|
|
List<Aausleihe> ueberfaelligAusleihen = verwaltung.getAlleAusleihen().stream()
|
|
.filter(ausleihe -> LocalDate.now().isAfter(ausleihe.getRueckgabeDatum()) && !ausleihe.getMedien().istAusgeliehen())
|
|
.collect(Collectors.toList());
|
|
|
|
// Gebühr für jede überfällige Ausleihe berechnen und dem Benutzer hinzufügen
|
|
for (Aausleihe ausleihe : ueberfaelligAusleihen) {
|
|
Benutzer benutzer = ausleihe.getBenutzer();
|
|
long ueberfaelligeTage = ChronoUnit.DAYS.between(ausleihe.getRueckgabeDatum(), LocalDate.now());
|
|
double gebuehr = ueberfaelligeTage * 2.0; // Beispiel: 2 EUR pro überfälligem Tag
|
|
benutzer.addGebuehr(gebuehr); // Gebühr dem Benutzer hinzufügen
|
|
System.out.println("Gebühr für " + benutzer.getName() + ": " + gebuehr + " EUR");
|
|
}
|
|
}
|
|
|
|
}
|