Beispiel #1
0
        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);
        }