public async Task <bool> RefreshStoreFromCensus() { var result = new List <Zone>(); var createdEntities = new List <Zone>(); IEnumerable <CensusZoneModel> zones = new List <CensusZoneModel>(); try { zones = await _censusZone.GetAllZones(); } catch { _logger.LogError("Census API query failed: get all Zones. Refreshing store from backup..."); return(false); } if (zones != null && zones.Any()) { var censusEntities = zones.Select(ConvertToDbModel); using (var factory = _dbContextHelper.GetFactory()) { var dbContext = factory.GetDbContext(); var storedEntities = await dbContext.Zones.ToListAsync(); foreach (var censusEntity in censusEntities) { var storeEntity = storedEntities.FirstOrDefault(storedEntity => storedEntity.Id == censusEntity.Id); if (storeEntity == null) { createdEntities.Add(censusEntity); } else { storeEntity = censusEntity; dbContext.Zones.Update(storeEntity); } } if (createdEntities.Any()) { await dbContext.Zones.AddRangeAsync(createdEntities); } await dbContext.SaveChangesAsync(); _logger.LogInformation($"Refreshed Zones store"); } return(true); } else { return(false); } }
public async Task RefreshStore() { var result = new List <Zone>(); var createdEntities = new List <Zone>(); var Zones = await _censusZone.GetAllZones(); if (Zones != null) { var censusEntities = Zones.Select(ConvertToDbModel); using (var factory = _dbContextHelper.GetFactory()) { var dbContext = factory.GetDbContext(); var storedEntities = await dbContext.Zones.ToListAsync(); foreach (var censusEntity in censusEntities) { var storeEntity = storedEntities.FirstOrDefault(storedEntity => storedEntity.Id == censusEntity.Id); if (storeEntity == null) { createdEntities.Add(censusEntity); } else { storeEntity = censusEntity; dbContext.Zones.Update(storeEntity); } } if (createdEntities.Any()) { await dbContext.Zones.AddRangeAsync(createdEntities); } await dbContext.SaveChangesAsync(); } } }