Use a state machine to model Reservation status #1490
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What it does
This is a stacked PR that should be merged after #1489. The new code is:
Implementation notes
I wanted to try to model the states and transitions for a reservation in a single place. It's a somwhat linear path, with a few points of branching. We'll always want to preserve an escape hatch for strange situations, but I think this might be a good way to consolidate the logic of what can happen when throughout a Reservation's lifecycle.
I'm fairly happy with this approach so far. It remains to be seen how the state machine and other conditionals will interact- for example, what if you have to have added a certain number of associated items before it's OK to transition to a new state?