fix change default club:

Der Fix teilt die Operation in zwei Schritte:
  1. Alle IsDefault auf false → SaveChanges
  2. Neuen Default auf true → SaveChanges

  Das verhindert, dass EF Core temporär zwei IsDefault = true Einträge hat, was den Filtered Unique Index verletzen würde.
This commit is contained in:
beo3000 2026-01-07 22:19:18 +01:00
parent cd98df5a23
commit 7aa49f8271
2 changed files with 18 additions and 10 deletions

View File

@ -316,13 +316,18 @@ public class UserService : IUserService
// Update default club if specified
if (dto.DefaultClubId.HasValue)
{
var memberships = await _appDb.UserProfileClubs
.Where(upc => upc.UserProfileId == profile.Id)
.ToListAsync(ct);
foreach (var m in memberships)
// First: clear all defaults (to avoid unique index violation)
foreach (var m in profile.Clubs)
{
m.IsDefault = m.ClubId == dto.DefaultClubId.Value;
m.IsDefault = false;
}
await _appDb.SaveChangesAsync(ct);
// Then: set the new default
var newDefault = profile.Clubs.FirstOrDefault(m => m.ClubId == dto.DefaultClubId.Value);
if (newDefault != null)
{
newDefault.IsDefault = true;
}
}

View File

@ -50,10 +50,13 @@
Filtern
</MudButton>
<MudSpacer />
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add"
OnClick="OpenCreateDialog">
Neuer Spieltag
</MudButton>
@if (AuthState.Value.IsClubEditor || AuthState.Value.IsClubTreasurer || AuthState.Value.IsClubAdmin || AuthState.Value.IsSuperAdmin)
{
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add"
OnClick="OpenCreateDialog">
Neuer Spieltag
</MudButton>
}
</ToolBarContent>
<HeaderContent>
<MudTh><MudTableSortLabel SortBy="new Func<DaySummaryDto, object>(x => x.PostDate)">Datum</MudTableSortLabel></MudTh>