public async Task <PictureViewModel> CreateAsync(PictureViewModel viewModel)
        {
            _context.Add(viewModel.Model);
            await _context.SaveChangesAsync();

            return(viewModel);
        }
Beispiel #2
0
        public async Task <GameViewModel> CreateAsync(GameViewModel viewModel)
        {
            if (!string.IsNullOrEmpty(viewModel.Developer))
            {
                var developer = await _context.Developers.SingleOrDefaultAsync(d => d.Name == viewModel.Developer);

                if (developer == null)
                {
                    viewModel.Model.Developer = new Developer {
                        Name = viewModel.Developer
                    }
                }
                ;
                else
                {
                    viewModel.Model.DeveloperId = developer.Id;
                }
            }

            if (!string.IsNullOrEmpty(viewModel.Publisher))
            {
                var publisher = await _context.Publishers.SingleOrDefaultAsync(d => d.Name == viewModel.Publisher);

                if (publisher == null)
                {
                    viewModel.Model.Publisher = new Publisher {
                        Name = viewModel.Publisher
                    }
                }
                ;
                else
                {
                    viewModel.Model.DeveloperId = publisher.Id;
                }
            }

            if (viewModel.Genres != null)
            {
                foreach (var genre in await _context.Genres.Where(g => viewModel.Genres.Contains(g.Name)).ToListAsync())
                {
                    viewModel.Model.GameGenres.Add(new GameGenre {
                        Game = viewModel.Model, GenreId = genre.Id
                    });
                }
                foreach (var genre in viewModel.Genres.Where(g => _context.Genres.All(x => x.Name != g)))
                {
                    viewModel.Model.GameGenres.Add(new GameGenre {
                        Game = viewModel.Model, Genre = new Genre {
                            Name = genre
                        }
                    });
                }
            }

            if (viewModel.Tags != null)
            {
                foreach (var tag in await _context.Tags.Where(g => viewModel.Tags.Contains(g.Name)).ToListAsync())
                {
                    viewModel.Model.GameTags.Add(new GameTag {
                        Game = viewModel.Model, TagId = tag.Id
                    });
                }
                foreach (var tag in viewModel.Tags.Where(t => _context.Tags.All(x => x.Name != t)))
                {
                    viewModel.Model.GameTags.Add(new GameTag {
                        Game = viewModel.Model, Tag = new Tag {
                            Name = tag
                        }
                    });
                }
            }

            _context.Games.Add(viewModel.Model);

            await _context.SaveChangesAsync();

            return(viewModel);
        }