Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Timeframe "Geblockt" mit stündlichem Raster blockiert ganzen Tag #1553

Open
hansmorb opened this issue Mar 12, 2024 · 0 comments
Open

Timeframe "Geblockt" mit stündlichem Raster blockiert ganzen Tag #1553

hansmorb opened this issue Mar 12, 2024 · 0 comments
Assignees
Labels
bug Something isn't working question Further information is requested

Comments

@hansmorb
Copy link
Contributor

hansmorb commented Mar 12, 2024

Describe the bug
Ein Zeitrahmen mit der Einstellung "Blocked (not overbookable)" kann keine Einschränkung für einen stündlichen Zeitrahmen vornehmen, ohne den gesamten Tag zu blockieren.

To Reproduce

  1. Artikel mit stündlichem Raster einstellen (zb. von 08:00 -> 18:00 Wiederholung Täglich Ohne Enddatum)
  2. Zeitrahmen vom Typ "Geblockt" erstellen der nur ein paar Stunden dieses Tages umfasst. Der Zeitrahmen muss dafür ein Enddatum haben, die Wiederholung ist egal. (zb. von 08:00->10:00 wiederholung täglich start- und Enddatum der gleiche Tag)
  3. Kalender aufrufen -> Gesamter Tag ist geblockt statt nur ein paar Stunden

Workaround
Für kurze Blocker kann auch einfach eine Nutzungseinschränkung erstellt werden. Ansonsten funktioniert das Feature wie erwartet bei Zeitrahmen OHNE Enddatum, wenn das eine Option ist, dann einfach das Enddatum weglassen.

Expected behavior
Es sollten nur die wenigen Stunden blockiert werden (zb. nur von 08:00 - 10:00) und für die Restzeit sollte der Artikel buchbar sein.

Extra
Das gilt wahrscheinlich auch für Holiday Zeitrahmen (nicht getestet).

Analyse
Das Problem scheint in der Day::getEndSlot Methode zu liegen. Diese gibt für den Repair Zeitrahmen aus diesem Beispiel fälschlicherweise einen Endslot von 24 zurück, das heißt dieser umfasst dann den ganzen Tag. Erwartetes Ergebnis wäre 10, der Slot der 10:00 entspricht. Dafür verantwortlich ist folgender Codeblock:

https://github.com/wielebenwir/commonsbooking/blob/af6c19a6f075e0652637efe51140feac2ae3f08b/src/Model/Day.php#L266C3-L272C4

In diesem Codeblock wird aus einem mir unbekannten Grund definiert, dass Zeitrahmen die nicht überbuchbar sind immer bis zum Ende des Tages gültig sind. Dies ergibt nicht sonderlich viel Sinn, da es ja die Einstellung "partially Booked" gibt und die, wenn sie richtig gesetzt ist, auch die Überbuchung über solche "partially booked" Zeitrahmen nicht zulässt.

"Timeframe ends after the current day" ist meiner Meinung nach etwas missverständlich formuliert, das bedeutet nur, dass der Zeitrahmen noch länger geht als Heute, 23:59. Darüber hinaus ist auch diese Codezeile fehlerhaft, wenn man prüfen will ob der letzte Tag des Zeitrahmens erreicht ist muss man den Abgleich mit 23:59:59 machen und nicht nur 23:59

strtotime( $this->getFormattedDate( 'd.m.Y 23:59' ) => strtotime( $this->getFormattedDate( 'd.m.Y 23:59:59' )

. Wenn das geändert wurde war es auf einmal auch möglich einen Zeitrahmen nur für das heutige Datum zu erstellen ,der auch korrekt nur den halben Tag blockiert. Für Tage in der Zukunft geht das aber immer noch nicht.

Dieser Codeblock erklärt auch, warum der Fehler nicht für unbeschränkte Zeitrahmen gilt, da für diese kein Enddatum abgerufen werden kann , kann auch kein Check durchgeführt werden ob diese am heutigen Tag enden. Es wurde durch einen PR von @chriwen die Verlängerung des Slots auf den ganzen Tag ausgenommen, damit kein Fatal Error beim Prüfen auf das Enddatum entsteht.

Frage

Ohne die ursprüngliche Idee dahinter warum nicht überbuchbare Zeitrahmen IMMER einen ganzen Tag (alle Slots) umfassen sollen komme ich hier nicht weiter.

@hansmorb hansmorb added bug Something isn't working triage and removed triage labels Mar 12, 2024
@hansmorb hansmorb assigned hansmorb and chriwen and unassigned hansmorb Mar 12, 2024
@hansmorb hansmorb added the question Further information is requested label Mar 12, 2024
@hansmorb hansmorb added this to the 2.9.3 milestone Apr 26, 2024
@hansmorb hansmorb removed this from the 2.9.3 milestone May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working question Further information is requested
Projects
Status: In progress
Development

No branches or pull requests

2 participants