Exemple #1
0
        public void UpdateReadModel(SpreadsheetImportReport importReport)
        {
            _reporter.StartReadModelUpdate();

            _reporter.StartReadModelUpdate("entityTypes");
            _entityTypeRepository.Update(_entityTypeMapper.MapFromDatabase(importReport));
            _reporter.StopReadModelUpdate("entityTypes");

            _reporter.StartReadModelUpdate("itemStatBoosts");
            _itemStatBoostPokemonRepository.Update(_itemStatBoostPokemonMapper.MapFromDatabase(importReport));
            _reporter.StopReadModelUpdate("itemStatBoosts");

            _reporter.StartReadModelUpdate("simpleLearnableMoves");
            _simpleLearnableMoveRepository.Update(_simpleLearnableMoveMapper.MapFromDatabase(importReport));
            _reporter.StopReadModelUpdate("simpleLearnableMoves");

            _reporter.StartReadModelUpdate("moves");
            _moveRepository.Update(_moveMapper.MapFromDatabase(importReport));
            _reporter.StopReadModelUpdate("moves");

            _reporter.StartReadModelUpdate("natures");
            _natureRepository.Update(_natureMapper.MapFromDatabase(importReport));
            _reporter.StopReadModelUpdate("natures");

            _reporter.StartReadModelUpdate("pokemonVarieties");
            _pokemonVarietyRepository.Update(_pokemonVarietyMapper.MapFromDatabase(importReport));
            _reporter.StopReadModelUpdate("pokemonVarieties");

            _reporter.StartReadModelUpdate("items");
            _itemRepository.Update(_itemMapper.MapFromDatabase(importReport));
            _reporter.StopReadModelUpdate("items");

            _reporter.StopReadModelUpdate();
        }
        public IDictionary <EntityTypeReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport importReport)
        {
            var pokemonMappings = _dbContext.PokemonVarieties
                                  .Where(p => p.DoInclude)
                                  .AsNoTracking()
                                  .Select(p => new EntityTypeReadModel
            {
                ResourceName = p.ResourceName,
                EntityType   = EntityType.PokemonVariety
            });

            var locationMappings = _dbContext.LocationGroups
                                   .AsNoTracking()
                                   .Select(l => new EntityTypeReadModel
            {
                ResourceName = l.ResourceName,
                EntityType   = EntityType.Location
            });

            var itemMappings = _dbContext.Items
                               .Where(i => i.DoInclude)
                               .AsNoTracking()
                               .Select(i => new EntityTypeReadModel
            {
                ResourceName = i.ResourceName,
                EntityType   = EntityType.Item
            });

            var entityTypeMappings = pokemonMappings.ToList();

            entityTypeMappings.AddRange(locationMappings);
            entityTypeMappings.AddRange(itemMappings);

            return(entityTypeMappings.ToDictionary(x => x, _ => DbAction.Create));
        }
        public IDictionary <PokemonVarietyReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report)
        {
            var varietyIds = _dbContext.PokemonVarieties
                             .Where(v => v.DoInclude)
                             .Include(v => v.DefaultForm)
                             .AsNoTracking()
                             .OrderBy(v => v.DefaultForm.SortIndex)
                             .Select(v => v.Id)
                             .ToList();

            _elementalTypeRelations = _dbContext.ElementalTypeRelations
                                      .AsNoTracking()
                                      .ToList();

            _elementalTypes = _dbContext.ElementalTypes
                              .AsNoTracking()
                              .ToList();

            _evolutions = _dbContext.Evolutions
                          .Include(e => e.BasePokemonVariety.DefaultForm)
                          .Include(e => e.BasePokemonVariety.PrimaryAbility)
                          .Include(e => e.BasePokemonVariety.SecondaryAbility)
                          .Include(e => e.BasePokemonVariety.HiddenAbility)
                          .Include(e => e.BasePokemonVariety.PrimaryType)
                          .Include(e => e.BasePokemonVariety.SecondaryType)
                          .Include(e => e.EvolvedPokemonVariety.DefaultForm)
                          .Include(e => e.EvolvedPokemonVariety.PrimaryAbility)
                          .Include(e => e.EvolvedPokemonVariety.SecondaryAbility)
                          .Include(e => e.EvolvedPokemonVariety.HiddenAbility)
                          .Include(e => e.EvolvedPokemonVariety.PrimaryType)
                          .Include(e => e.EvolvedPokemonVariety.SecondaryType)
                          .Include(e => e.BasePokemonSpecies)
                          .AsNoTracking()
                          .ToList();

            var result = new List <PokemonVarietyReadModel>();

            for (var i = 0; i < varietyIds.Count; i++)
            {
                var varietyId = varietyIds[i];

                var variety = LoadVariety(varietyId);

                var readModel = GetBasicReadModel(variety);

                AttachVarieties(readModel, variety);
                AttachForms(readModel, variety);

                AttachEvolutionAbilities(readModel, variety);

                int previousId = i != 0 ? varietyIds[i - 1] : varietyIds[^ 1];
 public IDictionary <NatureReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report)
 {
     return(_dbContext.Natures
            .AsNoTracking()
            .Select(nature => new NatureReadModel
     {
         Name = nature.Name,
         ApplicationDbId = nature.Id,
         Effect = nature.GetDescription(),
         Attack = nature.Attack,
         SpecialAttack = nature.SpecialAttack,
         Defense = nature.Defense,
         SpecialDefense = nature.SpecialDefense,
         Speed = nature.Speed,
     })
            .ToDictionary(x => x, _ => DbAction.Create));
 }
 public IDictionary <SimpleLearnableMoveReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report)
 {
     return(_dbContext.LearnableMoves
            .Include(lm => lm.PokemonVariety)
            .Include(lm => lm.Move)
            .Include(lm => lm.LearnMethods)
            .AsNoTracking()
            .ToList()
            .Where(learnableMove => learnableMove.LearnMethods.Any(learnMethod => learnMethod.IsAvailable))
            .Select(learnableMove => new SimpleLearnableMoveReadModel
     {
         ApplicationDbId = learnableMove.Id,
         PokemonVarietyApplicationDbId = learnableMove.PokemonVariety.Id,
         MoveResourceName = learnableMove.Move.ResourceName
     })
            .ToDictionary(x => x, _ => DbAction.Create));
 }
 public IDictionary <ItemReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport importReport)
 {
     return(_dbContext.Items
            .Where(i => i.DoInclude)
            .Include(i => i.BagCategory)
            .Include(i => i.PlacedItems)
            .ThenInclude(pi => pi.Location)
            .ThenInclude(l => l.LocationGroup)
            .ThenInclude(lg => lg.Region)
            .Select(i => new ItemReadModel
     {
         ApplicationDbId = i.Id,
         ResourceName = i.ResourceName,
         SortIndex = i.SortIndex,
         Name = i.Name,
         Description = i.Description,
         Effect = i.Effect,
         IsAvailable = i.IsAvailable,
         SpriteName = i.SpriteName,
         BagCategoryName = i.BagCategory.Name,
         BagCategorySortIndex = i.BagCategory.SortIndex,
         PlacedItems = i.PlacedItems.Select(pi => new PlacedItemReadModel
         {
             ApplicationDbId = pi.Id,
             ItemResourceName = i.ResourceName,
             ItemName = i.Name,
             ItemSpriteName = i.SpriteName,
             RegionName = pi.Location.LocationGroup.Region.Name,
             RegionColor = pi.Location.LocationGroup.Region.Color,
             LocationName = pi.Location.Name,
             LocationResourceName = pi.Location.LocationGroup.ResourceName,
             LocationSortIndex = pi.Location.SortIndex,
             SortIndex = pi.SortIndex,
             Index = pi.Index,
             PlacementDescription = pi.PlacementDescription,
             IsHidden = pi.IsHidden,
             IsConfirmed = pi.IsConfirmed,
             Quantity = pi.Quantity,
             Notes = pi.Notes,
             Screenshot = pi.ScreenshotName
         }).ToList()
     })
            .AsNoTracking()
            .AsSingleQuery()
            .ToDictionary(x => x, _ => DbAction.Create));
 }
 public IDictionary <MoveReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report)
 {
     return(_dbContext.Moves
            .Include(m => m.DamageClass)
            .Include(m => m.ElementalType)
            .AsNoTracking()
            .Where(m => m.DoInclude)
            .OrderBy(m => m.Name)
            .Select(move => new MoveReadModel
     {
         ApplicationDbId = move.Id,
         Name = move.Name,
         ResourceName = move.ResourceName,
         DamageClass = move.DamageClass.Name,
         ElementalType = move.ElementalType.Name,
         AttackPower = move.AttackPower,
         Accuracy = move.Accuracy,
         PowerPoints = move.PowerPoints,
         Priority = move.Priority,
         EffectDescription = move.Effect
     })
            .ToDictionary(x => x, _ => DbAction.Create));
 }
Exemple #8
0
 public IDictionary <ItemStatBoostPokemonReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report)
 {
     return(_dbContext.ItemStatBoostPokemon
            .Include(i => i.ItemStatBoost.Item)
            .Include(i => i.PokemonVariety)
            .AsNoTracking()
            .Select(x => new ItemStatBoostPokemonReadModel
     {
         ApplicationDbId = x.Id,
         ItemName = x.ItemStatBoost.Item.Name,
         ItemResourceName = x.ItemStatBoost.Item.ResourceName,
         ItemEffect = x.ItemStatBoost.Item.Effect,
         AttackBoost = x.ItemStatBoost.AttackBoost,
         DefenseBoost = x.ItemStatBoost.DefenseBoost,
         SpecialAttackBoost = x.ItemStatBoost.SpecialAttackBoost,
         SpecialDefenseBoost = x.ItemStatBoost.SpecialDefenseBoost,
         SpeedBoost = x.ItemStatBoost.SpeedBoost,
         HitPointsBoost = x.ItemStatBoost.HitPointsBoost,
         HasRequiredPokemon = x.PokemonVariety != null,
         RequiredPokemonName = x.PokemonVariety.Name,
         RequiredPokemonResourceName = x.PokemonVariety.ResourceName
     })
            .ToDictionary(x => x, _ => DbAction.Create));
 }