Пример #1
0
        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 }));
        }
Пример #2
0
        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));
        }