Tworzenie struktury danych o dostępności dotyczących Rezerwacji

Definicje parametrów

Jak określono w Availability definicja:

  • party_size: liczba miejsc, w których w tym czasie można brać udział; gniazdo. Restauracja może być powiązana z wieloma automatami jednocześnie, każdy określający inną party_size, jeśli na przykład 2, 3 lub 4 osoby może mieć stoliki z rezerwacją
  • spots_open: liczba dostępnych obecnie miejsc wpis o dostępności
  • spots_total: łączna liczba miejsc, które sprzedawca ma w przypadku tego elementu. konfiguracji (w tym niedostępnych)

Te 3 parametry współdziałają, aby utworzyć cyfrową reprezentację plan piętra. party_size to liczba osób, jaką może pomieścić każda z nich (istnieje może być wpisem dla każdego rozmiaru obsługiwanego w tabeli). spots_open i spots_total to liczba tabel, w których można umieścić tę wartość party_size.

Przykład pustego planu piętra

Wyobraź sobie restaurację z poniższym planem piętra, która nie jest aktywna rezerwacje:

Rysunek 1. Plan piętra bez aktywnych rezerwacji
Rysunek 1. Plan piętra bez liczba aktywnych rezerwacji

Wartości party_size, spots_open i spots_total to:

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1

Plik danych o dostępności dla jednego przedziału czasu u tego sprzedawcy będzie wyglądał tak:

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 4,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

Przykładowy plan piętra z rezerwacją

Wyobraźmy sobie teraz, że jeden ze okrągłych stołów został zarezerwowany:

Rysunek 2. Plan piętra z 1 aktywną rezerwacją
Rys. 2. Plan piętra z jednym aktywna rezerwacja

Wartości party_size, spots_open i spots_total będą teraz wyglądać tak:

party_size spots_open spots_total
4 2 3
5 2 3
6 3 4
7 1 1
8 1 1

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

Określanie dostępności posiłków dzięki obsłudze połączonych tabel

Restauracja może łączyć stoły na wiele sposobów, by obsługiwał większe grup. W plikach danych powinny występować wartości spots_open i spots_total w sposób, który dokładnie odzwierciedla to, czy możesz akceptować strony określonych rozmiaru. Poniżej przedstawiamy przykład, jak można określić łączenie tabel. Twoje pliki danych mogą nieco inaczej obliczać te obliczenia, możesz określić spots_open i spots_total w taki sposób, z Twoją logiką biznesową.

Jeśli restauracja ma możliwość łączenia stolików w większą imprezę, Zaktualizuj odpowiednio swoje dane w aplikacjach spots_open i spots_total.

Załóżmy, że restauracja może połączyć 2 małe stoły dla 7–10 osób ludzi.

Rysunek 3. Plan piętra bez aktywnych rezerwacji
Rys. 3. Plan piętra bez liczba aktywnych rezerwacji

W przypadku braku aktywnych rezerwacji wartości parametrów party_size, spots_open, i spots_total to:

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1
9 1 1
10 1 1

Teraz przy tym samym planie piętra rezerwuje się pokój dla 10 osób, w którym łączy 2 małe tabele.

Rysunek 4. Plan piętra z 1 aktywną rezerwacją obejmującą 2 tabele
Rysunek 4. Plan piętra z 1 aktywną rezerwacją obejmującą 2 tabele

Następnie wartości w polach party_size, spots_open i spots_total to:

party_size spots_open spots_total
4 1 3
5 1 3
6 2 4
7 1 1
8 1 1
9 0 1
10 0 1