Ejemplo n.º 1
0
        public async Task InitDb()
        {
            //await _dbContext.Database.EnsureDeletedAsync();
            await _dbContext.Database.EnsureCreatedAsync();

            var      isInitialized = _dbContext.AppOptions.FirstOrDefault();
            VkRegion dbRegion      = null;

            if (isInitialized == null)
            {
                var tmbRegion = _vkService.GetRegions("Тамбов").FirstOrDefault();
                if (tmbRegion != null)
                {
                    dbRegion = _dbContext.Set <VkRegion>().Add(new VkRegion()
                    {
                        Title    = tmbRegion.Title,
                        SourceId = tmbRegion.Id
                    }).Entity;
                    isInitialized = new ApplicationOptions()
                    {
                        IsCitiesSynchronized = true
                    };
                    _dbContext.AppOptions.Add(isInitialized);
                    await _dbContext.SaveChangesAsync();
                }

                var regionParts = TambovCities.ResourceManager.GetString("tambov").Split(',').ToArray();
                if (tmbRegion != null)
                {
                    foreach (var part in regionParts)
                    {
                        var parts = _vkService.GetRegionPartsByString(part)
                                    .Where(c => c.Region == tmbRegion.Title && c.Id.HasValue)
                                    .DistinctBy(c => c.Title)
                                    .Select(c => new RegionPart
                        {
                            Title    = c.Title,
                            SourceId = c.Id.Value,
                            RegionId = dbRegion.Id,
                            VkRegion = dbRegion,
                        }).ToArray();
                        _dbContext.AddRange(parts);
                        await _dbContext.SaveChangesAsync();
                    }
                }
            }
        }