PR2-Testate/LibrarySystem/domain/ausleihe/Ausleihe.java

65 lines
1.7 KiB
Java

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 + ")";
}
}