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

Buchungsregeln #1161

Merged
merged 195 commits into from
Feb 22, 2024
Merged

Buchungsregeln #1161

merged 195 commits into from
Feb 22, 2024

Conversation

hansmorb
Copy link
Contributor

@hansmorb hansmorb commented Dec 27, 2022

Wie

  • Es werden keine Daten im Kalender bearbeitet sondern die Buchung wird zur Laufzeit abgebrochen. So können wir einen generischen Cache für alle Nutzenden behalten.

Da ich Veränderungen am Autoload gemacht habe, muss composer dump-autoload ausgeführt werden, bevor der Branch verwendet werden kann.

Dieser PR fügt Regeln hinzu, mit denen die Buchung eingeschränkt werden kann.

Überlegung für diesen Branch:

  • Nutzenden nur eine "unconfirmed" Buchung gleichzeitig erlauben damit nicht ein Haufen von unbestätigten Buchungen erzeugt werden kann um die Buchungsregeln zu umgehen. Wenn zB. ein Nutzender einen nur 1 Tag pro Monat buchen kann könnte dieser einfach mehrere unbestätigte Buchungen für den gleichen Monat erzeugen und diese dann nacheinander bestätigen. Eine Buchungsprüfung wird nur bei Erstellung einer unbestätigten Buchung durchgeführt. Das ist eine Komfortfunktion, damit Nutzende nicht die ganze Buchungsstrecke durchspielen müssen nur um zu erfahren, dass die Buchung nicht möglich ist.
  • Überbuchte Tage irgendwie handeln, vielleicht durch Info der Überbuchung im Buchung Post und das dann bei Regelevaluierung berücksichtigen
  • Template bearbeiten, sd. Fehlermeldung oben auf der Seite steht und nicht erst hinter dem ganzen Post content, Screenshot zur Demonstration:
    image

Dokumentation:
https://commonsbooking.org/wp-admin/post.php?post=2157&action=edit (WIP)

@hansmorb hansmorb marked this pull request as draft December 28, 2022 14:12
@hansmorb hansmorb changed the title Feature/issue 697 2 Buchungsregeln Dec 29, 2022
@hansmorb hansmorb added the enhancement New feature or request label Dec 29, 2022
@hansmorb hansmorb linked an issue Jan 4, 2023 that may be closed by this pull request
@hansmorb hansmorb requested a review from datengraben February 8, 2024 17:02
@datengraben
Copy link
Contributor

datengraben commented Feb 12, 2024

@hansmorb ich schaue mir den PR am Wochenende final an.

Für mich nur als Merker, bisher verbleibende TODOs:

  • Den neuen Filter-Hook aus dem PR mit Schnittstelle und Nutzung einmal auf der Buchungsregel-Seite und auf der Filter-Hook-Seite dokumentieren
  • Feedback von Erstellern der originalen Issues einholen

@hansmorb
Copy link
Contributor Author

hansmorb commented Feb 13, 2024

Ich habe eher schon überlegt diesen Hook rauszunehmen, als ich ein Beispiel dafür erstellen wollte ist mir nichts eingefallen, was nicht mit tiefem Verständnis von CB implementiert werden kann ergo auch nur von uns implementiert werden kann. Also wenn dann müssten sehr genau auch die Helpermethoden dokumentiert werden oder wir nehmen den Hook raus.

  • Feedback von Erstellern der originalen Issues einholen

Zum 2.: Die verlinkte Issue ist nur lose damit verbunden, eigentliche Anforderung kam von der flotte Berlin.

Copy link
Contributor

@datengraben datengraben left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nur kleinere Änderungen und Fragen, nichts wildes.

src/Model/Booking.php Outdated Show resolved Hide resolved
src/Model/Booking.php Show resolved Hide resolved
src/Model/Booking.php Outdated Show resolved Hide resolved
src/Model/Booking.php Outdated Show resolved Hide resolved
src/Model/Booking.php Show resolved Hide resolved
src/Wordpress/CustomPostType/Booking.php Show resolved Hide resolved
src/Wordpress/CustomPostType/Item.php Show resolved Hide resolved
templates/timeframe-calendar.php Show resolved Hide resolved
composer.json Show resolved Hide resolved
@datengraben
Copy link
Contributor

@hansmorb

Ich habe eher schon überlegt diesen Hook rauszunehmen, als ich ein Beispiel dafür erstellen wollte ist mir nichts eingefallen, was nicht mit tiefem Verständnis von CB implementiert werden kann ergo auch nur von uns implementiert werden kann.

Ich finde diese Schnittstelle (Buchungsregeln) einen guten Kandidat um Arbeit/Code aus dem Core herauszuhalten. Das Thema kam ja schon vermehrt auf.

Vorteile wären:

  1. Gibt es ja einige Menschen mit Coding-Skills in den Instanzen, welche zwar nicht unbedingt direkt am Core mitarbeiten wollen/können, aber ich denke in der Lage wären eine Buchungsregel selber zu schreiben.
  2. Instanzen können ihre Buchungsregeln miteinander teilen. Die Flotte hat für CB1 ja schon einiges an custom-Plugins erstellt das nachgefragt wird.

Beispiele für Nicht-Core-Buchungsregeln wären zum Beispiel:

  • Wenn benutzerdefinierte Meta-Werte an Post-Objekten genutzt werden die nicht im Core sind und relevant für den Buchungsprozess der Instanz sind.
    • Eine Instanz hat an bestimmte Items ein Meta-Feld gehangen um bei z.B. Fehlverhalten o.A. zu markieren, welche Items von Usern nicht mehr ausgeliehen werden dürfen. Vorstellbar finde ich hier auch etwas wie einen "Führerschein" für ein Item, welcher dann auch z.B. in einem Meta-Wert abgelegt wird.
    • Oder ob User eine Anmeldung über eine auf dieser Instanz eingerichteten 2FA aktiviert haben.

Also wenn dann müssten sehr genau auch die Helpermethoden dokumentiert werden oder wir nehmen den Hook raus.

Welche Helpermethoden meinst du genau?

Zum 2.: Die verlinkte Issue ist nur lose damit verbunden, eigentliche Anforderung kam von der flotte Berlin.

Ok.

@datengraben
Copy link
Contributor

  • Nutzenden nur eine "unconfirmed" Buchung gleichzeitig erlauben damit nicht ein Haufen von unbestätigten Buchungen erzeugt werden kann um die Buchungsregeln zu umgehen. Wenn zB. ein Nutzender einen nur 1 Tag pro Monat buchen kann könnte dieser einfach mehrere unbestätigte Buchungen für den gleichen Monat erzeugen und diese dann nacheinander bestätigen. Eine Buchungsprüfung wird nur bei Erstellung einer unbestätigten Buchung durchgeführt. Das ist eine Komfortfunktion, damit Nutzende nicht die ganze Buchungsstrecke durchspielen müssen nur um zu erfahren, dass die Buchung nicht möglich ist.

@hansmorb Das in einen eigenes Issue auslagern?

@hansmorb hansmorb merged commit 4ab4a31 into master Feb 22, 2024
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request php Pull requests that update Php code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Einschränkung Heavy-User Funktion integriert Buchung vorzeitig beenden (als Admin bzw. StationsbetreuerIn)
2 participants