Doppelbuchungen in einem Coworking-Space verhindern

Eine Doppelbuchung ist selten ein Darstellungsfehler im Kalender. Meist verwenden zwei Teile des Systems unterschiedliche Definitionen von „belegt“. Die Lösung beginnt mit einer präzisen gemeinsamen Regel.

Aktualisiert

Das Problem ist nicht der Kalender

Zwei Personen stehen um 10:00 Uhr mit Bestätigung vor demselben Raum. Der Kalender zeigt nur zwei Datensätze, die nie gleichzeitig hätten gespeichert werden dürfen. Die zweite Anfrage muss beim Erstellen abgelehnt werden, und zwar innerhalb derselben Transaktion wie die Buchung.

Direkt aufeinanderfolgende Buchungen überschneiden sich nicht

Zeitintervalle werden halboffen behandelt: Der Beginn gehört dazu, das Ende nicht. Zwei Buchungen überschneiden sich nur, wenn jede vor dem Ende der anderen beginnt:

start_datetime < :requested_end
AND end_datetime > :requested_start

Damit sind 10:00–11:00 und 11:00–12:00 kompatibel. 10:30–11:30 kollidiert dagegen mit dem ersten Zeitraum. Beidseitig inklusive Vergleiche erzeugen falsche Konflikte und vernichten verkaufbare Zeit.

„Belegt“ hat zwei Bedeutungen

Bei einem komplett gebuchten Meetingraum blockiert eine Buchung die gesamte Ressource. In einem Bereich mit zwölf Desks verbraucht eine Buchung für drei Personen nur drei Plätze. Im ersten Fall wird nach einer Überschneidung gesucht; im zweiten werden die Plätze aller überschneidenden Buchungen summiert und mit der Kapazität verglichen.

Vier Gründe für eine Ablehnung

  1. Die Ressource ist gesperrt: Wartung, Reinigung oder interne Veranstaltung.
  2. Eine Komplettbuchung besteht: Die Ressource kann nicht zusätzlich belegt werden.
  3. Einzelplätze sind bereits verkauft: Der ganze Bereich ist nicht mehr exklusiv buchbar.
  4. Die Restkapazität reicht nicht: Es sind Plätze frei, aber weniger als angefragt.

Der genaue Grund ermöglicht eine sinnvolle Alternative: weniger Teilnehmer, eine andere Zeit oder eine andere Ressource.

Die Boris-Buchungsliste mit Space, Buchungsart, Personenzahl und Zahlungsstatus
Für die Verfügbarkeitsprüfung werden Buchungsart und Personenzahl jeder Reservierung ausgewertet.

Stornierte Buchungen müssen den Zeitraum freigeben

Nur Zustände, die Kapazität halten, dürfen in die Prüfung einfließen, etwa pending und confirmed. Eine Stornierung gibt den Zeitraum frei. Offene Buchungen vollständig zu ignorieren wäre ebenfalls gefährlich: Zwei parallele Zahlungen könnten dieselbe Kapazität bestätigen. Ein offener Vorgang muss sie deshalb zeitlich begrenzt reservieren.

Auch Ablehnungen protokollieren

Angenommene Buchungen erscheinen in Berichten, abgewiesene Nachfrage nicht. Konflikte nach Ressource und Zeitraum zu speichern zeigt, wo Räume, Desks oder Öffnungszeiten fehlen. Gleichartige Hinweise sollten zusammengefasst werden, damit zehn Versuche nicht zehn identische Alarme erzeugen.

Kurze Checkliste

  • Halboffene Intervalle erlauben direkt anschließende Buchungen.
  • Komplett- und Platzbuchungen getrennt behandeln.
  • Betriebliche Sperren separat prüfen.
  • Offene Buchungen halten Kapazität mit Ablaufzeit.
  • Restkapazität statt einer allgemeinen Fehlermeldung zurückgeben.
  • Ablehnungen als Nachfragedaten speichern.