JahresGebühren simulieren berechnen und bezahlen
parent
76334da35f
commit
34b2daa2bb
|
@ -1,12 +1,8 @@
|
|||
package domain.Benutzer;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
import domain.AusleiheSystem.Ausleihe;
|
||||
import domain.Medium.Medium;
|
||||
|
||||
public abstract class Benutzer {
|
||||
|
||||
|
@ -17,8 +13,7 @@ public abstract class Benutzer {
|
|||
private ArrayList<Ausleihe> ausgeliehenenMedien;
|
||||
private boolean angemeldet;
|
||||
private double gebühren;
|
||||
private Date anmeldebeginn;
|
||||
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
|
||||
private LocalDate anmeldebeginn;
|
||||
|
||||
public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||
super();
|
||||
|
@ -29,7 +24,7 @@ public abstract class Benutzer {
|
|||
this.ausgeliehenenMedien = new ArrayList<>();
|
||||
this.angemeldet = false;
|
||||
this.gebühren = 0;
|
||||
this.anmeldebeginn = new Date();
|
||||
this.anmeldebeginn = LocalDate.now();
|
||||
}
|
||||
|
||||
public Ausweis getBibAusweis() {
|
||||
|
@ -72,7 +67,7 @@ public abstract class Benutzer {
|
|||
this.ausgeliehenenMedien.add(medium);
|
||||
}
|
||||
|
||||
public void removeMedium(Ausleihe medium) {
|
||||
public void mediumZurückgeben(Ausleihe medium) {
|
||||
this.ausgeliehenenMedien.remove(medium);
|
||||
}
|
||||
|
||||
|
@ -80,7 +75,11 @@ public abstract class Benutzer {
|
|||
return angemeldet;
|
||||
}
|
||||
|
||||
public void setAngemeldet(boolean angemeldet) {
|
||||
public void anmelden(boolean angemeldet) {
|
||||
this.angemeldet = angemeldet;
|
||||
}
|
||||
|
||||
public void abmelden(boolean angemeldet) {
|
||||
this.angemeldet = angemeldet;
|
||||
}
|
||||
|
||||
|
@ -93,23 +92,37 @@ public abstract class Benutzer {
|
|||
this.gebühren = gebühren;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Date getAnmeldebeginn() {
|
||||
public LocalDate getAnmeldebeginn() {
|
||||
return anmeldebeginn;
|
||||
}
|
||||
|
||||
public void setAnmeldebeginn(String anmeldebeginn) throws ParseException {
|
||||
this.anmeldebeginn = formatter.parse(anmeldebeginn);
|
||||
public void setAnmeldebeginn(LocalDate 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);
|
||||
|
||||
while (test.isBefore(aktuellesDatum)) {
|
||||
this.gebühren += getJahresgebühr();
|
||||
test = test.plusYears(1);
|
||||
}
|
||||
|
||||
anmeldebeginn = test;
|
||||
return this.gebühren;
|
||||
}
|
||||
|
||||
// public Date getAnmeldeEnde() {
|
||||
// return anmeldeEnde;
|
||||
// }
|
||||
//
|
||||
// public void setAnmeldeEnde(String anmeldeEnde) throws ParseException {
|
||||
// this.anmeldeEnde= formatter.parse(anmeldeEnde);
|
||||
// }
|
||||
|
||||
public abstract double getJahresgebühr();
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package domain.Benutzer;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class Kunde extends Benutzer {
|
||||
|
||||
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||
|
|
|
@ -8,10 +8,11 @@ public class Mitarbeiter extends Benutzer {
|
|||
|
||||
@Override
|
||||
public double getJahresgebühr() {
|
||||
|
||||
return 50.0;
|
||||
}
|
||||
|
||||
public void gebührVerbuchen(Benutzer benutzer) {
|
||||
benutzer.setGebühren(getGebühren() * 0);
|
||||
benutzer.setGebühren(0.0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,26 +1,11 @@
|
|||
package domain.fassade;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
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 java.util.*;
|
||||
import domain.AusleiheSystem.*;
|
||||
import domain.Benutzer.*;
|
||||
import domain.Bibliothekskatalog.Mediensuchen;
|
||||
import domain.ExceptionsKlassen.*;
|
||||
import domain.Medium.Brettspiel;
|
||||
import domain.Medium.Buch;
|
||||
import domain.Medium.Medium;
|
||||
import domain.Medium.Mediumverwalter;
|
||||
import domain.Medium.Videospiel;
|
||||
import domain.Medium.*;
|
||||
import domain.UserRegistieren.Registieren;
|
||||
|
||||
public class BibSystem {
|
||||
|
@ -28,8 +13,7 @@ public class BibSystem {
|
|||
private HashMap<String, Mediumverwalter> medien;
|
||||
private ArrayList<Ausleihe> ausleihe;
|
||||
private AusleiheSystem ausleiheSystem;
|
||||
private Date heutigesDatum;
|
||||
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
|
||||
private Benutzer bibAdmin;
|
||||
|
||||
private Benutzer temp;
|
||||
|
||||
|
@ -38,11 +22,31 @@ public class BibSystem {
|
|||
this.alleBibBenutzer = new ArrayList<>();
|
||||
this.medien = new HashMap<>();
|
||||
this.ausleiheSystem = new AusleiheSystem(medien);
|
||||
this.heutigesDatum = new Date();
|
||||
this.ausleihe = new ArrayList<>();
|
||||
bibAdmin = new Mitarbeiter(new Ausweis("A"),"XY Müller",20,false);
|
||||
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) {
|
||||
Ausleihe ausgelieheneMedium = ausleihe.stream()
|
||||
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
|
||||
|
@ -51,7 +55,7 @@ public class BibSystem {
|
|||
ArrayList<String> ausgeliehenMedien = new ArrayList<>();
|
||||
|
||||
if (ausgelieheneMedium != null) {
|
||||
ausgelieheneMedium.getBenutzer().removeMedium(ausgelieheneMedium);
|
||||
ausgelieheneMedium.getBenutzer().mediumZurückgeben(ausgelieheneMedium);
|
||||
ausleihe.remove(ausgelieheneMedium);
|
||||
ausgelieheneMedium.getMediumverwalter().setIstAusgeliehen(false);
|
||||
ausgelieheneMedium.getMediumverwalter().setAnzahl(ausgelieheneMedium.getMediumverwalter().getAnzahl() + 1);
|
||||
|
@ -98,7 +102,7 @@ public class BibSystem {
|
|||
|
||||
public boolean userAnmdelden(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||
Benutzer bibBenutzer = findeBenutzer(bibKartenNummer);
|
||||
bibBenutzer.setAngemeldet(true);
|
||||
bibBenutzer.anmelden(true);
|
||||
return bibBenutzer.isAngemeldet();
|
||||
}
|
||||
|
||||
|
@ -118,15 +122,6 @@ public class BibSystem {
|
|||
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
|
||||
private void mediumsAufladen() {
|
||||
Mediumverwalter buch = new Mediumverwalter(true, 10, 4,
|
||||
|
@ -153,7 +148,8 @@ public class BibSystem {
|
|||
|
||||
private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||
return alleBibBenutzer.stream()
|
||||
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
|
||||
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new BenutzerNichtGefundenException(
|
||||
"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;
|
||||
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||
|
@ -9,7 +11,15 @@ import tui.Tui;
|
|||
public class Main {
|
||||
|
||||
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