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); } }
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!"); }
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); }
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"); } } } }