Files
chapter-organizer/Tests/Parsers/TestEntityHandler.cs
T
poprhythmandCursor 4c91db37c2 feat: add CSV import for student event rankings
Let advisors load preference ranks from a converted CSV with fuzzy matching, known aliases, and a parse-preview-save page instead of relying on the ranking editor.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 23:41:13 -04:00

77 lines
2.6 KiB
C#

using System.Collections;
using Core.Entities;
using Core.Models;
using Core.Parsers;
using Core.Utility;
namespace Tests.Parsers;
public static class TestEntityHandler
{
private const string ContentDirectory = @"Parsers\TestInput\";
public static EventDefinition[] GetEvents()
{
var fileInfo = FileUtility.GetContentFile(ContentDirectory, "2024 Event Definitions.csv");
var eventRankingsParser = new EventDefinitionParser(fileInfo);
return eventRankingsParser.Parse();
}
public static FileInfo GetEventOccurrenceNationalsFileInfo()
{
return FileUtility.GetContentFile(ContentDirectory, "2025 TSA Nationals Competition Event Times.txt");
}
public static FileInfo GetEventOccurrenceStateFileInfo()
{
return FileUtility.GetContentFile(ContentDirectory, "2025 TN TSA State Competition Event Times.txt");
}
public static FileInfo GetEventOccurrenceState2024FileInfo()
{
return FileUtility.GetContentFile(ContentDirectory, "2024 TN TSA State Competition Event Times.txt");
}
public static Student[] GetStudents(IList<EventDefinition> events)
{
//var studentEventRankingsCsv = "Student Event Rankings.csv";
var studentEventRankingsCsv = "2024 Student Event Rankings.csv";
var fileInfo = FileUtility.GetContentFile(ContentDirectory, studentEventRankingsCsv);
var eventRankingsParser = new StudentParser(fileInfo);
return eventRankingsParser.Parse();
}
public static Team[] GetTeams(IList<EventDefinition> events, IList<Student> students)
{
//var studentEventRankingsCsv = "Student Event Rankings.csv";
var studentEventRankingsCsv = "2024 Teams.csv";
var fileInfo = FileUtility.GetContentFile(ContentDirectory, studentEventRankingsCsv);
var eventRankingsParser = new TeamParser(fileInfo);
var teams = eventRankingsParser.Parse(events, students);
foreach (var student in students)
{
student.Teams = teams.Where(t => t.Students.Contains(student)).ToList();
}
return teams;
}
public static AssignmentRequirement[] GetEventRequirements(IList<EventDefinition> events, IList<Student> students)
{
var fileInfo = FileUtility.GetContentFile(ContentDirectory, "2025 Assumptions.csv");
var assumptionParser = new AssignmentRequirementParser(fileInfo);
return assumptionParser.Parse(events, students);
}
public static StudentEventRanking[] GetStudentEventRankings(Student[] students, EventDefinition[] events)
{
var fileInfo = FileUtility.GetContentFile(ContentDirectory, "2024 Student Event Rankings.csv");
using var rankingParser = new StudentEventRankingParser(fileInfo);
return [.. rankingParser.Parse(students, events).Rankings];
}
}