Gebühren berechnen Prozess
parent
da0ce0845f
commit
712087279b
|
@ -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");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue