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));
        }