diff --git a/src/Koogle.Infrastructure/Data/DemoSeeder.cs b/src/Koogle.Infrastructure/Data/DemoSeeder.cs index 2308c5c..d6425c6 100644 --- a/src/Koogle.Infrastructure/Data/DemoSeeder.cs +++ b/src/Koogle.Infrastructure/Data/DemoSeeder.cs @@ -179,6 +179,7 @@ public static class DemoSeeder { // Order matters due to FK constraints - delete children first await db.Database.ExecuteSqlAsync($"DELETE FROM app.PersonExpenses WHERE ClubId = {clubId}"); + await db.Database.ExecuteSqlAsync($"DELETE FROM app.PlayerGameStatistics WHERE ClubId = {clubId}"); await db.Database.ExecuteSqlAsync($"DELETE FROM app.GamePersons WHERE ClubId = {clubId}"); await db.Database.ExecuteSqlAsync($"DELETE FROM app.Games WHERE ClubId = {clubId}"); await db.Database.ExecuteSqlAsync($"DELETE FROM app.DayPersons WHERE ClubId = {clubId}"); diff --git a/src/Koogle.Infrastructure/Services/DemoResetService.cs b/src/Koogle.Infrastructure/Services/DemoResetService.cs index 28d958b..26425a4 100644 --- a/src/Koogle.Infrastructure/Services/DemoResetService.cs +++ b/src/Koogle.Infrastructure/Services/DemoResetService.cs @@ -51,10 +51,10 @@ public class DemoResetService : IDemoResetService var demoEnabled = _config.GetValue("Bootstrap:Demo:Enabled"); if (!demoEnabled) return null; - var demoClubName = _config["Bootstrap:Demo:ClubName"] ?? "demo"; + var demoClubName = _config["Bootstrap:Demo:ClubName"] ?? "Demo Club"; var club = _db.Clubs .AsNoTracking() - .FirstOrDefault(c => c.LoginName == demoClubName && !c.IsDeleted); + .FirstOrDefault(c => c.Name == demoClubName && !c.IsDeleted); _demoClubId = club?.Id; return _demoClubId; diff --git a/src/Koogle.Web/Components/Pages/Admin/GifQrCodeDialog.razor b/src/Koogle.Web/Components/Pages/Admin/GifQrCodeDialog.razor index c772279..24f6f6a 100644 --- a/src/Koogle.Web/Components/Pages/Admin/GifQrCodeDialog.razor +++ b/src/Koogle.Web/Components/Pages/Admin/GifQrCodeDialog.razor @@ -2,6 +2,7 @@ @using QRCoder @inject NavigationManager Navigation +@inject IJSRuntime JSRuntime @@ -68,10 +69,17 @@ _qrCodeDataUrl = $"data:image/png;base64,{Convert.ToBase64String(qrCodeBytes)}"; } - private void CopyToClipboard() + private async Task CopyToClipboard() { - // Note: Full clipboard support requires JS interop - Snackbar.Add("Link in Zwischenablage kopiert (manuelle Kopie erforderlich)", Severity.Info); + try + { + await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", _fullUrl); + Snackbar.Add("Link in Zwischenablage kopiert (manuelle Kopie erforderlich)", Severity.Success); + } + catch (Exception ex) + { + Snackbar.Add($"Failed to copy to clipboard: {ex.Message}", Severity.Error); + } } private void Close() => MudDialog.Close(); diff --git a/src/Koogle.Web/wwwroot/club-media/demo/gifs/44f5bc11-8471-4ca9-b764-58e3929d1215.gif b/src/Koogle.Web/wwwroot/club-media/demo/gifs/18d9f4f1-1eac-4473-9c70-a8655e2e183c.gif similarity index 100% rename from src/Koogle.Web/wwwroot/club-media/demo/gifs/44f5bc11-8471-4ca9-b764-58e3929d1215.gif rename to src/Koogle.Web/wwwroot/club-media/demo/gifs/18d9f4f1-1eac-4473-9c70-a8655e2e183c.gif diff --git a/src/Koogle.Web/wwwroot/club-media/demo/gifs/297970f3-1bf1-4090-aa5e-d0f5cea42a93.gif b/src/Koogle.Web/wwwroot/club-media/demo/gifs/55b20117-4c27-40dd-a42a-75a08e9d4675.gif similarity index 100% rename from src/Koogle.Web/wwwroot/club-media/demo/gifs/297970f3-1bf1-4090-aa5e-d0f5cea42a93.gif rename to src/Koogle.Web/wwwroot/club-media/demo/gifs/55b20117-4c27-40dd-a42a-75a08e9d4675.gif diff --git a/src/Koogle.Web/wwwroot/club-media/demo/gifs/dd850f8d-9310-4441-81c8-9d3ad51e1b6d.gif b/src/Koogle.Web/wwwroot/club-media/demo/gifs/dd850f8d-9310-4441-81c8-9d3ad51e1b6d.gif new file mode 100644 index 0000000..7f647f7 Binary files /dev/null and b/src/Koogle.Web/wwwroot/club-media/demo/gifs/dd850f8d-9310-4441-81c8-9d3ad51e1b6d.gif differ