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(); }
public async Task <IActionResult> ChangeMainPower(MainPowerChangeDto dto) { await _heroPowerService.ChangeMainPower(dto); return(Ok()); }