public async Task <IActionResult> GameProfiles(GameProfilesViewModel gamesViewModel) { if (!ModelState.IsValid) { ViewData["errorMessage"] = "één of meerdere waren niet correct ingevuld."; return(View(gamesViewModel)); } var user = await _dbContext.Users .Include(u => u.GameProfiles) .ThenInclude(gp => gp.Game) .SingleOrDefaultAsync(u => u.UserName == User.Identity.Name); foreach ((var gameName, var userName) in gamesViewModel.Profiles.Where(p => p.Value is not null)) { var game = _dbContext.Games.FirstOrDefault(g => g.Name == gameName); if (game is null) { return(BadRequest()); } var existingProfile = user.GameProfiles.SingleOrDefault(gp => gp.Game.Name == game.Name); if (existingProfile is null) { var profile = new GameProfile(userName, game); user.GameProfiles.Add(profile); } else { existingProfile.ProfileName = userName; } await _dbContext.SaveChangesAsync(); } return(RedirectToAction(nameof(Detail), new { id = user.UserName })); }
public async Task <IActionResult> GameProfiles() { var user = await _dbContext.Users.Include(x => x.GameProfiles) .FirstOrDefaultAsync(x => x.Id == User.FindFirstValue(ClaimTypes.NameIdentifier)); var games = await _dbContext.Games.ToListAsync(); Dictionary <string, string> profiles = new Dictionary <string, string>(); List <Game> existingGames = new List <Game>(); foreach (var profile in user.GameProfiles) { var game = profile.Game; profiles.Add(game.Name, profile.ProfileName); existingGames.Add(game); } foreach (var game in games.ToList().Except(existingGames)) { profiles.Add(game.Name, ""); } var gameProfilesViewModel = new GameProfilesViewModel(); gameProfilesViewModel.Profiles = profiles; return(View(gameProfilesViewModel)); }