codeforamerica/cityvoice — pull request #175 by ohrite (2014-04-04 23:19:07+00:00)
Title: Split up VoiceFeedbackController

This breaks VoiceFeedbackController up into a single entry point, which logs a Call, backed by a series of steps:

* Associating a Location with a Call
* Asking if the Caller wants to listen to other Answers for the Location
* Setting the Consent flag on a Call
* Asking Questions and recording Answers for a Call

Logic for each step lives in its own model, and expressions of each state are either XML views or generated via TwilioControllerUtility#redirect_twilio_to. Shared logic, such as handling a mis-typed response or iterating through a list of items, is extracted into individual objects.

Reordering each thing should be as straightforward as changing the redirects.

/ @daguar @waltz should make for great reading this weekend! :shaved_ice: