This post focuses on the writes in the system and introduces the concept of a command and handlers for mutating state, reducing the controller further.
After a brainstorming session, and the use of a few interfaces and design patterns a potentially complicated rules engine turned out to be quite simple.