Add Blazor WebApp and rework data handling to utilize Entity Framework

This commit is contained in:
2025-09-11 11:49:48 -04:00
parent 5220e61c79
commit 3daa3b81b3
111 changed files with 6039 additions and 946 deletions
+29 -29
View File
@@ -1,13 +1,13 @@
@using System.Text.RegularExpressions
@using Core.Entities
@using Core.Utility
@model Tuple<Team[], Student[], IDictionary<CompetitiveEvent, List<EventOccurrence>>>
@model Tuple<Team[], Student[], IDictionary<EventDefinition, List<EventOccurrence>>>
@{
ViewData["Title"] = "Teams";
var eventOccurrences = Model.Item3;
}
<div class="container nobrk pt-5">
<h2>State Events</h2>
<h2>State EventDefinitions</h2>
<table class="table">
<thead>
<tr>
@@ -21,7 +21,7 @@
@foreach (var team in Model.Item1)
{
var students = team.Students;
@if (true @* team.Event.Format == EventFormat.Team *@)
@if (true @* team.EventDefinition.EventDefinitionFormat == EventDefinitionEventDefinitionFormat.Team *@)
{
<tr>
<td>
@@ -47,32 +47,32 @@
}
</td>
<td>
@if (team.Event.StatePresubmission)
@if (team.EventDefinition.StatePresubmission)
{
<text>Pre-submission due Friday, March 14</text>
}
@if (team.Event.StatePretesting)
@if (team.EventDefinition.StatePretesting)
{
<text>Pre-testing Wednesday, April 2nd</text>
}
@if (team.Event.StatePreliminaryRound)
@if (team.EventDefinition.StatePreliminaryRound)
{
<text>Preliminary and Semifinalist Rounds</text>
}
</td>
<td>
@team.Event.Documentation
@team.EventDefinition.Documentation
</td>
</tr>
}
@* else if (team.Event.Format == EventFormat.Individual)
@* else if (team.EventDefinition.EventDefinitionFormat == EventDefinitionEventDefinitionFormat.Individual)
{
foreach (var student in students)
{
<tr>
<td>
@team.Event.Name - @student.FirstNameLastName (@student.RegionalID)
@team.EventDefinition.Name - @student.FirstNameLastName (@student.RegionalID)
</td>
<td>@team.RegionalTimeSlot</td>
<td></td>
@@ -93,14 +93,14 @@
<h3>@student.FirstNameLastName - @student.StateID</h3>
<h4>TSA 2025 TN State Schedule</h4>
<div class="row">
<div class="col col-2">Events</div>
<div class="col col-2">EventDefinitions</div>
<div class="col">
@foreach (var ev in student.Teams)
{
<div class="row">
<div class="col col-2">
@if (ev.Event.Format is EventFormat.Team)
@if (ev.EventDefinition.EventFormat is EventFormat.Team)
{
@ev.TeamNumber
}
@@ -118,7 +118,7 @@
</text>
</div>
<div class="col-6">
@ev.Event.SemifinalistActivity
@ev.EventDefinition.SemifinalistActivity
</div>
</div>
}
@@ -128,7 +128,7 @@
<thead>
<tr>
<td>Time</td>
<td>Event</td>
<td>EventDefinition</td>
<td></td>
<td>Location</td>
</tr>
@@ -137,9 +137,9 @@
@foreach (var date in
eventOccurrences
.Where(eo =>
student.Teams.Select(t => t.Event).Any(a => a == eo.Key)
|| eo.Key == CompetitiveEvent.GeneralSchedule
|| (eo.Key == CompetitiveEvent.VotingDelegates && student.VotingDelegate))
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)
@@ -152,8 +152,8 @@
// filter out occurrences where non-captain
.Where(de =>
!de.Item1.SignupSubmitPickup
|| de.Item2.Format is EventFormat.Individual
|| student.Teams.Any(t => t.Captain == student && t.Event == de.Item2)
|| de.Item2.EventFormat is EventFormat.Individual
|| student.Teams.Any(t => t.Captain == student && t.EventDefinition == de.Item2)
)
.OrderBy(de => de.Item1.StartTime);
@@ -169,7 +169,7 @@
<td>@eventOccurrence.Item1.Time</td>
<td>@eventOccurrence.Item2.Name</td>
<td>@eventOccurrence.Item1.Name
@if (eventOccurrence.Item1.Name.Contains("Pick") && eventOccurrence.Item2.Format is EventFormat.Team)
@if (eventOccurrence.Item1.Name.Contains("Pick") && eventOccurrence.Item2.EventFormat is EventFormat.Team)
{
<br/>
<text>or coordinate with a teammate</text>
@@ -210,17 +210,17 @@
<tr><td colspan="4"><strong>@eventsForDate.Key.ToString("MMMM d") </strong> </td></tr>
@foreach (var occurrence in eventsForDate.OrderBy(o => o.Item1.StartTime))
{
var teams = Model.Item1.Where(t => t.Event == occurrence.Item2);
if (occurrence.Item2 != CompetitiveEvent.GeneralSchedule && occurrence.Item2 != CompetitiveEvent.VotingDelegates && !teams.Any())
var teams = Model.Item1.Where(t => t.EventDefinition == occurrence.Item2);
if (occurrence.Item2 != EventDefinition.GeneralSchedule && occurrence.Item2 != EventDefinition.VotingDelegates && !teams.Any())
continue;
<tr>
<td>@occurrence.Item1.Time</td>
<td>
@if (occurrence.Item2 == CompetitiveEvent.GeneralSchedule)
@if (occurrence.Item2 == EventDefinition.GeneralSchedule)
{
<text>Everyone</text>
}
else if (occurrence.Item2 == CompetitiveEvent.VotingDelegates)
else if (occurrence.Item2 == EventDefinition.VotingDelegates)
{
<text>Voting Delegates - @string.Join(", ", Model.Item2.Where(stu => stu.VotingDelegate).Select(stu => stu.FirstName))</text>
}
@@ -287,7 +287,7 @@
@foreach (var t in assignments)
{
<td>
@if (t.Event.Format != EventFormat.Individual)
@if (t.EventDefinition.EventFormat != EventFormat.Individual)
{
@t.Name
@if (t.Captain == student)
@@ -297,14 +297,14 @@
}
else
{
@t.Event.Name
@t.EventDefinition.Name
}
@{
if (t.Event.Format == EventFormat.Individual)
if (t.EventDefinition.EventFormat == EventFormat.Individual)
{
<sup class="activity">(ind)</sup>
}
if (t.Event.OnSiteActivity)
if (t.EventDefinition.OnSiteActivity)
{
<sup class="activity">(act)</sup>
}
@@ -340,7 +340,7 @@
@foreach (var t in assignments)
{
<p>
@if (t.Event.Format != EventFormat.Individual)
@if (t.EventDefinition.EventFormat != EventFormat.Individual)
{
@t.Name
@if (t.Captain == student)
@@ -350,7 +350,7 @@
}
else
{
@t.Event.Name
@t.EventDefinition.Name
}
</p>
}