public ActionResult Create(string eventId, string[] teamIds)
        {
            var vm = new LegViewModel {EventId = eventId, TeamIds = teamIds};

            SetupData(vm);

            return View(vm);
        }
        public ActionResult Create(LegViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var leg = Mapper.Map<Leg>(viewModel);
                leg.HomeCaptain = RavenSession.Load<Player>(viewModel.HomeCaptainId);
                leg.AwayCaptain = RavenSession.Load<Player>(viewModel.AwayCaptainId);
                leg.HomeTeam = RavenSession.Load<Team>(viewModel.HomeTeamId);
                leg.AwayTeam = RavenSession.Load<Team>(viewModel.AwayTeamId);
                RavenSession.Store(leg, "legs/");
                return RedirectToAction("Detail", "Event", new { id = viewModel.EventId });
            }

            SetupData(viewModel);
            return View(viewModel);
        }
        private void SetupData(LegViewModel viewModel)
        {
            var players = RavenSession.Query<Player>().ToList();
            var playervm = Mapper.Map<IEnumerable<PlayerViewModel>>(players).ToList();
            var teams = RavenSession.Query<Team>().ToList();
            var teamvm = Mapper.Map<IEnumerable<TeamViewModel>>(teams).ToList();

            viewModel.PlayersDataSource = new[] { new SelectListItem { Text = "", Value = "" } }
                .Union(playervm.OrderBy(p => p.FullName).Select(p => new SelectListItem { Text = p.FullName, Value = p.Id }));

            viewModel.TeamDataSource = new[] { new SelectListItem { Text = "", Value = "" } }.Union(teamvm.Select(t => new SelectListItem { Text = t.Name, Value = t.Id }));
        }
        public ActionResult Edit(LegViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var leg = RavenSession.Load<Leg>(viewModel.Id);
                if (leg == null)
                {
                    return HttpNotFound(string.Format("Leg {0} does not exist", viewModel.Id));
                }

                leg.Name = viewModel.Name;
                leg.Slug = viewModel.Slug;
                leg.Date = viewModel.Date;
                leg.Location = Mapper.Map<Location>(viewModel.Location);
                leg.HomeCaptain = RavenSession.Load<Player>(viewModel.HomeCaptainId);
                leg.AwayCaptain = RavenSession.Load<Player>(viewModel.AwayCaptainId);
                leg.HomeTeam = RavenSession.Load<Team>(viewModel.HomeTeamId);
                leg.AwayTeam = RavenSession.Load<Team>(viewModel.AwayTeamId);
                RavenSession.Store(leg);
                return RedirectToAction("Detail", "Event", new { id = viewModel.EventId });
            }

            SetupData(viewModel);
            return View(viewModel);
        }