@using System.Text.RegularExpressions @using Core.Entities @using Core.Utility @model Tuple>> @{ ViewData["Title"] = "Teams"; var eventOccurrences = Model.Item3; }

State EventDefinitions

@foreach (var team in Model.Item1) { var students = team.Students; @if (true @* team.EventDefinition.EventDefinitionFormat == EventDefinitionEventDefinitionFormat.Team *@) { } @* else if (team.EventDefinition.EventDefinitionFormat == EventDefinitionEventDefinitionFormat.Individual) { foreach (var student in students) { } } *@ }
Team Team Members Dates Materials
@* @team.Name *@ @team.Name @* #@team.TeamNumber *@ @{ var first = true; } @foreach (var student in students.OrderByDescending(s => (s.Grade + s.TsaYear) * (team.Captain == s ? 2 : 1)).ThenBy(s => s.FirstNameLastName)) { @if (!first) { , } first = false; @student.FirstNameLastName @if (team.Captain == student) { (Cpt. @team.Captain.StateID) } } @if (team.EventDefinition.StatePresubmission) { Pre-submission due Friday, March 14 } @if (team.EventDefinition.StatePretesting) { Pre-testing Wednesday, April 2nd } @if (team.EventDefinition.StatePreliminaryRound) { Preliminary and Semifinalist Rounds } @team.EventDefinition.Documentation
@team.EventDefinition.Name - @student.FirstNameLastName (@student.RegionalID) @team.RegionalTimeSlot
@{ var s = Model.Item2.OrderBy(s => s.LastNameFirstName); @foreach (var student in s) {

@student.FirstNameLastName - @student.StateID

TSA 2025 TN State Schedule

EventDefinitions
@foreach (var ev in student.Teams) {
@if (ev.EventDefinition.EventFormat is EventFormat.Team) { @ev.TeamNumber } else { @ev.Captain.StateID }
@ev.Name @if (ev.Captain == student) { (Cpt.) }
@ev.EventDefinition.SemifinalistActivity
}
@foreach (var date in eventOccurrences .Where(eo => student.Teams.Select(t => t.EventDefinition).Any(a => a == eo.Key) || eo.Key == EventDefinition.GeneralSchedule || (eo.Key == EventDefinition.VotingDelegates && student.VotingDelegate)) .SelectMany(eo => eo.Value.Select(v => Tuple.Create(v, eo.Key))) .GroupBy(de => de.Item1.Date + ", " + de.Item1.StartTime.DayOfWeek) .OrderBy(d => d.Key) ) { var eventsForThisDay = date .Where(de => de.Item1.Name != "Judging") .Where(de => de.Item1.StartTime > new DateTime(2024, 3, 1)) // filter out occurrences where non-captain .Where(de => !de.Item1.SignupSubmitPickup || de.Item2.EventFormat is EventFormat.Individual || student.Teams.Any(t => t.Captain == student && t.EventDefinition == de.Item2) ) .OrderBy(de => de.Item1.StartTime); @if (!eventsForThisDay.Any()) continue; @foreach (var eventOccurrence in eventsForThisDay.OrderBy(de => de.Item1.StartTime)) { } }
Time EventDefinition Location
@date.Key
@eventOccurrence.Item1.Time @eventOccurrence.Item2.Name @eventOccurrence.Item1.Name @if (eventOccurrence.Item1.Name.Contains("Pick") && eventOccurrence.Item2.EventFormat is EventFormat.Team) {
or coordinate with a teammate }
@eventOccurrence.Item1.Location @if (eventOccurrence.Item1.Location == "Online" && eventOccurrence.Item1.Name.Contains("Sign-up") ) { by Advisor}
} } @{

Combined Schedule

@foreach (var eventsForDate in Model.Item3.SelectMany(eo => eo.Value.Select(e => Tuple.Create(e, eo.Key))) .Where(de => de.Item1.Name != "Judging") .GroupBy(eo => eo.Item1.StartTime.Date) .OrderBy(eo => eo.Key) ) { @foreach (var occurrence in eventsForDate.OrderBy(o => o.Item1.StartTime)) { var teams = Model.Item1.Where(t => t.EventDefinition == occurrence.Item2); if (occurrence.Item2 != EventDefinition.GeneralSchedule && occurrence.Item2 != EventDefinition.VotingDelegates && !teams.Any()) continue; } }
Time Team Location
@eventsForDate.Key.ToString("MMMM d")
@occurrence.Item1.Time @if (occurrence.Item2 == EventDefinition.GeneralSchedule) { Everyone } else if (occurrence.Item2 == EventDefinition.VotingDelegates) { Voting Delegates - @string.Join(", ", Model.Item2.Where(stu => stu.VotingDelegate).Select(stu => stu.FirstName)) } @foreach (var team in teams) { @team - @string.Join(", ", team.Students.Select(stu => stu.FirstName)) } @occurrence.Item1.Name @if (occurrence.Item1.SignupSubmitPickup) {
1 Team Member } @if (occurrence.Item1.Name.Contains("Semifinalist") && (occurrence.Item1.Name.Contains("Interview") || occurrence.Item1.Name.Contains("Presentation"))) {
@Regex.Match(@occurrence.Item2.SemifinalistActivity, @"(?<=\().*?(?=\))").Value }
@occurrence.Item1.Location
}

Students

@foreach (var student in Model.Item2.OrderByDescending(s => s.Officer.Contains("President")).ThenBy(s => s.LastNameFirstName)) { var assignments = student.Teams.Where(ea => ea.Students.Contains(student)) .Distinct() .OrderBy(e => e.Name).ToList(); @foreach (var t in assignments) { } }
Student ID
@student.FirstNameLastName @if (!string.IsNullOrEmpty(student.Officer)) { (@student.Officer) } @student.StateID @if (t.EventDefinition.EventFormat != EventFormat.Individual) { @t.Name @if (t.Captain == student) { (Captain) } } else { @t.EventDefinition.Name } @{ if (t.EventDefinition.EventFormat == EventFormat.Individual) { (ind) } if (t.EventDefinition.OnSiteActivity) { (act) } }

Students

@foreach (var student in Model.Item2.OrderByDescending(s => s.Officer.Contains("President")).ThenBy(s => s.LastNameFirstName)) { var assignments = student.Teams.Where(ea => ea.Students.Contains(student)) .Distinct() .OrderBy(e => e.Name).ToList();

@student.FirstNameLastName @if (!string.IsNullOrEmpty(student.Officer)) { (@student.Officer) } @student.StateID

@foreach (var t in assignments) {

@if (t.EventDefinition.EventFormat != EventFormat.Individual) { @t.Name @if (t.Captain == student) { (Captain) } } else { @t.EventDefinition.Name }

} }