public async Task ChangeMainPower(MainPowerChangeDto dto)
        {
            if (dto.HeroPowerId < 1)
            {
                throw new ArgumentException("Invalid id");
            }
            var heroPower = await _context.HeroPowers.Include(hp => hp.Hero).ThenInclude(h => h.MainPower).FirstOrDefaultAsync(hp => hp.Id == dto.HeroPowerId);

            var       hero      = heroPower.Hero;
            HeroPower mainPower = null;

            if (hero.MainPower != null)
            {
                mainPower = new HeroPower()
                {
                    Strength         = hero.MainPower.Strength,
                    Hero             = hero,
                    HeroId           = hero.Id,
                    Power            = hero.MainPower.Power,
                    PowerId          = hero.MainPower.PowerId,
                    LastTrainingTime = hero.MainPower.LastTrainingTime
                };
            }
            hero.MainPower = null;
            _context.Update(hero);
            await _context.SaveChangesAsync();

            if (!dto.IsMainPower)
            {
                return;
            }
            hero.MainPower = heroPower;
            if (mainPower != null)
            {
                hero.Powers.Append(mainPower);
            }
            _context.Update(hero);
            await _context.SaveChangesAsync();
        }
Exemplo n.º 2
0
        public async Task <IActionResult> ChangeMainPower(MainPowerChangeDto dto)
        {
            await _heroPowerService.ChangeMainPower(dto);

            return(Ok());
        }