tkrebs / ep3-bs

Online booking system for courts
http://bs.hbsys.de/
MIT License
180 stars 108 forks source link

Platzhalter bei Buchungen hinzufügen #608

Open michelvaclav opened 1 year ago

michelvaclav commented 1 year ago

Hallo, ich habe zwei Platzhalter angelegt (Gast bzw. Ballmaschine), die bei Buchungen ausgewählt werden können sollten. In der Benutzerverwaltung sind diese als Benutzer mit Status Platzhalter angelegt. Ausgefüllt ist nur das Feld "Alias". Für die Reservierung ist eingestellt "Nach den Namen der anderen Spieler fragen (verpflichtend)".

Wenn nun ein registrierter Benutzer eine Reservierung vornehmen will und als Partner "Gast" eingibt, so erhält er die Fehlermeldung:

Die vollständigen Vor- und Nachnamen der anderen Spieler sind erforderlich ... Exception details ... Type ... RuntimeException ... Mitteilung ... Die vollständigen Vor- und Nachnamen der anderen Spieler sind erforderlich

Wie macht man es richtig, so dass der Benutzer nur "Gast" oder "Ballmaschine" als Spielpartner eingeben muss?

Danke

cbits68 commented 1 year ago

Das Eine hat mit dem anderen nichts zu tun! Wenn Du Platzhalter anlegst, können auf diese Benutzer direkt Plätze (über die Verwaltung) gebucht werden. Im Kalender erscheint dann als Buchende Person Gast oder Ballmaschine.

Wenn Mitspielende bei der Buchung angegeben werden müssen, dann ist das letztendlich nur ein Textfeld und hat nichts mit den im System angelegten Benutzern zu tun. Du kannst da "Angela Merkel" rein schreiben obwohl es keinen solchen Benutzer im System gibt. Dies ist nur zu Dokumentationszwecken während Corona eingerichtet worden, damit die Spielenden sich nicht in einer Liste vorort eintragen müssen. Aber auch da hätten Sie ja Angele Merkel rein schreiben können ;-)

Das Gast oder Ballmaschine nicht als Mitspielende akzeptiert werden liegt einfach nur daran, das das System Vor- und Nachnamen erwartet und somit eine Prüfung durchführt ob ein Buchstabenkombination mit Leerzeichen dazischen eingegeben wurde., was ja weder bei Gast noch bei Ballmaschine der Fall ist und somit kommt die Fehelrmeldung.

Gruß Andreas

michelvaclav commented 1 year ago

Danke für die Erläuterung. Wenn es eh keine Prüfung auf registrierte Mitglieder gibt, wäre es dann nicht sinnvoller, auch auf die Prüfung der Schreibweise "Vorname Nachname" zu verzichten? Ich beschäftige mich seit gestern mit dem ansonsten tollen Buchungssystem und versuche eine Möglichkeit zu finden, wie wir später (gerne auch auf der Datenbank selbst) die Anzahl der Gastspieler bzw. die Häufigkeit der Ballmaschinennutzung auswerten können. Oder auch, welcher Nutzer wie oft auf dem Platz war. Das geht natürlich nicht, wenn die Mitspieler als Freitext angegeben werden können, denn da hat man ruckzuck verschiedene Schreibweisen etc. Macht aber nix, wir probieren es trotzdem. Endlich weg vom Vor-Ort-Buchen.

michel_vaclav

cbits68 commented 1 year ago

Gastbuchungen habe ich über ein Zusatzprodukt Gastspieler realisiert. Wenn ein Mitrglied mit einem Gast speielen möchte kostet das bei uns 10€. Das Gleiche könnte man natürlich auch mit einer Ballmaschine tun, wobei man leider im System dann noch nicht verhindern kann, dass diese parallel gebucht wird. Könnte man aber sicher irgendwie coden ...

Die Mitglieder können das Produkt Gastspieler bei der Buchung mit buchen und geben dort auch den Namen der Gastspieler an. Das kann man dann auch recht gut über das Backend auswerten, das diese Buchungen ja einen offenen Rechnungsbetrg >0€ haben. Gäste können bei uns selbst keine Plätze buchen. Gäste dürfen nur bei uns spielen, wenn ein Mitglied dabei ist und gebucht hat.

Die Prüfung auf Eingabe von Vor- und Nachnamen könntest Du natürlich im Code auch einfach auskommentieren, dann wäre auch die Eingabe eines Wortes möglich. Schreibfehler wie Gats oder Balmachiene werden dann natürlich auch nicht überprüft, was es bei einer Auswertung dann eher aufwändiger macht.

michelvaclav commented 1 year ago

Habs jetzt für mich erst einmal anders gelöst und in den Code eingegriffen: jetzt wird vor der Prüfung auf "Vorname Nachname" geprüft, ob der Mitspieler "Ballmaschine" oder "Gast" heißt. Falls ja, wird der Eintrag so genommen (mit ein paar Syntaxprüfungen). Nicht universell einsetzbar, aber es funktioniert.

Sahel2021 commented 1 year ago

Die Prüfung auf Eingabe von Vor- und Nachnamen könntest Du natürlich im Code auch einfach auskommentieren, dann wäre auch die Eingabe eines Wortes möglich.

Dies interessiert uns, weil wir die Ballmaschine als Mitspieler im Popup der Buchungsanzeige haben wollen.

Könntest du bitte sagen, wo genau die Prüfung auf Eingabe von Vor- und Nachnamen auskommentiert werden kann?

cbits68 commented 1 year ago

schau mal in issue #437 Dort ist auch der Verweis auf ep3-bs/module/Square/src/Square/Controller/BookingController.php

Line 138 in 139e216

michelvaclav commented 1 year ago

Dies interessiert uns, weil wir die Ballmaschine als Mitspieler im Popup der Buchungsanzeige haben wollen.

Könntest du bitte sagen, wo genau die Prüfung auf Eingabe von Vor- und Nachnamen auskommentiert werden kann?

/module/Square/src/Square/Controller/BookingController.php Zeilen 138ff ersetzen mit: foreach ($playerNames as $playerName) { if ( strtolower($playerName['value']) == 'gast' ) { } elseif ( strtolower($playerName['value']) == 'ballmaschine' ) { } elseif (strlen(trim($playerName['value'])) < 5 || strpos(trim($playerName['value']), ' ') === false) { throw new \RuntimeException('Die vollständigen Vor- und Nachnamen der anderen Spieler sind erforderlich'); } } } else { $playerNames = null; } Ich hab die alte Prüfung drin gelassen und prüfe primär auf den Platzhalter "gast" in diversen Schreibweisen, gefolgt von "ballmaschine" in diversen Schreibweisen und wenn keine der beiden Bedingungen erfüllt ist, dann die ursprüngliche Prüfung. Könnte man jederzeit um weitere Platzhalter erweitern.