feat: add optional student nickname for informal display

Keep legal first and last names for formal lists; show DisplayFirstName on teams, calendars, and import matching so two Josiahs can be told apart.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-12 00:06:33 -04:00
co-authored by Cursor
parent c03ffc0833
commit 29101e2ead
35 changed files with 516 additions and 41 deletions
@@ -8,7 +8,7 @@
Value="@SelectedCaptain"
ValueChanged="@OnSelectedCaptainChanged"
CheckMark>
@foreach (var student in Students.OrderBy(e => e.FirstName))
@foreach (var student in Students.OrderBy(e => e.DisplayFirstName))
{
<MudToggleItem Value="@student" Text="@student.Name" />
}
@@ -164,7 +164,7 @@
{
// For individual events, use student's first name as identifier
var student = _selectedStudents.First();
Team.Identifier = student.FirstName;
Team.Identifier = student.DisplayFirstName;
Team.Captain = student;
}
else if (existingTeamCount == 1)
+2 -2
View File
@@ -88,7 +88,7 @@
{
case EventFormat.Individual when Team.Students.Count == 1:
Team.Captain ??= Team.Students[0];
Team.Identifier ??= Team.Captain.FirstName;
Team.Identifier ??= Team.Captain.DisplayFirstName;
break;
case EventFormat.Team:
break;
@@ -134,7 +134,7 @@
if (Team is { Event.EventFormat: EventFormat.Individual, Students.Count: 1 })
{
Team.Captain ??= Team.Students[0];
Team.Identifier = Team.Captain.FirstName;
Team.Identifier = Team.Captain.DisplayFirstName;
}
try
+1 -1
View File
@@ -72,7 +72,7 @@ else
.ThenInclude(e => e.Event)
.Include(e => e.Teams)
.ThenInclude(e => e.Students)
.OrderBy(e => e.FirstName)
.OrderBy(e => e.Nickname ?? e.FirstName)
.ToArrayAsync();
}
}
@@ -124,6 +124,6 @@ else
.ThenInclude(e => e.Captain)
.Include(e => e.EventRankings)
.ThenInclude(e => e.EventDefinition)
.OrderBy(e => e.FirstName).ToArrayAsync();
.OrderBy(e => e.Nickname ?? e.FirstName).ToArrayAsync();
}
}