Esempio n. 1
0
        public Dictionary <string, State> Read(DateTime?onOrAfter = null)
        {
            string filename = _dataSetRetriever.GetFilename();

            try
            {
                var results = new List <CovidRow>();

                using var file = new StreamReader(filename);
                string line = file.ReadLine();

                while ((line = file.ReadLine()) != null)
                {
                    var row = CovidRow.FromCsv(line);

                    if (onOrAfter.HasValue)
                    {
                        bool check = row.Date.Date < onOrAfter.Value.Date;
                        if (check)
                        {
                            continue;
                        }
                    }

                    results.Add(row);
                }

                var states = new Dictionary <string, State>();

                foreach (var record in results)
                {
                    bool exists = states.TryGetValue(record.State, out var counties);
                    if (exists)
                    {
                        State state = states[record.State];

                        bool cExists = state.Counties.Exists(x => x.Fips == record.Fips);
                        if (cExists)
                        {
                            var c = state.Counties.Single(x => x.Fips == record.Fips);
                            c.Records.Add(new CovidDay {
                                Date = record.Date, Cases = record.Cases, Deaths = record.Deaths
                            });
                        }
                        else
                        {
                            var county = new County {
                                CountyName = record.County, Fips = record.Fips
                            };
                            county.Records.Add(new CovidDay {
                                Date = record.Date, Cases = record.Cases, Deaths = record.Deaths
                            });

                            state.Counties.Add(county);
                        }
                    }
                    else
                    {
                        var county = new County {
                            CountyName = record.County, Fips = record.Fips
                        };
                        county.Records.Add(new CovidDay {
                            Date = record.Date, Cases = record.Cases, Deaths = record.Deaths
                        });

                        var state = new State {
                            StateName = record.State
                        };
                        state.Counties.Add(county);

                        states.Add(record.State, state);
                    }
                }

                return(states);
            }
            finally
            {
                try
                {
                    Console.WriteLine("Deleting file...");
                    File.Delete(filename);
                    Console.WriteLine("Deleted file.");
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Error deleting file. Message={e.Message}");
                }
            }
        }