package LibrarySystem.domain.ausleihe; import LibrarySystem.domain.medien.*; import java.time.LocalDate; import java.time.LocalTime; import java.time.temporal.ChronoUnit; public class Ausleihe { private Medium medium; private LocalDate ausleiheDatum; private LocalDate rueckgabeFrist; private boolean zurueckgegeben; public Ausleihe(Medium medium, LocalDate ausleiheDatum) { this.medium = medium; this.ausleiheDatum = ausleiheDatum; this.rueckgabeFrist = ausleiheDatum.plusDays(medium.getAusleihdauer()); this.zurueckgegeben = false; } // Methode zur Berechnung der Gebühren public double berechneGebuehren(LocalDate aktuellesDatum) { if (zurueckgegeben || aktuellesDatum.isBefore(rueckgabeFrist)) { return 0.0; // Keine Gebühren, wenn noch rechtzeitig } long ueberfaelligeTage = ChronoUnit.DAYS.between(rueckgabeFrist, aktuellesDatum); double gebuehren = 0.0; if (ueberfaelligeTage <= 7) { gebuehren = ueberfaelligeTage * 1.0; // 1€ pro Tag für die ersten 7 Tage } else { gebuehren = (7 * 1.0) + ((ueberfaelligeTage - 7) * 2.0); // 2€ pro Tag ab dem 8. Tag } return gebuehren; } public boolean isZurueckgegeben() { return zurueckgegeben; } public void setZurueckgegeben(boolean zurueckgegeben) { this.zurueckgegeben = zurueckgegeben; } public Medium getMedium() { return medium; } public LocalDate getRueckgabeFrist() { return rueckgabeFrist; } @Override public String toString() { return medium.getTitel() + " (Rückgabefrist: " + rueckgabeFrist + ")"; } }