public async Task <IActionResult> Create(int optionId, CancellationToken cancellationToken) { var model = new DungeonOptionCreateViewModel { DeadEnd = true, Corridor = true, ItemsRarity = 1, UserId = UserHelper.GetUserId(User.Claims), TrapPercent = 15, Level = 1 }; if (optionId != 0) { var option = await _dungeonService.GetDungeonOptionAsync(optionId, cancellationToken); model = _mapper.Map <DungeonOptionCreateViewModel>(option); model.AddDungeon = true; if (model.MonsterType[0].Equals("any")) { model.MonsterType = null; } } await FillCreateModelDropDownsAsync(model, cancellationToken); return(View(model)); }
private async Task <string> GetMonsterTypeAsync(DungeonOptionCreateViewModel model, CancellationToken cancellationToken) { var monsterType = string.Join(",", model.MonsterType); var monsters = await _optionService.ListOptionsAsync(cancellationToken, OptionKey.MonsterType); if (model.MonsterType.Length == monsters.Count) { monsterType = "any"; } if (model.MonsterType.Length == 0) { monsterType = "none"; } return(monsterType); }
private async Task FillCreateModelDropDownsAsync(DungeonOptionCreateViewModel model, CancellationToken cancellationToken) { var options = await _optionService.ListOptionsAsync(cancellationToken); model.DungeonSizes = options.Where(om => om.Key == OptionKey.Size).Select(om => new SelectListItem { Text = om.Name, Value = om.Value }).ToList(); model.DungeonDifficulties = options.Where(om => om.Key == OptionKey.Difficulty).Select(om => new SelectListItem { Text = om.Name, Value = om.Value }).ToList(); model.PartyLevels = GenerateIntSelectList(1, 21); model.PartySizes = GenerateIntSelectList(1, 9); model.TreasureValues = options.Where(om => om.Key == OptionKey.TreasureValue).Select(om => new SelectListItem { Text = om.Name, Value = om.Value }).ToList(); model.ItemsRarities = options.Where(om => om.Key == OptionKey.ItemsRarity).Select(om => new SelectListItem { Text = om.Name, Value = om.Value }).ToList(); model.RoomDensities = options.Where(om => om.Key == OptionKey.RoomDensity).Select(om => new SelectListItem { Text = om.Name, Value = om.Value }).ToList(); model.RoomSizes = options.Where(om => om.Key == OptionKey.RoomSize).Select(om => new SelectListItem { Text = om.Name, Value = om.Value }).ToList(); model.MonsterTypes = options.Where(om => om.Key == OptionKey.MonsterType).Select(om => new SelectListItem { Text = om.Name, Value = om.Value, Selected = true }).ToList(); model.TrapPercents = options.Where(om => om.Key == OptionKey.TrapPercent).Select(om => new SelectListItem { Text = om.Name, Value = om.Value, Selected = true }).ToList(); model.DeadEnds = GetBools(); model.Corridors = GetBools(); model.RoamingPercents = options.Where(om => om.Key == OptionKey.RoamingPercent).Select(om => new SelectListItem { Text = om.Name, Value = om.Value, Selected = true }).ToList(); model.Themes = options.Where(om => om.Key == OptionKey.Theme).Select(om => new SelectListItem { Text = om.Name, Value = om.Value, Selected = true }).ToList(); }
public async Task <IActionResult> Create(DungeonOptionCreateViewModel model, CancellationToken cancellationToken) { if (ModelState.IsValid) { try { var optionModel = _mapper.Map <DungeonOptionModel>(model); optionModel.MonsterType = await GetMonsterTypeAsync(model, cancellationToken); var dungeon = await _dungeonService.CreateOrUpdateDungeonAsync(optionModel, model.AddDungeon, model.Level, cancellationToken); return(Json(JsonSerializer.Serialize(dungeon))); } catch (Exception ex) { _logger.LogError(ex, "Error creating dungeon."); } } await FillCreateModelDropDownsAsync(model, cancellationToken); return(View(model)); }