Ejemplo n.º 1
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid || SelectedPlayers.Count() == 0 || StartTime == EndTime)
            {
                return(Page());
            }

            FootballGame.StartTime = DateTime + StartTime;
            FootballGame.EndTime   = DateTime + EndTime;

            TimeSpan duration = EndTime - StartTime;

            FootballGame.Duration = duration.Hours;

            foreach (FootballPlayer p in AllFootballPlayers)
            {
                if (SelectedPlayers.Contains(p.Id))
                {
                    FootballGame.FootballPlayers.Add(p);
                }
            }

            IdentityUser User = await _userManager.GetUserAsync(HttpContext.User);

            FootballGame.IdentityUserId = Guid.Parse(User.Id);

            List <FootballTeam> Teams = _footballTeamSorter.CreateFairTeams(FootballGame.FootballPlayers.ToList());
            FootballTeam        TeamA = await _footballTeamService.SaveFootballTeam(Teams[0]);

            FootballTeam TeamB = await _footballTeamService.SaveFootballTeam(Teams[1]);

            FootballGame.FootballTeams.Add(TeamA);
            FootballGame.FootballTeams.Add(TeamB);

            _context.FootballGames.Add(FootballGame);
            await _context.SaveChangesAsync();

            await _playerGamesService.LinkPlayersToFootballGame(FootballGame.FootballPlayers.ToList(), FootballGame.Id);

            await _playerTeamsService.LinkPlayersToFootballTeam(TeamA.FootballPlayers.ToList(), TeamA.Id);

            await _playerTeamsService.LinkPlayersToFootballTeam(TeamB.FootballPlayers.ToList(), TeamB.Id);

            return(RedirectToPage("./Index"));
        }