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.*; import domain.Medium.*;
public class AusleiheSystem { public class AusleiheSystem {
private HashMap<String,Mediumverwalter> medien;
private LocalDate ausleiheBeginn,ausleiheEnde;
private Calendar calendar;
private HashMap<String, Mediumverwalter> medien;
public AusleiheSystem( HashMap<String,Mediumverwalter> medien) { private LocalDate ausleiheBeginn, ausleiheEnde;
public AusleiheSystem(HashMap<String, Mediumverwalter> medien) {
this.medien = medien; this.medien = medien;
} }
public Ausleihe mediumAusleihen(Benutzer benutzer, String eindeutigenummer) throws MediumNichtGefundenException { public Ausleihe mediumAusleihen(Benutzer benutzer, String eindeutigenummer) throws MediumNichtGefundenException {
Mediumverwalter mediumAusleihen = findMedium(eindeutigenummer); Mediumverwalter mediumAusleihen = findMedium(eindeutigenummer);
if (mediumAusleihen.isIstAusgeliehen())
throw new MediumNichtGefundenException("Das Medium ist ausgeliehen");
mediumAusleihen.setIstAusgeliehen(true); if (mediumAusleihen.isIstAusgeliehen())
mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1); 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) { public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) {
Ausleihe ausgelieheneMedium = ausleihe.stream() Ausleihe ausgelieheneMedium = ausleihe.stream()
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst() .filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
@ -47,23 +43,23 @@ public class AusleiheSystem {
ArrayList<String> ausgeliehenMedien = new ArrayList<>(); ArrayList<String> ausgeliehenMedien = new ArrayList<>();
LocalDate heutigesDatum; LocalDate heutigesDatum;
Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer(); Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer();
if (ausgelieheneMedium != null) { if (ausgelieheneMedium != null) {
heutigesDatum = LocalDate.now(); heutigesDatum = LocalDate.now();
if (heutigesDatum.isAfter(ausgelieheneMedium.getAusleiheEnde())) { if (heutigesDatum.isAfter(ausgelieheneMedium.getAusleiheEnde())) {
long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS); long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS);
double gebühren = 0.0; double gebühren = 0.0;
if (überfälligeTage <= 7) if (überfälligeTage <= 7)
gebühren = überfälligeTage * 1.0; gebühren = überfälligeTage * 1.0;
else { else {
gebühren = (7 * 1.0); gebühren = (7 * 1.0);
gebühren += ((überfälligeTage - 7) * 2.0); gebühren += ((überfälligeTage - 7) * 2.0);
} }
bibBenutzer.setGebühren( bibBenutzer.getGebühren() + gebühren); bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren);
} }
ausgelieheneMedium.getBenutzer().mediumZurückgeben(ausgelieheneMedium); ausgelieheneMedium.getBenutzer().mediumZurückgeben(ausgelieheneMedium);
ausleihe.remove(ausgelieheneMedium); ausleihe.remove(ausgelieheneMedium);
@ -71,80 +67,75 @@ public class AusleiheSystem {
ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1); ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1);
for (Ausleihe a : ausgelieheneMedium.getBenutzer().getAusgeliehenenMedien()) for (Ausleihe a : ausgelieheneMedium.getBenutzer().getAusgeliehenenMedien())
ausgeliehenMedien.add(a.toString()); ausgeliehenMedien.add(a.toString());
} }
return ausgeliehenMedien; 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() Ausleihe ausgelieheneMedium = ausleihe.stream()
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst() .filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
.orElse(null); .orElse(null);
LocalDate heutigesDatum; LocalDate heutigesDatum;
LocalDate testDatum = LocalDate.parse(datum); LocalDate testDatum = LocalDate.parse(datum);
Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer(); Benutzer bibBenutzer = ausgelieheneMedium.getBenutzer();
double gebühren = 0.0; double gebühren = 0.0;
if (ausgelieheneMedium != null) { if (ausgelieheneMedium != null) {
heutigesDatum = LocalDate.now(); heutigesDatum = LocalDate.now();
if (heutigesDatum.isAfter(testDatum)) { if (heutigesDatum.isAfter(testDatum)) {
long überfälligeTage = testDatum.until(heutigesDatum, ChronoUnit.DAYS); long überfälligeTage = testDatum.until(heutigesDatum, ChronoUnit.DAYS);
if (überfälligeTage <= 7)
if (überfälligeTage <= 7) gebühren = überfälligeTage * 1.0;
gebühren = überfälligeTage * 1.0;
else {
else { gebühren = (7 * 1.0);
gebühren = (7 * 1.0); gebühren += ((überfälligeTage - 7) * 2.0);
gebühren += ((überfälligeTage - 7) * 2.0);
}
}
bibBenutzer.setGebühren(bibBenutzer.getGebühren() + gebühren);
bibBenutzer.setGebühren( bibBenutzer.getGebühren() + gebühren); return bibBenutzer.getGebühren();
return bibBenutzer.getGebühren();
} }
}else } else
throw new MediumNichtGefundenException ("Das Medium wurde nicht gefunden"); throw new MediumNichtGefundenException("Das Medium wurde nicht gefunden");
return gebühren; return gebühren;
} }
public boolean medienVerlängern(Benutzer benutzer, String eindeutigeKennung) throws MediumNichtGefundenException { public boolean medienVerlängern(Benutzer benutzer, String eindeutigeKennung) throws MediumNichtGefundenException {
Ausleihe medium = benutzer.getAusgeliehenenMedien() Ausleihe medium = benutzer.getAusgeliehenenMedien().stream()
.stream() .filter(m -> m.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
.filter(m -> m.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung))
.findFirst()
.orElse(null); .orElse(null);
if (medium == null) if (medium == null)
return false; return false;
LocalDate heutigesDatum = LocalDate.now(); LocalDate heutigesDatum = LocalDate.now();
if (heutigesDatum.isAfter(medium.getAusleiheEnde())) if (heutigesDatum.isAfter(medium.getAusleiheEnde()))
return false; return false;
if (!medium.getMediumverwalter().isVerlängerbar()) if (!medium.getMediumverwalter().isVerlängerbar())
return false; return false;
if (medium.getVerlängerungen() == 3) if (medium.getVerlängerungen() == 3)
return false; return false;
medium.setVerlängerungen(medium.getVerlängerungen() + 1); medium.setVerlängerungen(medium.getVerlängerungen() + 1);
return true; return true;
} }
private Mediumverwalter findMedium(String eindeutigeKennung) throws MediumNichtGefundenException { private Mediumverwalter findMedium(String eindeutigeKennung) throws MediumNichtGefundenException {
if (medien.containsKey(eindeutigeKennung)) if (medien.containsKey(eindeutigeKennung))
return medien.get(eindeutigeKennung); return medien.get(eindeutigeKennung);
else else
throw new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar"); 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) { public ArrayList<String> medienRückgabe(String eindeutigeKennung) {
return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung); return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung);
} }
public double simuliereMedienRückgabe(String eindeutigeKennung, String datum) throws MediumNichtGefundenException { public double simuliereMedienRückgabe(String eindeutigeKennung, String datum) throws MediumNichtGefundenException {
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, datum); return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, datum);
} }
public boolean medienVerlängern(String eindeutigeKennung, String bibKartennummer) throws BenutzerNichtGefundenException, MediumNichtGefundenException { public boolean medienVerlängern(String eindeutigeKennung, String bibKartennummer) throws BenutzerNichtGefundenException, MediumNichtGefundenException {
Benutzer benutzer = findeBenutzer(bibKartennummer); Benutzer benutzer = findeBenutzer(bibKartennummer);
return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung); return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung);
@ -86,7 +84,6 @@ public class BibSystem {
throw new MediumNichtGefundenException("Kein treffer"); throw new MediumNichtGefundenException("Kein treffer");
return treffer; return treffer;
} }
public void userRegistrieren(String name, String type, int alter, String istAdmin) throws FalscheEingabeException { 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"; return "Das Medium wurde erfolgreich ausgeliehen";
} }
// Temporäre Test Methode // Temporäre Test Methode
private void mediumsAufladen() { private void mediumsAufladen() {
Mediumverwalter buch = new Mediumverwalter(true, 10, 28, Mediumverwalter buch = new Mediumverwalter(true, 10, 28,