private async Task SetWeather() { var storagedWeather = await new WeatherController().LocalData.List(new Data.Models.Query.SQLControllerListCriteriaModel { Filter = new System.Collections.Generic.List <Data.Models.Query.SQLControllerListFilterField> { new Data.Models.Query.SQLControllerListFilterField { FieldName = "Created", ValueLBound = DateTime.Now.Date.ToString(), ValueUBound = DateTime.Now.Date.AddDays(1).AddTicks(-1).ToString(), DateKind = Data.Models.Query.SQLControllerListFilterField.DateKindEnum.Localized } } }); if (storagedWeather.Any()) { Weather = storagedWeather.FirstOrDefault(); } else { var device = await Utils.GetPositionAsync(); if (device != null) { WeatherHistoryRoot weather = null; try { weather = await DependencyService.Get <IWeatherService>() .GetOneCall(device.Latitude, device.Longitude, Config.ApiKeys.FirstOrDefault(x => x.ConsumerKey == "OpenWeather").ConsumerSecret); } catch (Exception e) { Weather = (await new WeatherController().LocalData.List().ConfigureAwait(false)).LastOrDefault(); } if (weather != null && Weather == null) { Weather = new WeatherModel { Id = Guid.Empty, WeatherJson = JsonConvert.SerializeObject(weather) }; await new WeatherController().LocalData.Modify(Weather); Weather.RaiseFields(); } } } if (Weather != null) { Temperature = new LineChart { Entries = Weather.Main.daily.Select(x => new ChartEntry(x.temp.day) { Label = CastDtToDayOfWeek(x.dt), ValueLabel = x.temp.day.ToString("f0"), Color = SKColor.Parse(GetTemperatureColor(x.temp.day)) }) }; Rain = new LineChart { Entries = Weather.Main.daily.Select(x => new ChartEntry(x.rain) { Label = CastDtToDayOfWeek(x.dt), ValueLabel = x.rain.ToString("f0"), Color = SKColor.Parse("#2389da") }) }; OnPropertyChanged("TempColor"); } }