package LibrarySystem.domain.benutzern; import LibrarySystem.domain.medien.*; import java.util.*; public abstract class Benutzer { private String kartennummer; private String name; private int alter; private List ausleihen; private double offeneGebuehren; Benutzer(String kartennummer, String name, int alter, String prefix) { this.kartennummer = prefix + kartennummer; this.name = name; this.alter = alter; this.ausleihen = new ArrayList<>(); this.offeneGebuehren = 0.0; } //Getter und Setter public String getKartennummer() {return kartennummer;} public void setKartennummer(String kartennummer) {this.kartennummer = kartennummer;} public String getName() {return name;} public void setName(String name) {this.name = name;} public int getAlter() {return alter;} public void setAlter(int alter) {this.alter = alter;} public List getAusleihen() {return ausleihen;} public double getOffeneGebuehren() {return offeneGebuehren;} // Abstrakte Methode für die Jahresgebühr public abstract double getJahresgebuehr(); //Methode fürs Ausleihen public void ausleihen(Medium medium) { if(!medium.istAusgeliehen()){ ausleihen.add(medium); medium.ausleihen(); //System.out.println(name + " hat \"" + medium.getTitel() + "\" ausgeliehen. Rückgabefrist: " + medium.getRueckgabedatum()); } else{ System.out.println("Das Medium ist bereits ausgeliehen."); } } //Methode für die Rückgabe public void rueckgabe(Medium medium) { if(ausleihen.contains(medium)){ ausleihen.remove(medium); medium.rueckgabeMedium(); } else{ System.out.println("Dieses Medium von diesem Benutzer nicht ausgeliehen."); } } //Methode zum Anzeigen der Ausleihen eines Benutzers public void anzeigenAusleihen() { if(ausleihen.isEmpty()){ System.out.println("Keine ausgeliehenen Medien."); }else { System.out.println("Aktuell ausgeliehene Medien von " + name + ":\n"); for (Medium medium : ausleihen) { System.out.println("- " + medium.getTitel() + " (Fällig am: " + medium.getRueckgabedatum() + ")\n"); } } } //Methode zum Addieren der Gebühren zu den offenen Gebühren public void addiereZuOffeneGebuehren(double gebuehren){ this.offeneGebuehren+= gebuehren; } //Methode für den Admin, um nach eine erfolgreiche Bezahlung das Konto auf 0 zu setzen public void bezahleGebuehren() { offeneGebuehren = 0.0; } /*public void aktualisiereGebuehren(Date aktuellesDatum) { if (gebuehrenBezahlt) return; // Keine Aktualisierung erforderlich, wenn bezahlt offeneGebuehren = 0.0; for (Medium ausleihe : ausleihen) { offeneGebuehren += ausleihe.berechneGebuehren(aktuellesDatum); } }*/ @Override public String toString() { return "Name: " + name + ", Alter: " + alter + ", Kartennummer: " + kartennummer; } }