borrowMedium korrigiert
parent
92903b93eb
commit
b63eb3805d
|
|
@ -8,111 +8,142 @@ import DomainLayer.User;
|
||||||
public class BorrowService {
|
public class BorrowService {
|
||||||
private LocalDate currentDate = LocalDate.now();
|
private LocalDate currentDate = LocalDate.now();
|
||||||
private LibraryService libraryService;
|
private LibraryService libraryService;
|
||||||
|
|
||||||
|
// Getter für das aktuelle Datum
|
||||||
public LocalDate getCurrentDate() {
|
public LocalDate getCurrentDate() {
|
||||||
return currentDate;
|
return currentDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String showOutstandingFees(User user) {
|
||||||
|
// Stelle sicher, dass der Benutzer ausstehende Gebühren hat
|
||||||
|
if (user != null) {
|
||||||
|
return "Ausstehende Gebühren für " + user.getName() + ": " + user.getOutstandingFees() + "€.";
|
||||||
|
} else {
|
||||||
|
return "Benutzer nicht gefunden.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Beispielmethode, die jetzt mit einer initialisierten LibraryService-Instanz
|
||||||
|
// arbeitet
|
||||||
public void setCurrentDate(LocalDate newDate) {
|
public void setCurrentDate(LocalDate newDate) {
|
||||||
this.currentDate = newDate;
|
this.currentDate = newDate;
|
||||||
|
|
||||||
// Überprüfen, ob ausgeliehene Medien ein korrektes Ausleihdatum haben
|
// Stelle sicher, dass libraryService nicht null ist, bevor du darauf zugreifst
|
||||||
for (Medium medium : libraryService.getAllMedia()) {
|
if (libraryService != null) {
|
||||||
if (medium.isBorrowed() && medium.getBorrowDate() == null) {
|
for (Medium medium : libraryService.getAllMedia()) {
|
||||||
medium.setBorrowDate(newDate); // Setze das aktuelle Datum als Ausleihdatum
|
if (medium.isBorrowed() && medium.getBorrowDate() == null) {
|
||||||
System.out.println("Warnung: Ausleihdatum für Medium '" + medium.getTitle()
|
medium.setBorrowDate(newDate); // Setze das Ausleihdatum
|
||||||
+ "' war null und wurde auf " + newDate + " gesetzt.");
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("Datum erfolgreich geändert: " + this.currentDate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renewMedium(User user, Medium medium, LocalDate newBorrowDate) {
|
// Verlängern eines Mediums
|
||||||
|
public String renewMedium(User user, Medium medium, LocalDate newBorrowDate) {
|
||||||
|
// Überprüfen, ob das Medium ausgeliehen ist
|
||||||
if (!medium.isBorrowed()) {
|
if (!medium.isBorrowed()) {
|
||||||
System.out.println("Das Medium wurde nicht ausgeliehen und kann daher nicht verlängert werden.");
|
return "Das Medium wurde nicht ausgeliehen.";
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wenn das neue Ausleihdatum gesetzt ist, verwenden wir dieses Datum, ansonsten das aktuelle Datum
|
// Überprüfen, ob der Benutzer das Medium ausgeliehen hat
|
||||||
if (newBorrowDate != null) {
|
if (!user.getBorrowedMedia().contains(medium)) {
|
||||||
medium.setBorrowDate(newBorrowDate); // Ausleihdatum auf das neue Datum setzen
|
return "Dieses Medium wurde nicht von Ihnen ausgeliehen und kann daher nicht verlängert werden.";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wenn das Medium keine Verlängerung erlaubt, breche ab
|
// Überprüfen, ob das Medium verlängerbar ist
|
||||||
if (!medium.isRenewable()) {
|
if (!medium.isRenewable()) {
|
||||||
System.out.println("Das Medium kann nicht verlängert werden.");
|
return "Das Medium kann nicht verlängert werden.";
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wenn die maximale Anzahl an Verlängerungen erreicht wurde
|
// Überprüfen, ob die maximale Anzahl an Verlängerungen erreicht wurde
|
||||||
if (medium.getRenewals() >= medium.getMaxRenewals()) {
|
if (medium.getRenewals() >= medium.getMaxRenewals()) {
|
||||||
System.out.println("Maximale Anzahl an Verlängerungen erreicht.");
|
return "Die maximale Anzahl an Verlängerungen wurde bereits erreicht.";
|
||||||
return;
|
}
|
||||||
|
|
||||||
|
// Optional: Ausleihdatum aktualisieren
|
||||||
|
if (newBorrowDate != null) {
|
||||||
|
medium.setBorrowDate(newBorrowDate); // Setze das neue Ausleihdatum
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verlängerung durchführen
|
// Verlängerung durchführen
|
||||||
medium.increaseRenewals();
|
medium.increaseRenewals();
|
||||||
medium.setDueDate(medium.getDueDate().plusDays(medium.getBorrowPeriod())); // Rückgabedatum basierend auf der Leihfrist anpassen
|
medium.setDueDate(medium.getDueDate().plusDays(medium.getBorrowPeriod())); // Rückgabedatum basierend auf der Leihfrist verlängern
|
||||||
System.out.println("Verlängerung erfolgreich. Neue Rückgabefrist: " + medium.getDueDate());
|
|
||||||
|
return "Verlängerung erfolgreich. Neue Rückgabefrist: " + medium.getDueDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void borrowMedium(User user, Medium medium) {
|
|
||||||
if (medium.isBorrowed()) {
|
|
||||||
System.out.println("Das Medium ist bereits ausgeliehen.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verwende das aktuelle Datum als Ausleihdatum
|
|
||||||
LocalDate borrowDate = currentDate;
|
|
||||||
|
|
||||||
medium.setBorrowed(true);
|
// Ausleihen eines Mediums
|
||||||
medium.setBorrowDate(borrowDate); // Setze das aktuelle Datum als Ausleihdatum
|
public String borrowMedium(User user, Medium medium) {
|
||||||
medium.setDueDate(borrowDate.plusDays(medium.getBorrowPeriod())); // Berechne Rückgabedatum
|
if (medium.isBorrowed()) {
|
||||||
user.borrowMedium(medium);
|
return "Das Medium ist bereits ausgeliehen.";
|
||||||
|
}
|
||||||
|
|
||||||
System.out.println("Ausleihe erfolgreich. "
|
LocalDate borrowDate = LocalDate.now(); // Setze das aktuelle Datum als Ausleihdatum
|
||||||
+ medium.getDueDate());
|
medium.setBorrowDate(borrowDate); // Setze das Ausleihdatum und berechne das Fälligkeitsdatum
|
||||||
|
|
||||||
|
user.borrowMedium(medium); // Füge das Medium zur Liste der ausgeliehenen Medien des Benutzers hinzu
|
||||||
|
medium.setBorrowed(true); // Markiere das Medium als ausgeliehen
|
||||||
|
|
||||||
|
return "Ausleihe erfolgreich. Fällig am: " + medium.getDueDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void returnMedium(User user, Medium medium) {
|
|
||||||
if (!medium.isBorrowed()) {
|
|
||||||
System.out.println("Das Medium wurde nicht ausgeliehen.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Berechnung der Gebühren
|
|
||||||
LocalDate dueDate = medium.getDueDate();
|
|
||||||
if (dueDate != null && currentDate.isAfter(dueDate)) {
|
|
||||||
long overdueDays = java.time.temporal.ChronoUnit.DAYS.between(dueDate, currentDate);
|
|
||||||
double fee;
|
|
||||||
if (overdueDays > 7) {
|
|
||||||
fee = 7 * 1 + (overdueDays - 7) * 2;
|
|
||||||
} else {
|
|
||||||
fee = overdueDays * 1;
|
|
||||||
}
|
|
||||||
user.addFee(fee);
|
|
||||||
System.out.println("Überfällige Gebühr: " + fee + "€.");
|
|
||||||
}
|
|
||||||
|
|
||||||
medium.setBorrowed(false);
|
// Rückgabe eines Mediums
|
||||||
medium.resetRenewals();
|
public String returnMedium(User user, Medium medium) {
|
||||||
medium.setDueDate(null); // Rückgabedatum zurücksetzen, Ausleihdatum bleibt unverändert
|
// Überprüfen, ob das Medium ausgeliehen ist
|
||||||
user.returnMedium(medium);
|
if (!medium.isBorrowed()) {
|
||||||
|
return "Das Medium wurde nicht ausgeliehen.";
|
||||||
|
}
|
||||||
|
|
||||||
System.out.println("Rückgabe erfolgreich.");
|
// Überprüfen, ob der Benutzer das Medium ausgeliehen hat
|
||||||
System.out.println("Noch ausgeliehene Medien:");
|
if (!user.getBorrowedMedia().contains(medium)) {
|
||||||
for (Medium m : user.getBorrowedMedia()) {
|
return "Dieses Medium wurde nicht von Ihnen ausgeliehen und kann daher nicht zurückgegeben werden.";
|
||||||
System.out.println("- " + m.getTitle() + " (Fällig am: " + m.getDueDate() + ")");
|
}
|
||||||
}
|
|
||||||
|
StringBuilder result = new StringBuilder(); // StringBuilder für die Rückgabewerte
|
||||||
|
result.append("Zurückgegebenes Medium: ").append(medium.getTitle()).append("\n");
|
||||||
|
|
||||||
|
// Berechnung der Gebühren
|
||||||
|
LocalDate dueDate = medium.getDueDate();
|
||||||
|
if (dueDate != null && currentDate.isAfter(dueDate)) {
|
||||||
|
long overdueDays = java.time.temporal.ChronoUnit.DAYS.between(dueDate, currentDate);
|
||||||
|
double fee;
|
||||||
|
if (overdueDays > 7) {
|
||||||
|
fee = 7 * 1 + (overdueDays - 7) * 2;
|
||||||
|
} else {
|
||||||
|
fee = overdueDays * 1;
|
||||||
|
}
|
||||||
|
user.addFee(fee);
|
||||||
|
result.append("Überfällige Gebühr: ").append(fee).append("€.\n");
|
||||||
|
} else {
|
||||||
|
result.append("Keine Gebühren angefallen.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aktualisierung des Mediums und des Benutzers
|
||||||
|
medium.setBorrowed(false); // Medium ist nicht mehr ausgeliehen
|
||||||
|
medium.resetRenewals(); // Anzahl der Verlängerungen zurücksetzen
|
||||||
|
medium.setDueDate(null); // Fälligkeitsdatum entfernen
|
||||||
|
user.returnMedium(medium); // Entferne das Medium aus der Liste des Benutzers
|
||||||
|
|
||||||
|
// Anzeigen der verbleibenden ausgeliehenen Medien
|
||||||
|
if (user.getBorrowedMedia().isEmpty()) {
|
||||||
|
result.append("Keine weiteren Medien ausgeliehen.");
|
||||||
|
} else {
|
||||||
|
result.append("Noch ausgeliehene Medien:\n");
|
||||||
|
for (Medium m : user.getBorrowedMedia()) {
|
||||||
|
result.append("- ").append(m.getTitle()).append(" (Fällig am: ").append(m.getDueDate()).append(")\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showOutstandingFees(User user) {
|
|
||||||
System.out.println("Ausstehende Gebühren für " + user.getName() + ": " + user.getOutstandingFees() + "€.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleAdminPayment(User user, double amount) {
|
|
||||||
user.payFees(amount);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue