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