public ActionResult AssignToRetreatChooseBedCode(int retreatId, int participantId)
 {
     var bedCodes = _bedRepository.GetAll().Select(x => x.Code).OrderBy(x => x);
     var model = new AssignParticipantToRetreatChooseBedCodeViewModel
     {
         RetreatId = retreatId,
         ParticipantId = participantId,
         BedCodeList = new[] {"(none)"}.Concat(bedCodes).ToArray(),
         BedCode = "(none)",
     };
     return View(model);
 }
        public ActionResult AssignToRetreatChooseBedCode(AssignParticipantToRetreatChooseBedCodeViewModel postBack)
        {
            var retreat = _retreatRepository.GetById(postBack.RetreatId);
            var participant = _participantRepository.GetById(postBack.ParticipantId);
            Bed bed = null;
            if (!string.IsNullOrEmpty(postBack.BedCode))
                bed = _bedRepository.GetBy(postBack.BedCode);

            // TODO: this
            retreat.AddParticipant(participant, bed);
            _retreatRepository.Save(retreat);

            // TODO: do we need to remove the participant from any retreat they were previously
            // registered for?  What if they were registered for multiple retreats?  Do we
            // support that?

            return this.RedirectToAction<RetreatController>(c => c.Index(retreat.Id));
        }