Seating¶
BYCEPS’ seating model was designed to be flexible enough to fit both small parties (say, less than a hundred seats in a single hall) as well as big ones (like Northern LAN Convention – NorthCon – with around 3.500 seats).
Structure¶
![digraph unnamed {
rankdir=BT
subgraph cluster_seating {
color=lightgray
fillcolor=lightgray
label="Seating"
labeljust="l"
node [color=white, style=filled]
rankdir=LR
style=filled
Seat -> {Area Category}
}
node [color=lightgray, style=filled]
Area -> Party
Category -> Party
}](../_images/graphviz-1c88ea02c93ae4bbc184e09589f1d9d8dc8db7a6.png)
Each seat references these two entities:
An area represents the physical location of a group of seats.
A category is meant to separate seats in different price ranges from each another.
Since a ticket is bound to a category, a user with a ticket from category X cannot reserve a seat that belongs to category Y.
Each area and category belongs to a specific party since each seating setup often is party-specific (even if multiple parties are held in the same location).
Example: Small Party¶
A small party may take place in a single room or hall, and no distinction is made between the seats in it. Thus, a single area as well as a single category are sufficient, so every seat belongs to the same area and the same category.
![digraph unnamed {
color=lightgray
fillcolor=lightgray
labeljust="l"
node [color=white, style=filled]
rankdir=LR
style=filled
subgraph cluster_categories {
label="Categories"
node [color=lightgray]
style=""
category_regular [label="Regular"]
}
subgraph cluster_areas {
label="Areas"
subgraph cluster_area1 {
label="Area 1"
seats_area1_regular [label="80 ×\nRegular"]
seats_area1_regular -> category_regular
}
style=""
}
}](../_images/graphviz-9ac2efa47a57baf72b4de5daa70d03126972413d.png)
Example: Big Party¶
This is a setup for a party that is held in multiple halls and which offers seats in multiple price (and feature) ranges.
![digraph unnamed {
color=lightgray
fillcolor=lightgray
labeljust="l"
node [color=white, style=filled]
style=filled
subgraph cluster_categories {
label="Categories"
labelloc="b"
node [color=lightgray]
style=""
category_vip [label="VIP"]
category_premium [label="Premium"]
category_regular [label="Regular"]
}
subgraph cluster_areas {
label="Areas"
subgraph cluster_area1 {
label="Area 1"
seats_area1_regular [label="1200 ×\nRegular"]
seats_area1_regular -> category_regular
}
subgraph cluster_area2 {
label="Area 2"
seats_area2_regular [label="400 ×\nRegular"]
seats_area2_premium [label="150 ×\nPremium"]
seats_area2_regular -> category_regular
seats_area2_premium -> category_premium
}
subgraph cluster_area3 {
label="Area 3"
seats_area3_regular [label="600 ×\nRegular"]
seats_area3_premium [label="250 ×\nPremium"]
seats_area3_vip [label="10 ×\nVIP"]
seats_area3_regular -> category_regular
seats_area3_premium -> category_premium
seats_area3_vip -> category_vip
}
style=""
}
}](../_images/graphviz-4e72bf8c0a82b0e39d5d859ea99b792177b9cd68.png)