JahresGebühren simulieren berechnen und bezahlen
parent
76334da35f
commit
34b2daa2bb
|
@ -1,12 +1,8 @@
|
||||||
package domain.Benutzer;
|
package domain.Benutzer;
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.time.LocalDate;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import domain.AusleiheSystem.Ausleihe;
|
import domain.AusleiheSystem.Ausleihe;
|
||||||
import domain.Medium.Medium;
|
|
||||||
|
|
||||||
public abstract class Benutzer {
|
public abstract class Benutzer {
|
||||||
|
|
||||||
|
@ -17,8 +13,7 @@ public abstract class Benutzer {
|
||||||
private ArrayList<Ausleihe> ausgeliehenenMedien;
|
private ArrayList<Ausleihe> ausgeliehenenMedien;
|
||||||
private boolean angemeldet;
|
private boolean angemeldet;
|
||||||
private double gebühren;
|
private double gebühren;
|
||||||
private Date anmeldebeginn;
|
private LocalDate anmeldebeginn;
|
||||||
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
|
|
||||||
|
|
||||||
public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||||
super();
|
super();
|
||||||
|
@ -29,7 +24,7 @@ public abstract class Benutzer {
|
||||||
this.ausgeliehenenMedien = new ArrayList<>();
|
this.ausgeliehenenMedien = new ArrayList<>();
|
||||||
this.angemeldet = false;
|
this.angemeldet = false;
|
||||||
this.gebühren = 0;
|
this.gebühren = 0;
|
||||||
this.anmeldebeginn = new Date();
|
this.anmeldebeginn = LocalDate.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Ausweis getBibAusweis() {
|
public Ausweis getBibAusweis() {
|
||||||
|
@ -72,7 +67,7 @@ public abstract class Benutzer {
|
||||||
this.ausgeliehenenMedien.add(medium);
|
this.ausgeliehenenMedien.add(medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeMedium(Ausleihe medium) {
|
public void mediumZurückgeben(Ausleihe medium) {
|
||||||
this.ausgeliehenenMedien.remove(medium);
|
this.ausgeliehenenMedien.remove(medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +75,11 @@ public abstract class Benutzer {
|
||||||
return angemeldet;
|
return angemeldet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAngemeldet(boolean angemeldet) {
|
public void anmelden(boolean angemeldet) {
|
||||||
|
this.angemeldet = angemeldet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void abmelden(boolean angemeldet) {
|
||||||
this.angemeldet = angemeldet;
|
this.angemeldet = angemeldet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,23 +92,37 @@ public abstract class Benutzer {
|
||||||
this.gebühren = gebühren;
|
this.gebühren = gebühren;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LocalDate getAnmeldebeginn() {
|
||||||
|
|
||||||
public Date getAnmeldebeginn() {
|
|
||||||
return anmeldebeginn;
|
return anmeldebeginn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAnmeldebeginn(String anmeldebeginn) throws ParseException {
|
public void setAnmeldebeginn(LocalDate anmeldebeginn) {
|
||||||
this.anmeldebeginn = formatter.parse(anmeldebeginn);
|
this.anmeldebeginn = anmeldebeginn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double jahresgebühren() {
|
||||||
|
LocalDate nacheinemJahr = anmeldebeginn.plusYears(1);
|
||||||
|
if (LocalDate.now().isAfter(nacheinemJahr)) {
|
||||||
|
this.gebühren += getJahresgebühr();
|
||||||
|
anmeldebeginn = nacheinemJahr;
|
||||||
|
return this.gebühren;
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double simuliereJahresGebühren(String anmeldeBeginn) {
|
||||||
|
LocalDate aktuellesDatum = LocalDate.now();
|
||||||
|
LocalDate test = LocalDate.parse(anmeldeBeginn);
|
||||||
|
|
||||||
// public Date getAnmeldeEnde() {
|
while (test.isBefore(aktuellesDatum)) {
|
||||||
// return anmeldeEnde;
|
this.gebühren += getJahresgebühr();
|
||||||
// }
|
test = test.plusYears(1);
|
||||||
//
|
}
|
||||||
// public void setAnmeldeEnde(String anmeldeEnde) throws ParseException {
|
|
||||||
// this.anmeldeEnde= formatter.parse(anmeldeEnde);
|
anmeldebeginn = test;
|
||||||
// }
|
return this.gebühren;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public abstract double getJahresgebühr();
|
public abstract double getJahresgebühr();
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package domain.Benutzer;
|
package domain.Benutzer;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public class Kunde extends Benutzer {
|
public class Kunde extends Benutzer {
|
||||||
|
|
||||||
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||||
|
|
|
@ -8,10 +8,11 @@ public class Mitarbeiter extends Benutzer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getJahresgebühr() {
|
public double getJahresgebühr() {
|
||||||
|
|
||||||
return 50.0;
|
return 50.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void gebührVerbuchen(Benutzer benutzer) {
|
public void gebührVerbuchen(Benutzer benutzer) {
|
||||||
benutzer.setGebühren(getGebühren() * 0);
|
benutzer.setGebühren(0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +1,11 @@
|
||||||
package domain.fassade;
|
package domain.fassade;
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.util.*;
|
||||||
import java.text.SimpleDateFormat;
|
import domain.AusleiheSystem.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.stream.Collector;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import domain.AusleiheSystem.Ausleihe;
|
|
||||||
import domain.AusleiheSystem.AusleiheSystem;
|
|
||||||
import domain.Benutzer.*;
|
import domain.Benutzer.*;
|
||||||
import domain.Bibliothekskatalog.Mediensuchen;
|
import domain.Bibliothekskatalog.Mediensuchen;
|
||||||
import domain.ExceptionsKlassen.*;
|
import domain.ExceptionsKlassen.*;
|
||||||
import domain.Medium.Brettspiel;
|
import domain.Medium.*;
|
||||||
import domain.Medium.Buch;
|
|
||||||
import domain.Medium.Medium;
|
|
||||||
import domain.Medium.Mediumverwalter;
|
|
||||||
import domain.Medium.Videospiel;
|
|
||||||
import domain.UserRegistieren.Registieren;
|
import domain.UserRegistieren.Registieren;
|
||||||
|
|
||||||
public class BibSystem {
|
public class BibSystem {
|
||||||
|
@ -28,8 +13,7 @@ public class BibSystem {
|
||||||
private HashMap<String, Mediumverwalter> medien;
|
private HashMap<String, Mediumverwalter> medien;
|
||||||
private ArrayList<Ausleihe> ausleihe;
|
private ArrayList<Ausleihe> ausleihe;
|
||||||
private AusleiheSystem ausleiheSystem;
|
private AusleiheSystem ausleiheSystem;
|
||||||
private Date heutigesDatum;
|
private Benutzer bibAdmin;
|
||||||
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
|
|
||||||
|
|
||||||
private Benutzer temp;
|
private Benutzer temp;
|
||||||
|
|
||||||
|
@ -38,11 +22,31 @@ public class BibSystem {
|
||||||
this.alleBibBenutzer = new ArrayList<>();
|
this.alleBibBenutzer = new ArrayList<>();
|
||||||
this.medien = new HashMap<>();
|
this.medien = new HashMap<>();
|
||||||
this.ausleiheSystem = new AusleiheSystem(medien);
|
this.ausleiheSystem = new AusleiheSystem(medien);
|
||||||
this.heutigesDatum = new Date();
|
|
||||||
this.ausleihe = new ArrayList<>();
|
this.ausleihe = new ArrayList<>();
|
||||||
|
bibAdmin = new Mitarbeiter(new Ausweis("A"),"XY Müller",20,false);
|
||||||
mediumsAufladen();
|
mediumsAufladen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean gebührenBezahlen(double betrag, String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||||
|
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
||||||
|
double userBetrag = benutzer.getGebühren();
|
||||||
|
if (betrag == userBetrag ) {
|
||||||
|
((Mitarbeiter)bibAdmin).gebührVerbuchen(benutzer);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double jahresGebührenBerechnen(String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||||
|
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
||||||
|
return benutzer.jahresgebühren();
|
||||||
|
}
|
||||||
|
|
||||||
|
public double simuliereJahresGebührenBerechnen(String bibKartennummer, String datum) throws BenutzerNichtGefundenException {
|
||||||
|
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
||||||
|
return benutzer.simuliereJahresGebühren(datum);
|
||||||
|
}
|
||||||
|
|
||||||
public ArrayList<String> medienRückgabe(String eindeutigeKennung) {
|
public ArrayList<String> medienRückgabe(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()
|
||||||
|
@ -51,7 +55,7 @@ public class BibSystem {
|
||||||
ArrayList<String> ausgeliehenMedien = new ArrayList<>();
|
ArrayList<String> ausgeliehenMedien = new ArrayList<>();
|
||||||
|
|
||||||
if (ausgelieheneMedium != null) {
|
if (ausgelieheneMedium != null) {
|
||||||
ausgelieheneMedium.getBenutzer().removeMedium(ausgelieheneMedium);
|
ausgelieheneMedium.getBenutzer().mediumZurückgeben(ausgelieheneMedium);
|
||||||
ausleihe.remove(ausgelieheneMedium);
|
ausleihe.remove(ausgelieheneMedium);
|
||||||
ausgelieheneMedium.getMediumverwalter().setIstAusgeliehen(false);
|
ausgelieheneMedium.getMediumverwalter().setIstAusgeliehen(false);
|
||||||
ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1);
|
ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1);
|
||||||
|
@ -98,7 +102,7 @@ public class BibSystem {
|
||||||
|
|
||||||
public boolean userAnmdelden(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
public boolean userAnmdelden(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||||
Benutzer bibBenutzer = findeBenutzer(bibKartenNummer);
|
Benutzer bibBenutzer = findeBenutzer(bibKartenNummer);
|
||||||
bibBenutzer.setAngemeldet(true);
|
bibBenutzer.anmelden(true);
|
||||||
return bibBenutzer.isAngemeldet();
|
return bibBenutzer.isAngemeldet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,15 +122,6 @@ public class BibSystem {
|
||||||
return "Das Medium wurde erfolgreich ausgeliehen";
|
return "Das Medium wurde erfolgreich ausgeliehen";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Date getHeutigesDatum() {
|
|
||||||
return heutigesDatum;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHeutigesDatum(String heutigesDatum) throws ParseException {
|
|
||||||
this.heutigesDatum = formatter.parse(heutigesDatum);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Temporäre Test Methode
|
// Temporäre Test Methode
|
||||||
private void mediumsAufladen() {
|
private void mediumsAufladen() {
|
||||||
Mediumverwalter buch = new Mediumverwalter(true, 10, 4,
|
Mediumverwalter buch = new Mediumverwalter(true, 10, 4,
|
||||||
|
@ -153,7 +148,8 @@ public class BibSystem {
|
||||||
|
|
||||||
private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||||
return alleBibBenutzer.stream()
|
return alleBibBenutzer.stream()
|
||||||
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
|
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer))
|
||||||
|
.findFirst()
|
||||||
.orElseThrow(() -> new BenutzerNichtGefundenException(
|
.orElseThrow(() -> new BenutzerNichtGefundenException(
|
||||||
"Benutzer mit Kartennummer " + bibKartenNummer + " nicht gefunden"));
|
"Benutzer mit Kartennummer " + bibKartenNummer + " nicht gefunden"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package domain.gebührenBerechnenTest;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import domain.fassade.BibSystem;
|
||||||
|
|
||||||
|
class JahresGebührenTest {
|
||||||
|
BibSystem fassade;
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() throws Exception {
|
||||||
|
|
||||||
|
fassade = new BibSystem();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testFürKunde() throws Exception {
|
||||||
|
fassade.userRegistrieren("obai", "schüler", 15, "nein");
|
||||||
|
fassade.userAnmdelden("K1001");
|
||||||
|
double gebühren = fassade.simuliereJahresGebührenBerechnen("K1001", "2020-11-15");
|
||||||
|
assertEquals(100.0, gebühren);
|
||||||
|
assertTrue(fassade.gebührenBezahlen(gebühren, "K1001"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Disabled
|
||||||
|
void testFürMitarbeiter() throws Exception {
|
||||||
|
fassade.userRegistrieren("obai", "mitarbeiter", 15, "ja");
|
||||||
|
fassade.userAnmdelden("A1000");
|
||||||
|
double gebühren = fassade.simuliereJahresGebührenBerechnen("A1000","2020-11-15");
|
||||||
|
assertEquals(200.0,gebühren);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,8 @@
|
||||||
package main;
|
package main;
|
||||||
|
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||||
|
@ -9,7 +11,15 @@ import tui.Tui;
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
public static void main(String[] args) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
|
||||||
new Tui();
|
//new Tui();
|
||||||
|
|
||||||
|
// Aktuelles Datum
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
System.out.println("Heutiges Datum: " + today);
|
||||||
|
|
||||||
|
// Datum nach einem Jahr
|
||||||
|
LocalDate oneYearLater = today.plusYears(1);
|
||||||
|
System.out.println("Datum nach einem Jahr: " + oneYearLater);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue