Improve team identifier handling
This commit is contained in:
@@ -20,28 +20,15 @@ else
|
||||
<MudGrid>
|
||||
<MudItem xs="12" sm="7">
|
||||
<MudPaper Class="pa-4">
|
||||
<MudSelect
|
||||
T="Student"
|
||||
MultiSelection="true"
|
||||
@bind-SelectedValues="@_selectedStudents"
|
||||
ToStringFunc="e => e.Name"
|
||||
Label="Students">
|
||||
|
||||
@foreach (var student in _students.OrderBy(e => e.FirstName))
|
||||
{
|
||||
<MudSelectItem T="Student" Value="@student">@student.Name</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
<MudStack>
|
||||
<MudText>Captain</MudText>
|
||||
<MudToggleGroup T="Student" SelectionMode="SelectionMode.ToggleSelection" @bind-Value="Team.Captain" CheckMark>
|
||||
@foreach (var student in _selectedStudents.OrderBy(e => e.FirstName))
|
||||
{
|
||||
<MudToggleItem Value="@(student)" Text="@student.Name" />
|
||||
}
|
||||
</MudToggleGroup>
|
||||
<StudentToggleSelector Students="@_students"
|
||||
@bind-SelectedStudents="_selectedStudents"
|
||||
Title="Students"
|
||||
ShowFullName="true" />
|
||||
<MudStack Class="mt-4">
|
||||
<TeamCaptainSelector Students="@_selectedStudents"
|
||||
@bind-SelectedCaptain="Team.Captain"
|
||||
Title="Captain" />
|
||||
</MudStack>
|
||||
<MudTextField T="string?" Label="Identifier" @bind-Value="Team.Identifier" For="@(() => Team.Identifier)" Required="false" Clearable="true"></MudTextField>
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
</MudGrid>
|
||||
@@ -57,7 +44,7 @@ else
|
||||
[SupplyParameterFromForm]
|
||||
private Team? Team { get; set; }
|
||||
|
||||
private IEnumerable<Student> _selectedStudents = new HashSet<Student>();
|
||||
private IEnumerable<Student> _selectedStudents = [];
|
||||
private List<Student> _students = [];
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
@@ -67,10 +54,7 @@ else
|
||||
.Include(e => e.Students)
|
||||
.FirstOrDefaultAsync(m => m.Id == Id);
|
||||
_students = await Context.Students.ToListAsync();
|
||||
foreach (var s in Team.Students)
|
||||
{
|
||||
((HashSet<Student>)_selectedStudents).Add(s);
|
||||
}
|
||||
_selectedStudents = Team.Students.ToList();
|
||||
|
||||
if (Team is null)
|
||||
{
|
||||
@@ -89,7 +73,7 @@ else
|
||||
// To protect from overposting attacks, enable the specific properties you want to bind to.
|
||||
// For more information, see https://learn.microsoft.com/aspnet/core/blazor/forms/#mitigate-overposting-attacks.
|
||||
private async Task UpdateTeam()
|
||||
{
|
||||
{
|
||||
//Context.Attach(Team!).Entity = EntityState.Modified;
|
||||
Team.Students.Clear();
|
||||
foreach (var s in _selectedStudents)
|
||||
@@ -97,6 +81,13 @@ else
|
||||
Team.Students.Add(s);
|
||||
}
|
||||
|
||||
// Update identifier for individual events
|
||||
if (Team.Event.EventFormat == EventFormat.Individual && Team.Students.Count == 1)
|
||||
{
|
||||
Team.Captain ??= Team.Students[0];
|
||||
Team.Identifier = Team.Captain.FirstName;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await Context.SaveChangesAsync();
|
||||
|
||||
Reference in New Issue
Block a user