public async Task <Hero> ToEntity(VillainDto villainDto) { ValidateVillainDto(villainDto); var dbType = await _context.HeroTypes.FirstOrDefaultAsync(ht => ht.Id == villainDto.TypeId); var dbMainPower = await _context.Powers.FirstOrDefaultAsync(power => power.Name == villainDto.MainPower.Name); var hero = new Hero { Id = villainDto.Id, Name = villainDto.Name, Type = dbType }; hero.MainPower = villainDto.MainPower.Id == 0 ? null : new HeroPower { Hero = hero, Power = await _powerService.FindById(villainDto.MainPower.Id) }; hero.Powers = new List <HeroPower>(); if (villainDto.Powers != null) { foreach (var power in villainDto.Powers) { hero.Powers.Add(new HeroPower { Hero = hero, Power = await _powerService.FindById(power.Id) }); } } else { hero.Powers = null; } hero.Allies = new List <HeroAlly>(); if (villainDto.Allies != null) { foreach (var ally in villainDto.Allies) { hero.Allies.Add(new HeroAlly { AllyFrom = hero, AllyTo = await GetVillainById(ally.Id) }); } } hero.IsBadGuy = true; return(hero); }
private async Task <ICollection <HeroPower> > CreateHeroPowers(HeroDto heroDto, Hero hero) { var heroPowers = new List <HeroPower>(); foreach (var power in heroDto.Powers) { heroPowers.Add(new HeroPower { Hero = hero, Power = await _powerService.FindById(power.Id), Strength = (await _powerService.FindById(power.Id)).Strength }); } return(heroPowers); }