Esempio n. 1
0
        /// <summary>
        /// Method to update mechanisms of a game
        /// </summary>
        /// <param name="selectedMechanisms">mechanisms to apply</param>
        /// <param name="gameToUpdate">Game that needs changes</param>
        public void UpdateGamesMechanisms(string[] selectedMechanisms, Game gameToUpdate)
        {
            if (selectedMechanisms == null)
            {
                gameToUpdate.MechanismsGames = new List <MechanismsGames>();
                return;
            }

            var selectedMecha = new HashSet <string>(selectedMechanisms);
            var gamesMecha    = new HashSet <int>
                                    (gameToUpdate.MechanismsGames.Select(c => c.Mechanism.Id));

            foreach (var m in _context.Mechanism)
            {
                if (selectedMecha.Contains(m.Id.ToString()))
                {
                    if (!gamesMecha.Contains(m.Id))
                    {
                        gameToUpdate.MechanismsGames.Add(new MechanismsGames()
                        {
                            GameId = gameToUpdate.Id, MechanismId = m.Id
                        });
                    }
                }
                else
                {
                    if (gamesMecha.Contains(m.Id))
                    {
                        MechanismsGames mToRemove = gameToUpdate.MechanismsGames.FirstOrDefault(i => i.MechanismId == m.Id);
                        _context.Remove(mToRemove);
                    }
                }
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> Create([Bind("Id,Name,Description,MinPlayer,MaxPlayer,MinimumAge,GameTime,Price,ReleaseDate,BuyLink,VideoLink,PictureLink,Validate,DifficultyId,IllustratorId,EditorId")] Game game, string[] selectedThemes, string[] selectedMs, string[] selectedMecha)
        {
            if (game.EditorId == -1)
            {
                game.EditorId = null;
            }
            if (game.DifficultyId == -1)
            {
                game.DifficultyId = null;
            }
            if (game.IllustratorId == -1)
            {
                game.IllustratorId = null;
            }
            if (selectedMecha != null)
            {
                game.MechanismsGames = new List <MechanismsGames>();
                foreach (var mecha in selectedMecha)
                {
                    var mechaToAdd = new MechanismsGames()
                    {
                        GameId = game.Id, MechanismId = int.Parse(mecha)
                    };
                    game.MechanismsGames.Add(mechaToAdd);
                }
            }
            if (selectedMs != null)
            {
                game.MaterialSupportsGames = new List <MaterialSupportsGames>();
                foreach (var ms in selectedMs)
                {
                    var msToAdd = new MaterialSupportsGames()
                    {
                        GameId = game.Id, MaterialSupportId = int.Parse(ms)
                    };
                    game.MaterialSupportsGames.Add(msToAdd);
                }
            }
            if (selectedThemes != null)
            {
                game.ThemesGames = new List <ThemesGames>();
                foreach (var t in selectedThemes)
                {
                    var themeToAdd = new ThemesGames()
                    {
                        GameId = game.Id, ThemeId = int.Parse(t)
                    };
                    game.ThemesGames.Add(themeToAdd);
                }
            }
            if (ModelState.IsValid)
            {
                _context.Add(game);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                var errors = ModelState.Select(x => x.Value.Errors)
                             .Where(y => y.Count > 0)
                             .ToList();
                var test = errors;
            }
            ViewDataRelationOtM(game);

            ViewDataRelationMtM(game);
            return(View(game));
        }