public TodayWeatherDetailViewModel(FiveDaysWeatherData data)
        {
            var timeStr  = data.dt_txt;
            var timeDate = timeStr.ToViDate3();

            Time = timeDate.Value.ToViHour3();
            Temp = Math.Round(data.temp);
            Icon = data.icon;
        }
        public async Task <string> GetFiveDaysWeatherApi(string city = "Hanoi")
        {
            using (var client = new HttpClient())
            {
                var uriString = ApiSettings.FiveDaysWeatherForecastApiHostUrl;
                client.BaseAddress = new Uri(uriString);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.ConnectionClose = false;
                client.Timeout = TimeSpan.FromMinutes(5);
                client.DefaultRequestHeaders.Accept.Add(
                    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                try
                {
                    HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(string.Empty),
                                                                Encoding.UTF8,
                                                                "application/json");

                    var apiKey     = ApiSettings.OpenWeatherApiKey;
                    var requestUri = $"{uriString}{city}&units=metric&appid={apiKey}";

                    var response = await client.GetAsync(requestUri);

                    response.EnsureSuccessStatusCode();
                    var result = await response.Content.ReadAsStringAsync();

                    var apiResult = JsonConvert.DeserializeObject <FiveDaysWeatherForecastApiResult>(result);

                    var list = apiResult.list;

                    var cityName = "";
                    cityName = apiResult.city.name;
                    var lonStr     = apiResult.city.coord.lon;
                    var latStr     = apiResult.city.coord.lat;
                    var countryStr = apiResult.city.country;

                    foreach (var item in list)
                    {
                        var dtUTC = "";
                        dtUTC = item.dt;

                        var dt_txtStr = item.dt_txt;

                        var fiveDaysWeatherData = _context.FiveDaysWeathers.FirstOrDefault(m => m.dt == dtUTC && m.name == cityName && m.lon == lonStr && m.lat == latStr && m.dt_txt == dt_txtStr);

                        if (fiveDaysWeatherData == null)
                        {
                            fiveDaysWeatherData = new FiveDaysWeatherData()
                            {
                                dt   = dtUTC,
                                name = cityName,

                                lon         = lonStr,
                                lat         = latStr,
                                description = item.weather[0].description,
                                icon        = item.weather[0].icon,

                                temp       = item.main.temp,
                                feels_like = item.main.feels_like,
                                temp_min   = item.main.temp_min,
                                temp_max   = item.main.temp_max,
                                pressure   = item.main.pressure,
                                humidity   = item.main.humidity,

                                country = countryStr,

                                dt_txt       = dt_txtStr,
                                DateCreated  = DateTime.Now,
                                DateModified = DateTime.Now
                            };

                            await _context.FiveDaysWeathers.AddAsync(fiveDaysWeatherData);

                            await _context.SaveChangesAsync();

                            _logger.LogInformation($"GetFiveDaysWeatherApi --> add FiveDaysWeather {fiveDaysWeatherData.Id}");
                        }
                        else
                        {
                            fiveDaysWeatherData.description = item.weather[0].description;
                            fiveDaysWeatherData.icon        = item.weather[0].icon;

                            fiveDaysWeatherData.temp       = item.main.temp;
                            fiveDaysWeatherData.feels_like = item.main.feels_like;
                            fiveDaysWeatherData.temp_min   = item.main.temp_min;
                            fiveDaysWeatherData.temp_max   = item.main.temp_max;
                            fiveDaysWeatherData.pressure   = item.main.pressure;
                            fiveDaysWeatherData.humidity   = item.main.humidity;

                            fiveDaysWeatherData.DateModified = DateTime.Now;

                            await _context.SaveChangesAsync();

                            _logger.LogInformation($"GetFiveDaysWeatherApi --> update FiveDaysWeather {fiveDaysWeatherData.Id}");
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError($"GetFiveDaysWeatherApi --> Error: {ex.Message}");
                }
            }

            return("Success");
        }