Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        /// <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());
        }