Пример #1
0
        private static async Task SeedSolarSystemsJumpsAsync(EveEchoesPlanetaryProductionApiDbContext dbContext, ILogger logger)
        {
            var solarSystemsJumps = new List <SolarSystemJump>();

            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths.SolarSystemsJumpsCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var lineArgs = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);

                var fromRegionIdSuccess        = long.TryParse(lineArgs[0], out var fromRegionId);
                var fromConstellationIdSuccess = long.TryParse(lineArgs[1], out var fromConstellationId);

                var fromSolarSystemSuccess = long.TryParse(lineArgs[2], out var fromSolarSystemId);
                var toSolarSystemSuccess   = long.TryParse(lineArgs[3], out var toSolarSystemId);

                var toConstellationIdSuccess = long.TryParse(lineArgs[4], out var toConstellationId);
                var toRegionIdSuccess        = long.TryParse(lineArgs[5], out var toRegionId);

                if (!fromRegionIdSuccess ||
                    !toRegionIdSuccess ||
                    !fromConstellationIdSuccess ||
                    !toConstellationIdSuccess ||
                    !fromSolarSystemSuccess ||
                    !toSolarSystemSuccess)
                {
                    logger.LogWarning($"Can't parse solar system jump");
                    logger.LogWarning(line);
                    continue;
                }

                var solarSystemJump = new SolarSystemJump()
                {
                    FromRegionId        = fromRegionId,
                    FromConstellationId = fromConstellationId,
                    FromSolarSystemId   = fromSolarSystemId,
                    ToSolarSystemId     = toSolarSystemId,
                    ToConstellationId   = toConstellationId,
                    ToRegionId          = toRegionId,
                };

                solarSystemsJumps.Add(solarSystemJump);
            }

            await dbContext.AddRangeAsync(solarSystemsJumps);

            await dbContext.SaveChangesAsync();
        }
Пример #2
0
        private static async Task SeedPlanetsAsync(EveEchoesPlanetaryProductionApiDbContext dbContext, ILogger logger)
        {
            var planets = new List <Planet>();

            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths.PlanetsCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var lineArgs = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);

                var planetIdParseSuccess        = long.TryParse(lineArgs[0], out var planetId);
                var regionIdParseSuccess        = long.TryParse(lineArgs[1], out var regionId);
                var constellationIdParseSuccess = long.TryParse(lineArgs[2], out var constellationId);
                var solarSystemIdParseSuccess   = long.TryParse(lineArgs[3], out var solarSystemId);
                var planetName = lineArgs[4];
                var planetTypeIdParseSuccess = long.TryParse(lineArgs[5], out var planetTypeId);

                if (!planetIdParseSuccess ||
                    !regionIdParseSuccess ||
                    !constellationIdParseSuccess ||
                    !solarSystemIdParseSuccess ||
                    !planetTypeIdParseSuccess)
                {
                    logger.LogWarning($"Can't parse planet");
                    logger.LogWarning(line);
                    continue;
                }

                var planet = new Planet()
                {
                    Id              = planetId,
                    RegionId        = regionId,
                    ConstellationId = constellationId,
                    SolarSystemId   = solarSystemId,
                    Name            = planetName,
                    PlanetTypeId    = planetTypeId,
                };

                planets.Add(planet);
            }

            await dbContext.AddRangeAsync(planets);

            await dbContext.SaveChangesWithExplicitIdentityInsertAsync(nameof(EveEchoesPlanetaryProductionApiDbContext
                                                                              .Planets));
        }
Пример #3
0
        private static async Task SeedPlanetsResourcesAsync(EveEchoesPlanetaryProductionApiDbContext dbContext, ILogger logger)
        {
            var planetsResources = new List <PlanetResource>();

            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths
                                                                                 .PlanetsResourcesCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var lineArgs = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);

                var planetIdParseSuccess = long.TryParse(lineArgs[0], out var planetId);
                var itemId             = (await dbContext.Items.FirstOrDefaultAsync(i => i.Name.Equals(lineArgs[6])))?.Id ?? 0;
                var richnessId         = (await dbContext.Richnesses.FirstOrDefaultAsync(i => i.Name.Equals(lineArgs[7])))?.Id ?? 0;
                var outputParseSuccess = double.TryParse(lineArgs[8], out var output);

                if (!planetIdParseSuccess ||
                    itemId is 0 ||
                    richnessId is 0 ||
                    !outputParseSuccess)
                {
                    logger.LogWarning($"Can't parse planet resource");
                    logger.LogWarning(line);
                    continue;
                }

                var planetResource = new PlanetResource()
                {
                    PlanetId   = planetId,
                    ItemId     = itemId,
                    RichnessId = richnessId,
                    Output     = output,
                };

                planetsResources.Add(planetResource);
            }

            await dbContext.AddRangeAsync(planetsResources);

            await dbContext.SaveChangesAsync();
        }