Gebühren berechnen Prozess

Gebührenberechnen
3009594 2024-11-16 17:29:55 +01:00
parent da0ce0845f
commit 712087279b
2 changed files with 72 additions and 83 deletions

View File

@ -9,36 +9,32 @@ import domain.ExceptionsKlassen.MediumNichtGefundenException;
import domain.Medium.*;
public class AusleiheSystem {
private HashMap<String,Mediumverwalter> medien;
private LocalDate ausleiheBeginn,ausleiheEnde;
private Calendar calendar;
public AusleiheSystem( HashMap<String,Mediumverwalter> medien) {
private HashMap<String, Mediumverwalter> medien;
private LocalDate ausleiheBeginn, ausleiheEnde;
public AusleiheSystem(HashMap<String, Mediumverwalter> medien) {
this.medien = medien;
}
public Ausleihe mediumAusleihen(Benutzer benutzer, String eindeutigenummer) throws MediumNichtGefundenException {
Mediumverwalter mediumAusleihen = findMedium(eindeutigenummer);
if (mediumAusleihen.isIstAusgeliehen())
throw new MediumNichtGefundenException("Das Medium ist ausgeliehen");
Mediumverwalter mediumAusleihen = findMedium(eindeutigenummer);
mediumAusleihen.setIstAusgeliehen(true);
mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1);
if (mediumAusleihen.isIstAusgeliehen())
throw new MediumNichtGefundenException("Das Medium ist ausgeliehen");
this.ausleiheBeginn = LocalDate.now();
mediumAusleihen.setIstAusgeliehen(true);
mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1);
this.ausleiheEnde = ausleiheBeginn.plusWeeks(mediumAusleihen.getLeihdauer());
this.ausleiheBeginn = LocalDate.now();
Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen, benutzer, ausleiheBeginn, ausleiheEnde);
this.ausleiheEnde = ausleiheBeginn.plusWeeks(mediumAusleihen.getLeihdauer());
return neueAusleihe;
Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen, benutzer, ausleiheBeginn, ausleiheEnde);
return neueAusleihe;
}
public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) {
Ausleihe ausgelieheneMedium = ausleihe.stream()
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
@ -47,23 +43,23 @@ public class AusleiheSystem {
ArrayList<String> ausgeliehenMedien = new ArrayList<>();
LocalDate heutigesDatum;
Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer();
if (ausgelieheneMedium != null) {
heutigesDatum = LocalDate.now();
if (heutigesDatum.isAfter(ausgelieheneMedium.getAusleiheEnde())) {
long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS);
double gebühren = 0.0;
if (überfälligeTage <= 7)
gebühren = überfälligeTage * 1.0;
else {
gebühren = (7 * 1.0);
gebühren += ((überfälligeTage - 7) * 2.0);
}
bibBenutzer.setGebühren( bibBenutzer.getGebühren() + gebühren);
long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS);
double gebühren = 0.0;
if (überfälligeTage <= 7)
gebühren = überfälligeTage * 1.0;
else {
gebühren = (7 * 1.0);
gebühren += ((überfälligeTage - 7) * 2.0);
}
bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren);
}
ausgelieheneMedium.getBenutzer().mediumZurückgeben(ausgelieheneMedium);
ausleihe.remove(ausgelieheneMedium);
@ -71,80 +67,75 @@ public class AusleiheSystem {
ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1);
for (Ausleihe a : ausgelieheneMedium.getBenutzer().getAusgeliehenenMedien())
ausgeliehenMedien.add(a.toString());
}
return ausgeliehenMedien;
}
public double SimulieremediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung, String datum)throws MediumNichtGefundenException {
public double SimulieremediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung, String datum)
throws MediumNichtGefundenException {
Ausleihe ausgelieheneMedium = ausleihe.stream()
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
.orElse(null);
LocalDate heutigesDatum;
LocalDate testDatum = LocalDate.parse(datum);
Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer();
double gebühren = 0.0;
Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer();
double gebühren = 0.0;
if (ausgelieheneMedium != null) {
heutigesDatum = LocalDate.now();
if (heutigesDatum.isAfter(testDatum)) {
long überfälligeTage = testDatum.until(heutigesDatum, ChronoUnit.DAYS);
if (überfälligeTage <= 7)
gebühren = überfälligeTage * 1.0;
else {
gebühren = (7 * 1.0);
gebühren += ((überfälligeTage - 7) * 2.0);
}
bibBenutzer.setGebühren( bibBenutzer.getGebühren() + gebühren);
return bibBenutzer.getGebühren();
long überfälligeTage = testDatum.until(heutigesDatum, ChronoUnit.DAYS);
if (überfälligeTage <= 7)
gebühren = überfälligeTage * 1.0;
else {
gebühren = (7 * 1.0);
gebühren += ((überfälligeTage - 7) * 2.0);
}
bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren);
return bibBenutzer.getGebühren();
}
}else
throw new MediumNichtGefundenException ("Das Medium wurde nicht gefunden");
} else
throw new MediumNichtGefundenException("Das Medium wurde nicht gefunden");
return gebühren;
}
public boolean medienVerlängern(Benutzer benutzer, String eindeutigeKennung) throws MediumNichtGefundenException {
Ausleihe medium = benutzer.getAusgeliehenenMedien()
.stream()
.filter(m -> m.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung))
.findFirst()
Ausleihe medium = benutzer.getAusgeliehenenMedien().stream()
.filter(m -> m.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
.orElse(null);
if (medium == null)
if (medium == null)
return false;
LocalDate heutigesDatum = LocalDate.now();
if (heutigesDatum.isAfter(medium.getAusleiheEnde()))
return false;
if (!medium.getMediumverwalter().isVerlängerbar())
return false;
if (medium.getVerlängerungen() == 3)
return false;
medium.setVerlängerungen(medium.getVerlängerungen() + 1);
return true;
}
private Mediumverwalter findMedium(String eindeutigeKennung) throws MediumNichtGefundenException {
if (medien.containsKey(eindeutigeKennung))
return medien.get(eindeutigeKennung);
else
throw new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar");
if (medien.containsKey(eindeutigeKennung))
return medien.get(eindeutigeKennung);
else
throw new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar");
}
}

View File

@ -46,15 +46,13 @@ public class BibSystem {
}
public ArrayList<String> medienRückgabe(String eindeutigeKennung) {
return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung);
}
public double simuliereMedienRückgabe(String eindeutigeKennung, String datum) throws MediumNichtGefundenException {
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, datum);
}
public boolean medienVerlängern(String eindeutigeKennung, String bibKartennummer) throws BenutzerNichtGefundenException, MediumNichtGefundenException {
Benutzer benutzer = findeBenutzer(bibKartennummer);
return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung);
@ -86,7 +84,6 @@ public class BibSystem {
throw new MediumNichtGefundenException("Kein treffer");
return treffer;
}
public void userRegistrieren(String name, String type, int alter, String istAdmin) throws FalscheEingabeException {
@ -115,6 +112,7 @@ public class BibSystem {
return "Das Medium wurde erfolgreich ausgeliehen";
}
// Temporäre Test Methode
private void mediumsAufladen() {
Mediumverwalter buch = new Mediumverwalter(true, 10, 28,