private void Update() { try { //if (NavigationManager.) Data7.Clear(); DataTotal.Clear(); Succeeded = false; DataUpToDate = false; if (string.IsNullOrEmpty(City) || City.Length < 3) { return; } try { var path = GetUriFromCity(City); if (new UriBuilder(NavigationManager.Uri).Path != path) { NavigationManager.NavigateTo(path); } } catch { } if (CitiesRepository.CitiesToKeys.TryGetValue(City, out string?key)) { ShowCityData(key); } } catch (Exception ex) { Toaster.Add(ex.Message, MatToastType.Danger, "Error"); } }
private void ShowCityData(string?cityKey) { if (string.IsNullOrEmpty(cityKey)) { return; } DateTime from = ShowAllData ? DateTime.MinValue : DateTime.UtcNow.AddDays(-7); IEnumerable <ICovid19Data> data; if (ShowStateData) { Succeeded = CovidApi.TryGetStateData(cityKey, from, out data); } else { Succeeded = CovidApi.TryGetCityData(cityKey, from, out data); } if (Succeeded) { if (lastCity != City) { Logger.LogDebug($"Received data for city {City} ({cityKey})"); lastCity = City; } var covid19Data = data as ICovid19Data[] ?? data.ToArray(); DatasetCurrent = covid19Data.Last(); var currentDate = DatasetCurrent.LastUpdate.Date; HospitalizationService.TaskCompletionSource.Task.Wait(); var hospitalizationData = HospitalizationService.GetStateRecordsByCityKey(cityKey, from); var hospitalizationList = hospitalizationData.ToList(); HospitalizationDatasetCurrent = hospitalizationList.Last(); DataUpToDate = DateTime.Now.AddHours(-5).Date <= currentDate; Data7.AddRange(covid19Data.Select(x => new TimePoint(x.LastUpdate, x.Cases7Per100k))); DataTotal.AddRange(hospitalizationList.Select(x => new TimePoint(x.Date, x.Hospitalization7TIncidence))); colorRki = RkiColorFromValue(DatasetCurrent.Cases7Per100k); colorRkiHosp = HospitalizationDatasetCurrent.Hospitalization7TIncidence switch { var i and >= 3 and < 6 => RkiColorFromValue(35), var i and > 6 and < 9 => RkiColorFromValue(50), var i and > 9 => RkiColorFromValue(500), _ => RkiColorFromValue(0) }; if (!DataUpToDate) { ShowToastOnlyOncePerScope( $"Die aktuellen Covid-19 Fälle können derzeit nicht angezeigt werden. Das RKI arbeitet an der Lösung des Problems...", MatToastType.Danger, "Störung RKI"); } else if (DateTime.Now.Date != DatasetCurrent.LastUpdate.Date) { ShowToastOnlyOncePerScope( $"Das Dashboard zeigt zur Zeit noch den Datenstand vom Vortag an. In der Regel erfolgt die Aktualisierung der dem RKI neu übermittelten Covid-19 Fälle ab 03:00 Uhr. Bitte achten Sie auf die Angabe des Datenstandes unten im Dashboard", MatToastType.Info, "Hinweis"); } } else { Toaster.Add($"Keine Daten für die Stadt {City}", MatToastType.Warning); } }