65 lines
1.7 KiB
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 + ")";
|
|
}
|
|
|
|
|
|
}
|