add multi-state switch functionality for reservation state and update backend the two places we do that (avoid double db write)