public async Task <IActionResult> Create(NewResultViewModel model, bool toRating) { var currentUser = await User.GetApplicationUser(_userManager); if (ModelState.IsValid) { var league = _leaguesRepository.GetUserAuthorizedLeague(currentUser, model.LeagueId); if (league == null) { ModelState.AddModelError("", _localizer[nameof(LocalizationKey.LeagueNotFound)]); var leagues = GetLeagues(currentUser, null); var leagueIds = leagues.Select(l => l.Id).ToList(); model.Leagues = leagues; model.Users = GetUsers(leagueIds); return(View("Create", model)); } var players = GetUsers(new[] { league.Id }); var firstPlayer = players.Keys.FirstOrDefault(p => p.Id == model.FirstPlayerId) ?? await AddToLeague(model.FirstPlayerId, league); var secondPlayer = players.Keys.FirstOrDefault(p => p.Id == model.SecondPlayerId) ?? await AddToLeague(model.SecondPlayerId, league); if (firstPlayer == null || secondPlayer == null) { ModelState.AddModelError("", _localizer[nameof(LocalizationKey.PlayerNotFound)]); model.Leagues = new[] { league }; model.Users = players; return(View("Create", model)); } _context.Match.Add(new Match { Id = Guid.NewGuid(), Date = model.Date, FirstPlayer = firstPlayer, SecondPlayer = secondPlayer, FirstPlayerScore = model.FirstPlayerScore, SecondPlayerScore = model.SecondPlayerScore, League = league, CreatedByUser = currentUser }); _context.SaveChanges(); if (toRating) { return(RedirectToAction(nameof(LeaguesController.Rating), "Leagues", new { id = model.LeagueId })); } else { return(RedirectToAction(nameof(Create), new { leagueId = model.LeagueId })); } } model.Leagues = GetLeagues(currentUser, null); model.Users = GetUsers(model.Leagues.Select(l => l.Id)); return(View("Create", model)); }
public async Task <IActionResult> Edit(Guid id, NewResultViewModel model) { if (ModelState.IsValid) { var match = _context.Match.Single(m => m.Id == id); if (match == null) { return(NotFound()); } var currentUser = await User.GetApplicationUser(_userManager); var league = _leaguesRepository.GetUserAuthorizedLeague(currentUser, model.LeagueId); if (league == null) { ModelState.AddModelError("", _localizer[nameof(LocalizationKey.LeagueNotFound)]); return(View("Create", model)); } var players = _context.LeaguePlayers.Where(lp => lp.LeagueId == league.Id).Select(lp => lp.User).ToList(); var firstPlayer = players.FirstOrDefault(p => p.Id == model.FirstPlayerId); var secondPlayer = players.FirstOrDefault(p => p.Id == model.SecondPlayerId); if (firstPlayer == null || secondPlayer == null) { ModelState.AddModelError("", _localizer[nameof(LocalizationKey.PlayerNotFound)]); return(View("Create", model)); } match.FirstPlayer = firstPlayer; match.SecondPlayer = secondPlayer; match.FirstPlayerScore = model.FirstPlayerScore; match.SecondPlayerScore = model.SecondPlayerScore; match.Date = model.Date; _context.SaveChanges(); var leagueId = league.Id; return(RedirectToAction(nameof(Index), new { leagueId })); } ViewBag.Editing = true; return(View("Create", model)); }