public async Task <IActionResult> AddSkill(int id, [Bind("CharId, SkillId")] CharacterSkillViewModel charSkill) { var skill = await _skillRepository.GetSkill(charSkill.SkillId); var character = await _characterRepository.GetCharacter(charSkill.CharId); if (skill != null && character != null) { if (character.Xp - skill.XpCost >= 0) { // Subtract cost from character, add and save to link table character.Xp -= skill.XpCost; _charSkillRepository.AddSkillToCharacter(charSkill.SkillId, id); await _charSkillRepository.Save(); // Update Local and API _characterRepository.UpdateCharacter(character); await _characterRepository.Save(); await _characterService.UpdateCharacter(character); return(RedirectToAction(nameof(Details), new { id })); } } return(View()); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public async Task <IActionResult> AddSkill(int?id) { if (id == null) { return(NotFound()); } try { var character = await _characterRepository.GetCharacter(id.Value); if (character != null) { var skills = await _skillRepository.GetAll(); if (skills.Any()) { var list = skills.Select ( s => new SelectListItem { Value = s.Id.ToString(), Text = s.Name } ); ViewBag.Skills = list; } var viewModel = new CharacterSkillViewModel { CharId = character.Id }; return(View(viewModel)); } } catch (BrokenCircuitException) { HandleBrokenCircuit(); } return(NotFound()); }