/// <summary>
        ///
        /// </summary>
        /// <param name="filePath"></param>
        public void ProccessTimeSeriesData(string filePath, Action <DailyData, long> updateAction)
        {
            if (TimeSeries == null)
            {
                TimeSeries = new List <CountryRegionTimeSeries>();
            }

            using var reader = new StreamReader(filePath);
            using var csv    = new CsvReader(reader, CultureInfo.InvariantCulture);
            csv.Read();
            csv.ReadHeader();

            var records = csv.GetRecords <dynamic>();

            foreach (var record in records)
            {
                var dict          = (IDictionary <string, object>)record;
                var countryRegion = FindCountry((string)dict["Country/Region"]);
                var provinceState = (string)dict["Province/State"];
                var noDateFields  = new string[] { "Province/State", "Country/Region", "Lat", "Long" };

                var timeSeriesItem = FindCountryTimeSeries(countryRegion.Name, provinceState);
                if (timeSeriesItem == null)
                {
                    timeSeriesItem = new CountryRegionTimeSeries
                    {
                        CountryRegion = countryRegion,
                        ProvinceState = provinceState
                    };
                    TimeSeries.Add(timeSeriesItem);
                }

                foreach (var item in dict)
                {
                    if (!noDateFields.Contains(item.Key))
                    {
                        var date      = Convert.ToDateTime(item.Key, dateFormat);
                        var value     = Convert.ToInt64(item.Value, numberFormat);
                        var dailyData = timeSeriesItem.TimeSeries.Where(t => t.Date == date).FirstOrDefault();
                        if (dailyData == null)
                        {
                            dailyData = new DailyData()
                            {
                                Date = Convert.ToDateTime(item.Key, dateFormat),
                            };
                            timeSeriesItem.TimeSeries.Add(dailyData);
                        }
                        updateAction?.Invoke(dailyData, value);
                    }
                }
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="data"></param>
 /// <param name="value"></param>
 public void UpdateDeaths(DailyData data, long value) => data.Deaths = value;
 /// <summary>
 ///
 /// </summary>
 /// <param name="data"></param>
 /// <param name="value"></param>
 public void UpdateRecovered(DailyData data, long value) => data.Recovered = value;
 /// <summary>
 ///
 /// </summary>
 /// <param name="data"></param>
 /// <param name="value"></param>
 public void UpdateConfirmed(DailyData data, long value) => data.Confirmed = value;