public ActionResult AddToLeg(ExtraViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var extra = Mapper.Map<Extra>(vm);
                extra.Player = RavenSession.Load<Player>(vm.PlayerId);
                extra.Team = RavenSession.Load<Team>(vm.TeamId);

                RavenSession.Store(extra);
                return RedirectToRoute(new { controller = "Leg", action = "Detail", id = vm.LegId });
            }
            SetupData(vm, vm.HomeTeamId, vm.AwayTeamId);
            return View("Add", vm);
        }
        private void SetupData(ExtraViewModel viewModel, string homeTeamId, string awayTeamId)
        {
            var players = RavenSession.Query<Player>().ToList();
            var playervm = Mapper.Map<IEnumerable<PlayerViewModel>>(players).ToList();
            var teams = RavenSession.Load<Team>(new[] { homeTeamId, awayTeamId }).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 = teamvm.Select(t => new SelectListItem { Text = t.Name, Value = t.Id });

            viewModel.HomeTeamId = homeTeamId;
            viewModel.AwayTeamId = awayTeamId;
        }
 public ActionResult AddToLeg(string legId, string homeTeamId, string awayTeamId)
 {
     var vm = new ExtraViewModel();
     SetupData(vm, homeTeamId, awayTeamId);
     return View("Add", vm);
 }