Exemplo n.º 1
0
        private static string CreateDirForResult(EpidemicType epidemicType, string dir)
        {
            if (!string.Equals(dir.LastOrDefault(), Path.DirectorySeparatorChar))
            {
                dir += Path.DirectorySeparatorChar;
            }
            switch (epidemicType)
            {
            case EpidemicType.Province:
                dir += ("Province" + Path.DirectorySeparatorChar);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                return(dir);

            case EpidemicType.City:
                dir += ("City" + Path.DirectorySeparatorChar);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                return(dir);

            default:
                return(null);
            }
        }
Exemplo n.º 2
0
        private static void GetEpidmicResult(EpidemicType epidemicType, string historyDataPath, string outDir)
        {
            var epidemicList    = Utils.GetEpidemicData(epidemicType, historyDataPath);
            var newEpidemicList = Utils.OrberByConfirmedCount(epidemicList);

            Utils.GenerateTxtFile(newEpidemicList, epidemicType, outDir);
            Console.WriteLine("Generate txt file successfully!");
        }
Exemplo n.º 3
0
        public static List <Epidemic> GetEpidemicData(EpidemicType epidemicType, string jsonFile)
        {
            var jsonContent = File.ReadAllText(jsonFile);
            var jObject     = JObject.Parse(jsonContent);

            if (epidemicType == EpidemicType.Province)
            {
                return(GetTotalProvinceEpidemic(jObject));
            }
            if (epidemicType == EpidemicType.City)
            {
                return(GetTotalCityEpidemic(jObject));
            }
            return(null);
        }
Exemplo n.º 4
0
        public static void GenerateTxtFile(List <Epidemic> epidemicList, EpidemicType epidemicType, string directory)
        {
            if (epidemicList is null || epidemicList.Count == 0)
            {
                Console.Write("No Data! \r\n");
                return;
            }
            // Total days
            var startDate = DateTime.Parse("2020-01-15");
            var endDate   = GetLastDate(epidemicList);
            var days      = endDate - startDate;

            // Generate statistics data for each day
            for (int i = 0; i <= days.Days; i++)
            {
                // Date increment
                var date = startDate + TimeSpan.FromDays(i);
                Console.WriteLine(date.ToString("yyyy-MM-dd"));
                // Statistics data list for the day
                var dailyEpidemicList = epidemicList.Where(p => p.DateTime.Month == date.Month && p.DateTime.Day == date.Day).ToList();
                // Order by ConfirmedCount
                var dailyEpidemicList_2 = Utils.OrberByConfirmedCount(dailyEpidemicList);
                if (epidemicType == EpidemicType.Province)
                {
                    // Create province result file
                    var dir  = CreateDirForResult(EpidemicType.Province, directory);
                    var path = dir + $"Epidemic_Province_{date.ToString("yyyy_MM_dd")}.txt";
                    // Write title
                    File.WriteAllText(path, "ID,ProvinceName,ConfirmedCount,DeadCount,CuredCount \r\n");
                    Console.WriteLine("ID,ProvinceName,ConfirmedCount,DeadCount,CuredCount \r\n");
                    // Write data
                    for (int k = 0; k < dailyEpidemicList_2.Count; k++)
                    {
                        var province = dailyEpidemicList_2[k] as ProvinceEpidemic;
                        File.AppendAllText(path, $"{province.ID},{province.ProvinceName},{province.ConfirmedCount}," +
                                           $"{province.DeadCount},{province.CuredCount} \r\n");
                        Console.WriteLine($"{province.ID},{province.ProvinceName},{province.ConfirmedCount}," +
                                          $"{province.DeadCount},{province.CuredCount} \r\n");
                    }
                }

                if (epidemicType == EpidemicType.City)
                {
                    // Create city result file
                    var dir  = CreateDirForResult(EpidemicType.City, directory);
                    var path = dir + $"Epidemic_City_{date.ToString("yyyy_MM_dd")}.txt";
                    // Write title
                    File.WriteAllText(path, "ID,ProvinceName,CityName,FullCityName,ConfirmedCount,DeadCount,CuredCount \r\n");
                    Console.WriteLine("ID,ProvinceName,CityName,FullCityName,ConfirmedCount,DeadCount,CuredCount \r\n");
                    // Write data
                    for (int k = 0; k < dailyEpidemicList_2.Count; k++)
                    {
                        var city = dailyEpidemicList_2[k] as CityEpidemic;
                        File.AppendAllText(path, $"{city.ID},{city.ProvinceName},{city.CityName},{city.ProvinceName + city.CityName},{city.ConfirmedCount}," +
                                           $"{city.DeadCount} {city.CuredCount} \r\n");
                        Console.WriteLine($"{city.ID},{city.ProvinceName},{city.CityName},{city.ProvinceName + city.CityName},{city.ConfirmedCount}," +
                                          $"{city.DeadCount},{city.CuredCount} \r\n");
                    }
                }
            }
        }