phlobbi / prog3

Repository für die Projektarbeit
1 stars 1 forks source link

[BUG] Buchungen über das UI können nicht am gleichen Tag beginnen und enden #102

Closed phlobbi closed 1 year ago

phlobbi commented 1 year ago

Gibt es schon ein Issue dafür?

Aktuelles Verhalten

Wird eine Buchung über die Erstellungs-Methode im UI (wird mit #96 gemerged) erstellt, kann eine Buchung, die am gleichen Tag beginnt und endet, nicht abgeschlossen werden.

Erwartetes Verhalten

Eine solche Buchung müsste möglich sein.

Schritte zum Reproduzieren

  1. Starte das Programm
  2. Klicke auf Buchungsverwaltung
  3. Klicke auf Auto buchen
  4. Fülle Abholdatum und Rückgabedatum mit gleichem Tag aus (muss der heutige Tag sein)
  5. Wähle gültige Autodaten aus (ID 1 sollte mit der aktuellen DB klappen)
  6. Wähle gültige Kundendaten aus (ID 2 sollte mit der aktuellen DB klappen)
  7. Klicke auf Speichern

Noch was?

Aufgrund der Fehlermeldung führt dies auf die Methode validatePickUpDateBeforeDropOffDate() in BookingValidation zurück. Bei einem primitiven Fix, der auch das gleiche Datum erlaubt, kam es aber ebenfalls zu Fehlern.

phlobbi commented 1 year ago

Tipp für den, der das übernehmen will: Der Debugger ist hier äußerst hilfreich. Verwendet Breakpoints, die Ausdrucksauswertung, usw. Im Learn Bereich von IntelliJ stehen auch noch paar hilfreiche Sachen drin und wie man sie benutzt.

FriendlyDiamond commented 1 year ago

Ich schaus mir mal an, vielleicht finde ich was

FriendlyDiamond commented 1 year ago

Der Fehler liegt definitiv in der validatePickUpDateBeforeDropOffDate.

Macht es Sinn, wenn wir Buchungsdaten um Uhrzeiten erweitern? Damit könnten die am gleichen Tag sein und !pickUpDate.before(DropOffDate) betrachtet die Uhrzeiten mit. Für Auto wäre das irrelevant, Erstellungsdatum braucht keine Uhrzeit, aber für die Buchung wäre das unter Umständen sinnvoll.

Ich hab nämlich so ein wenig das Gefühl, dass ich mir das Genick breche, wenn ich jetzt versuche alle Fälle abzudecken, als wenn wir einfach neue Methoden, die die Zeit betrachten, einführen, sowie das UI von Booking um Uhrzeiten erweitern.

phlobbi commented 1 year ago

Ich glaube mittlerweile auch dass das so ziemlich die einfachste Möglichkeit wäre, wenn wir Uhrzeiten erlauben. Wieviel Aufwand würde das denn sein, das im UI und co. anzupassen?

FriendlyDiamond commented 1 year ago

Boah, gute Frage, es wirkt glaube ich mehr als es ist.

Booking selbst dürfe AFAIK unberührt bleiben, da sollte nichts schiefgehen, denn es wird alles in Calendar gespeichert..

Ich würd behaupten unter den Voraussetzungen bin ich locker den Rest des Tages mit beschäftigt, vielleicht morgen noch, ich kann so Null einschätzen, wie lange mich Fehler aufhalten und ob überhaupt welche passieren

FriendlyDiamond commented 1 year ago

Ich glaub es läuft jetzt relativ stabil, ich muss mir nur noch ein paar deiner Testfälle anschauen @phlobbi, da failen momentan 3 von 35

FriendlyDiamond commented 1 year ago

Update, nur noch 2

https://www.youtube.com/watch?v=r5sTTlph2Vk

phlobbi commented 1 year ago

So hab ich mich neulich auch gefühlt beim fixen von Tests 🥲

FriendlyDiamond commented 1 year ago

Bei einem konnt ich noch easy den Fehler finden, da war newPickUpDate = Calendar.getInstance() und newPickUpDate.add(Calendar.DAY_OF_THE_YEAR, -2), das führt zu nem Fehler, weil damit das Abholdatum in der Vergangenheit liegt, da musste ich also den Test ändern

phlobbi commented 1 year ago

Welcher schlägt im Moment noch fehl?

FriendlyDiamond commented 1 year ago

testCalculateFinalPriceWithTwoDaysDelay liefert statt 320 einen Wert von 260, da fuchse ich mich grad in die Rechnung rein

FriendlyDiamond commented 1 year ago

Ich glaub du brauchst für den Final Price nicht noch einen Tag von den lateDays abzuziehen, das sollte stimmen, weil in dem Statement kommen an: calculatedFinalPrice = 200, newPreisPerDay = 60, lateDays = 2... Damit kämst du auf die 320 die du willst, aber da du noch einen Tag abziehst bleiben 260

Ist sowieso egal, jetzt ist ne andere Preisberechnung falsch

phlobbi commented 1 year ago

Schade dass er hier noch bisschen auf sich warten lässt: https://github.com/features/preview/copilot-x

FriendlyDiamond commented 1 year ago

Also ich mach jetzt einen auf Frankreich, ich wehe mit der weißen Fahne. Ich hab keine Ahnung warum calculateDaysBetween bei 1 und 2 Tagen Unterschied beides mal 1 liefert

phlobbi commented 1 year ago

Das hat mich auch schon echt fertig gemacht. Stell mal deinen funktionierenden Fortschritt online, ich schau dann mal gleich rein.

FriendlyDiamond commented 1 year ago

Ich habs mal gepusht, ich hab an den Methoden noch ein klein wenig rumgespielt (also bei der einen +1, bei der anderen -1), aber die Änderungen siehst du ja

FriendlyDiamond commented 1 year ago

Die Fehlermethode ist angepasst, ich hab jetzt eine ganz neue Berechnung für calculateDaysBetween selbst geschrieben, der einzige Struggle ist noch, wenn ein Kunde ein Auto am Jahresende abgeben sollte, aber das realDropOffDate im Neujahr ist