first commit

This commit is contained in:
2025-08-01 14:10:44 -04:00
commit cf32cfcbcd
149 changed files with 80416 additions and 0 deletions
+76
View File
@@ -0,0 +1,76 @@
using System.Text.RegularExpressions;
using Core.Entities;
namespace Core.Parsers;
public class EventDefinitionParser : CsvParserBase
{
public EventDefinitionParser(FileSystemInfo csvFile, bool ignoreBlankLines = true) : base(csvFile, ignoreBlankLines)
{
}
public CompetitiveEvent[] Parse()
{
var events = new List<CompetitiveEvent>();
CsvReader.Read();
CsvReader.ReadHeader();
while (CsvReader.Read())
{
var name = CsvReader.GetField("Event");
if (string.IsNullOrEmpty(name))
continue;
var shortName = CsvReader.GetField("Short Name");
Enum.TryParse(CsvReader.GetField("Format"), out EventFormat format);
var teamSize = CsvReader.GetField("Team Size");
if (string.IsNullOrEmpty(teamSize))
throw new ArgumentException(@"Team Size is null for {name}");
var match = Regex.Match(teamSize, @"(\d)(?:\s?to\s?)?(\d)?");
var min = int.Parse(match.Groups[1].Captures[0].Value);
var max = match.Groups[2].Success ? int.Parse(match.Groups[2].Captures[0].Value) : min;
var stateTeams = CsvReader.GetField<int>("State Count");
var semifinalistActivity = CsvReader.GetField("Semifinalist Activity");
var regionalCount = CsvReader.GetField("Regional Count");
var regionalPresubmit = CsvReader.GetField("Regional Presubmission");
var statePresubmission = CsvReader.GetField("State Presubmission");
var statePretesting = CsvReader.GetField("State Pretesting");
var statePreliminary = CsvReader.GetField("State Preliminary Round");
var regionalNotes = CsvReader.GetField("Regional Notes");
var documentation = CsvReader.GetField("Documentation");
var eligibility = CsvReader.GetField("Eligibility");
var theme = CsvReader.GetField("Theme");
var description = CsvReader.GetField("Description");
var levelOfEffort = CsvReader.GetField<int?>("Level of Effort");
//var regionalTeams = CsvReader.GetField<int>("Regional Teams");
var competitiveEvent = new CompetitiveEvent
{
Name = name.Trim(),
ShortName = shortName.Trim(),
Format = format,
MaxTeamCountState = stateTeams,
MinTeamSize = min,
MaxTeamSize = max,
SemifinalistActivity = semifinalistActivity,
RegionalEvent = !string.IsNullOrEmpty(regionalCount),
RegionalPresubmit = regionalPresubmit.Trim() == "TRUE",
RegionalNotes = regionalNotes,
Documentation= documentation,
StatePresubmission = statePresubmission.Trim() == "TRUE",
StatePretesting = statePretesting.Trim() == "TRUE",
StatePreliminaryRound = statePreliminary.Trim() == "TRUE",
Eligibility = eligibility,
Theme = theme,
Description = description,
LevelOfEffort = levelOfEffort
};
events.Add(competitiveEvent);
}
return events.ToArray();
}
}