using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using TrackerLibrary.Models; namespace TrackerLibrary.DataAccess.TextHelpers { public static class TextConnectorProcessor { public static string FullFilePath(this string fileName) // PrizeModel.csv { return $"{ConfigurationManager.AppSettings["filePath"]}\\{fileName}"; } public static List LoadFile(this string file) { if (!File.Exists(file)) { return new List(); } return File.ReadAllLines(file).ToList(); } public static List ConvertToPrizeModels(this List lines) { List output = new List(); foreach (string line in lines) { string[] cols = line.Split(','); PrizeModel p = new PrizeModel(); p.Id = int.Parse(cols[0]); p.PlaceNumber = int.Parse(cols[1]); p.PlaceName = cols[2]; p.PrizeAmount = decimal.Parse(cols[3]); p.PrizePercentage = double.Parse(cols[4]); output.Add(p); } return output; } public static List ConvertToPersonModels(this List lines) { List output = new List(); foreach(string line in lines) { string[] cols = line.Split(','); PersonModel p = new PersonModel(); p.Id = int.Parse(cols[0]); p.FirstName = cols[1]; p.LastName = cols[2]; p.EmailAddress = cols[3]; p.CellPhoneNumber = cols[4]; output.Add(p); } return output; } public static List ConvertToTeamModels(this List lines, string peopleFileName) { // id, team name,list of ids separated by pipe // 3,Start Team, 1|4 List output = new List(); List people = peopleFileName.FullFilePath().LoadFile().ConvertToPersonModels(); foreach (string line in lines) { string[] cols = line.Split(','); TeamModel t = new TeamModel(); t.Id = int.Parse(cols[0]); t.TeamName = cols[1]; string[] personIds = cols[2].Split('|'); foreach(string id in personIds) { t.TeamMembers.Add(people.Where(x => x.Id == int.Parse(id)).First()); } output.Add(t); } return output; } public static void SaveToPrizeFile(this List models, string fileName) { List lines = new List(); foreach (PrizeModel p in models) { lines.Add($"{p.Id},{p.PlaceNumber},{p.PlaceName}, {p.PrizeAmount}, {p.PrizePercentage}"); } File.WriteAllLines(fileName.FullFilePath(), lines); } public static void SaveToPeopleFile(this List models, string fileName) { List lines = new List(); foreach(PersonModel p in models) { lines.Add($"{p.Id},{p.FirstName},{p.LastName},{p.EmailAddress},{p.CellPhoneNumber}"); } File.WriteAllLines(fileName.FullFilePath(), lines); } public static void SaveToTeamFile(this List models, string fileName) { List lines = new List(); foreach(TeamModel t in models) { lines.Add($"{t.Id},{t.TeamName},{ConvertPeopleListToString(t.TeamMembers)}"); } File.WriteAllLines(fileName.FullFilePath(), lines); } private static string ConvertPeopleListToString(List people) { string output = ""; if (people.Count==0) { return ""; } foreach(PersonModel p in people) { output += $"{p.Id}|"; } output = output.Substring(0, output.Length - 1); return output; } } }