@page "/teams/edit" @using Microsoft.EntityFrameworkCore @inject AppDbContext Context @inject NavigationManager NavigationManager Edit Team - TSA Chapter Organizer Edit Team @(Team.ToString()) @if (Team is null) {

Loading...

} else { @foreach (var student in _students.OrderBy(e => e.FirstName)) { @student.Name } Back Save } @code { [SupplyParameterFromQuery] private int Id { get; set; } [SupplyParameterFromForm] private Team? Team { get; set; } private IEnumerable _selectedStudents = new HashSet(); private List _students = []; protected override async Task OnInitializedAsync() { Team ??= await Context.Teams .Include(e => e.Event) .Include(e => e.Students) .FirstOrDefaultAsync(m => m.Id == Id); _students = await Context.Students.ToListAsync(); foreach (var s in Team.Students) { ((HashSet)_selectedStudents).Add(s); } if (Team is null) { NavigationManager.NavigateTo("notfound"); } switch (Team!.Event.EventFormat) { case EventFormat.Individual when Team.Students.Count == 1: Team.Captain ??= Team.Students[0]; Team.Identifier ??= Team.Captain.FirstName; break; } } // 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) { Team.Students.Add(s); } try { await Context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TeamExists(Team!.Id)) { NavigationManager.NavigateTo("notfound"); } else { throw; } } NavigationManager.NavigateTo("/teams"); } private bool TeamExists(int id) { return Context.Teams.Any(e => e.Id == id); } }