public async Task <IActionResult> Create(GuidePostDataModel data) { var allItems = await this.itemsProvider.GetAllItemsAsync(); var items = new List <string> { data.Item1, data.Item2, data.Item3, data.Item4, data.Item5, data.Item6 }.Select(x => allItems.SingleOrDefault(y => y.ItemId == x)).ToList(); foreach (var item in items) { if (item == null) { this.ModelState.AddModelError(nameof(item), "Item not found"); } } if (await this.heroesProvider.GetHeroAsync(data.HeroId) == null) { this.ModelState.AddModelError(nameof(data.HeroId), "Hero not found"); } if (!ModelState.IsValid) { return(this.Redirect("/guides/create")); } var user = await this.userProvider.GetCurrentUserAsync(this.HttpContext); await this.guidesService.AddGuide(user.Id, data); return(this.RedirectToAction("index", "home")); }
public async Task AddGuide(string userId, GuidePostDataModel data) { var user = await this.dotaHelperData.Users.FindAsync(userId); var guideToAdd = new Guide { Creator = user, HeroId = data.HeroId, Title = data.Title, Text = data.Text, Item1Id = data.Item1, Item2Id = data.Item2, Item3Id = data.Item3, Item4Id = data.Item4, Item5Id = data.Item5, Item6Id = data.Item6 }; user.PostedGuides.Add(guideToAdd); await this.dotaHelperData.SaveChangesAsync(); }
public async Task <GuidePostDataModel> GetCreateModel() { var itemsTask = this.itemsProvider.GetAllItemsAsync(); var heroesTask = this.heroesProvider.GetAllHeroesAsync(); var items = await itemsTask; var heroes = await heroesTask; var heroIdsToNames = heroes.ToDictionary(x => x.Id, x => x.Name); var filteredItems = items.Where(x => !this.SkippedItemQualities.Contains(x.Quality) && x.Cost != "0" && x.ItemId != "1032").ToList(); var model = new GuidePostDataModel { HeroIdsToNames = heroIdsToNames, Items = filteredItems }; return(model); }