From 62e58fc9ad6cd153f391045d3b628fbacabb8352 Mon Sep 17 00:00:00 2001 From: MarcWieland Date: Fri, 26 Jun 2026 23:17:08 +0200 Subject: [PATCH] QoL --- test.cs | 3 + timetracker.Server/Fonts/OpenSans-Bold.ttf | Bin 0 -> 147264 bytes timetracker.Server/Fonts/OpenSans-Regular.ttf | Bin 0 -> 147528 bytes timetracker.Server/Program.cs | 126 +++---- .../Services/PdfFontResolver.cs | 41 ++ .../Services/PdfGeneratorService.cs | 357 ++++++++++-------- .../logs/timetracker-20260626.log | 320 ++++++++++++++++ timetracker.Server/timetracker.Server.csproj | 6 +- 8 files changed, 625 insertions(+), 228 deletions(-) create mode 100644 test.cs create mode 100644 timetracker.Server/Fonts/OpenSans-Bold.ttf create mode 100644 timetracker.Server/Fonts/OpenSans-Regular.ttf create mode 100644 timetracker.Server/Services/PdfFontResolver.cs diff --git a/test.cs b/test.cs new file mode 100644 index 0000000..9a18ca9 --- /dev/null +++ b/test.cs @@ -0,0 +1,3 @@ +using System; +using PdfSharp.Fonts; +class Program { static void Main() { Console.WriteLine("Hello"); } } diff --git a/timetracker.Server/Fonts/OpenSans-Bold.ttf b/timetracker.Server/Fonts/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b7fadfa4aa59c43b38f7efd87cd438fab49679ca GIT binary patch literal 147264 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 P*DZObLzDocOV;{7XLP32 literal 0 HcmV?d00001 diff --git a/timetracker.Server/Fonts/OpenSans-Regular.ttf b/timetracker.Server/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8529c432ce34f0bc582e409c420f6bfa6ad0198b GIT binary patch literal 147528 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 z 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 ZJu60E;vtPD?b6uQYUF(fEseif_dgf&dl~=$ literal 0 HcmV?d00001 diff --git a/timetracker.Server/Program.cs b/timetracker.Server/Program.cs index 375366b..7782162 100644 --- a/timetracker.Server/Program.cs +++ b/timetracker.Server/Program.cs @@ -162,8 +162,6 @@ using (var scope = app.Services.CreateScope()) { var factory = scope.ServiceProvider.GetRequiredService>(); await using var db = await factory.CreateDbContextAsync(); - var databaseCreatedFromModel = false; - if (dbProvider.Equals("PostgreSQL", StringComparison.OrdinalIgnoreCase)) { try @@ -174,66 +172,71 @@ using (var scope = app.Services.CreateScope()) await conn.OpenAsync(); } - using (var cmdCheckTables = conn.CreateCommand()) + // Check if AppSettings table already exists + using (var cmdCheck = conn.CreateCommand()) { - cmdCheckTables.CommandText = @" - SELECT COUNT(*) - FROM information_schema.tables - WHERE table_schema = 'public' - AND table_name <> '__EFMigrationsHistory';"; - var existingTableCount = Convert.ToInt32(await cmdCheckTables.ExecuteScalarAsync() ?? 0); - if (existingTableCount == 0) + cmdCheck.CommandText = "SELECT EXISTS (SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'AppSettings');"; + var appSettingsExists = (bool)(await cmdCheck.ExecuteScalarAsync() ?? false); + + if (appSettingsExists) { - await db.Database.EnsureCreatedAsync(); - databaseCreatedFromModel = true; - } - } - - if (!databaseCreatedFromModel) - { - - // Check if AppSettings table already exists - using (var cmdCheck = conn.CreateCommand()) - { - cmdCheck.CommandText = "SELECT EXISTS (SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'AppSettings');"; - var appSettingsExists = (bool)(await cmdCheck.ExecuteScalarAsync() ?? false); - - if (appSettingsExists) + // Ensure __EFMigrationsHistory table exists + using (var cmdCreateHistory = conn.CreateCommand()) { - // Ensure __EFMigrationsHistory table exists - using (var cmdCreateHistory = conn.CreateCommand()) - { - cmdCreateHistory.CommandText = @" - CREATE TABLE IF NOT EXISTS ""__EFMigrationsHistory"" ( - ""MigrationId"" character varying(150) NOT NULL, - ""ProductVersion"" character varying(32) NOT NULL, - CONSTRAINT ""PK___EFMigrationsHistory"" PRIMARY KEY (""MigrationId"") - );"; - await cmdCreateHistory.ExecuteNonQueryAsync(); - } - - // Check if the initial migration is already recorded - using (var cmdCheckHistory = conn.CreateCommand()) - { - cmdCheckHistory.CommandText = @"SELECT COUNT(*) FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260520133634_Initial';"; - var historyCount = Convert.ToInt32(await cmdCheckHistory.ExecuteScalarAsync() ?? 0); - - if (historyCount == 0) - { - // Seed the history table with the migrations that were already created by EnsureCreated in older versions - using (var cmdInsertHistory = conn.CreateCommand()) - { - cmdInsertHistory.CommandText = @" - INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") VALUES - ('20260520133634_Initial', '10.0.9'), - ('20260520200000_AddPublicHolidays', '10.0.9'), - ('20260522081459_AddMultiUser', '10.0.9'), - ('20260607213215_AddFlexTimeAndHolidayState', '10.0.9');"; - await cmdInsertHistory.ExecuteNonQueryAsync(); - } - } - } + cmdCreateHistory.CommandText = @" + CREATE TABLE IF NOT EXISTS ""__EFMigrationsHistory"" ( + ""MigrationId"" character varying(150) NOT NULL, + ""ProductVersion"" character varying(32) NOT NULL, + CONSTRAINT ""PK___EFMigrationsHistory"" PRIMARY KEY (""MigrationId"") + );"; + await cmdCreateHistory.ExecuteNonQueryAsync(); } + + // Seed the history table conditionally for each migration based on actual schema presence + using (var cmdSyncHistory = conn.CreateCommand()) + { + cmdSyncHistory.CommandText = @" + INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") + SELECT '20260520133634_Initial', '10.0.9' + WHERE NOT EXISTS (SELECT 1 FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260520133634_Initial'); + + INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") + SELECT '20260520200000_AddPublicHolidays', '10.0.9' + WHERE NOT EXISTS (SELECT 1 FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260520200000_AddPublicHolidays'); + + INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") + SELECT '20260522081459_AddMultiUser', '10.0.9' + WHERE NOT EXISTS (SELECT 1 FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260522081459_AddMultiUser'); + + INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") + SELECT '20260607213215_AddFlexTimeAndHolidayState', '10.0.9' + WHERE NOT EXISTS (SELECT 1 FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260607213215_AddFlexTimeAndHolidayState'); + + -- Seed AddMultiTenancy only if Tenants table exists + INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") + SELECT '20260624204954_AddMultiTenancy', '10.0.9' + WHERE EXISTS (SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'Tenants') + AND NOT EXISTS (SELECT 1 FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260624204954_AddMultiTenancy'); + + -- Seed AddTenantBranding only if TenantColor column exists + INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") + SELECT '20260624210436_AddTenantBranding', '10.0.9' + WHERE EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'Tenants' AND column_name = 'TenantColor') + AND NOT EXISTS (SELECT 1 FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260624210436_AddTenantBranding'); + + -- Seed PendingChanges only if IsApproved column in VacationDays exists + INSERT INTO ""__EFMigrationsHistory"" (""MigrationId"", ""ProductVersion"") + SELECT '20260625184756_PendingChanges', '10.0.9' + WHERE EXISTS (SELECT FROM information_schema.columns WHERE table_name = 'VacationDays' AND column_name = 'IsApproved') + AND NOT EXISTS (SELECT 1 FROM ""__EFMigrationsHistory"" WHERE ""MigrationId"" = '20260625184756_PendingChanges'); + "; + await cmdSyncHistory.ExecuteNonQueryAsync(); + } + } + else + { + // DB is empty, MigrateAsync will create everything. We don't need to patch types later if it was purely MigrateAsync... + // Wait, SQLite migrations might still create broken defaults on MigrateAsync. We keep EnsurePostgresIntegerPrimaryKeyDefaultAsync below. } } } @@ -243,12 +246,9 @@ using (var scope = app.Services.CreateScope()) } } - if (!databaseCreatedFromModel) - { - await db.Database.MigrateAsync(); - } + await db.Database.MigrateAsync(); - if (dbProvider.Equals("PostgreSQL", StringComparison.OrdinalIgnoreCase) && !databaseCreatedFromModel) + if (dbProvider.Equals("PostgreSQL", StringComparison.OrdinalIgnoreCase)) { try { diff --git a/timetracker.Server/Services/PdfFontResolver.cs b/timetracker.Server/Services/PdfFontResolver.cs new file mode 100644 index 0000000..eb7a1f9 --- /dev/null +++ b/timetracker.Server/Services/PdfFontResolver.cs @@ -0,0 +1,41 @@ +using System; +using System.IO; +using System.Reflection; +using PdfSharp.Fonts; + +namespace timetracker.Server.Services +{ + public class PdfFontResolver : IFontResolver + { + public byte[] GetFont(string faceName) + { + var assembly = Assembly.GetExecutingAssembly(); + + // Map faceName to Embedded Resource stream + string resourceName = faceName.ToLower() switch + { + "opensans-bold" => "timetracker.Server.Fonts.OpenSans-Bold.ttf", + _ => "timetracker.Server.Fonts.OpenSans-Regular.ttf" + }; + + using var stream = assembly.GetManifestResourceStream(resourceName); + if (stream == null) + { + throw new InvalidOperationException($"Could not load font resource '{resourceName}'"); + } + + using var ms = new MemoryStream(); + stream.CopyTo(ms); + return ms.ToArray(); + } + + public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic) + { + if (isBold) + { + return new FontResolverInfo("OpenSans-Bold"); + } + return new FontResolverInfo("OpenSans-Regular"); + } + } +} diff --git a/timetracker.Server/Services/PdfGeneratorService.cs b/timetracker.Server/Services/PdfGeneratorService.cs index ce85275..6ef38b8 100644 --- a/timetracker.Server/Services/PdfGeneratorService.cs +++ b/timetracker.Server/Services/PdfGeneratorService.cs @@ -1,6 +1,6 @@ -using QuestPDF.Fluent; -using QuestPDF.Helpers; -using QuestPDF.Infrastructure; +using MigraDoc.DocumentObjectModel; +using MigraDoc.DocumentObjectModel.Tables; +using MigraDoc.Rendering; using System; using System.Collections.Generic; using System.Linq; @@ -10,12 +10,6 @@ namespace timetracker.Server.Services { public class PdfGeneratorService { - public PdfGeneratorService() - { - // Configure QuestPDF community license - QuestPDF.Settings.License = LicenseType.Community; - } - public byte[] GenerateTimesheetPdf( User user, Tenant? tenant, @@ -26,57 +20,76 @@ namespace timetracker.Server.Services List vacationDays, List holidays) { - var document = Document.Create(container => + if (PdfSharp.Fonts.GlobalFontSettings.FontResolver == null) { - container.Page(page => - { - page.Size(PageSizes.A4); - page.Margin(2, Unit.Centimetre); - page.PageColor(Colors.White); - page.DefaultTextStyle(x => x.FontSize(10).FontFamily(Fonts.Arial)); + PdfSharp.Fonts.GlobalFontSettings.FontResolver = new PdfFontResolver(); + } - page.Header().Element(c => ComposeHeader(c, user, tenant, year, month)); - page.Content().Element(c => ComposeContent(c, user, settings, year, month, workDays, vacationDays, holidays)); - page.Footer().Element(ComposeFooter); - }); - }); + var document = new Document(); + document.Info.Title = "Stundenzettel"; + document.Info.Author = tenant?.Name ?? "Timetracker"; + + var section = document.AddSection(); + section.PageSetup.PageFormat = PageFormat.A4; + section.PageSetup.TopMargin = "2cm"; + section.PageSetup.BottomMargin = "2cm"; + section.PageSetup.LeftMargin = "2cm"; + section.PageSetup.RightMargin = "2cm"; - return document.GeneratePdf(); + var style = document.Styles["Normal"]; + if (style != null && style.Font != null) + { + style.Font.Name = "OpenSans"; + style.Font.Size = 10; + } + + ComposeHeader(section, user, tenant, year, month); + ComposeContent(section, document, user, settings, year, month, workDays, vacationDays, holidays); + ComposeFooter(section); + + var pdfRenderer = new PdfDocumentRenderer() + { + Document = document + }; + pdfRenderer.RenderDocument(); + + using var stream = new System.IO.MemoryStream(); + pdfRenderer.PdfDocument.Save(stream, false); + return stream.ToArray(); } - private void ComposeHeader(IContainer container, User user, Tenant? tenant, int year, int month) + private void ComposeHeader(Section section, User user, Tenant? tenant, int year, int month) { var monthName = new DateTime(year, month, 1).ToString("MMMM yyyy", new System.Globalization.CultureInfo("de-DE")); var companyName = tenant?.Name ?? "Hauptdomain"; - container.Row(row => - { - row.RelativeItem().Column(column => - { - column.Item().Text($"Stundenzettel - {monthName}").FontSize(20).SemiBold().FontColor(Colors.Blue.Darken2); - column.Item().Text($"Mitarbeiter: {user.Username}").FontSize(14).SemiBold(); - column.Item().PaddingTop(2).Text($"Firma: {companyName}").FontSize(11).FontColor(Colors.Grey.Darken2); - }); - }); + var paragraph = section.AddParagraph($"Stundenzettel - {monthName}"); + paragraph.Format.Font.Size = 20; + paragraph.Format.Font.Bold = true; + paragraph.Format.Font.Color = Colors.DarkBlue; + paragraph.Format.SpaceAfter = "0.2cm"; + + paragraph = section.AddParagraph($"Mitarbeiter: {user.Username}"); + paragraph.Format.Font.Size = 14; + paragraph.Format.Font.Bold = true; + paragraph.Format.SpaceAfter = "0.1cm"; + + paragraph = section.AddParagraph($"Firma: {companyName}"); + paragraph.Format.Font.Size = 11; + paragraph.Format.Font.Color = Colors.DarkGray; + paragraph.Format.SpaceAfter = "1cm"; } - private void ComposeContent(IContainer container, User user, AppSettings settings, int year, int month, List workDays, List vacationDays, List holidays) + private void ComposeContent(Section section, Document document, User user, AppSettings settings, int year, int month, List workDays, List vacationDays, List holidays) { - TimeSpan totalNet = TimeSpan.Zero; - TimeSpan totalTarget = TimeSpan.Zero; - TimeSpan totalOvertime = TimeSpan.Zero; + ComposeTable(section, document, settings, year, month, workDays, vacationDays, holidays, out var totalNet, out var totalTarget, out var totalOvertime); + + ComposeSummary(section, totalNet, totalTarget, totalOvertime); - container.PaddingVertical(1, Unit.Centimetre).Column(column => - { - column.Item().Element(c => ComposeTable(c, settings, year, month, workDays, vacationDays, holidays, out totalNet, out totalTarget, out totalOvertime)); - - column.Item().PaddingTop(25).Element(c => ComposeSummary(c, totalNet, totalTarget, totalOvertime)); - - column.Item().PaddingTop(50).Element(ComposeSignatures); - }); + ComposeSignatures(section); } - private void ComposeTable(IContainer container, AppSettings settings, int year, int month, List workDays, List vacationDays, List holidays, out TimeSpan totalNetOut, out TimeSpan totalTargetOut, out TimeSpan totalOvertimeOut) + private void ComposeTable(Section section, Document document, AppSettings settings, int year, int month, List workDays, List vacationDays, List holidays, out TimeSpan totalNetOut, out TimeSpan totalTargetOut, out TimeSpan totalOvertimeOut) { var holidayMap = holidays.ToDictionary(h => h.Date, h => h.Name); var vacationSet = vacationDays.Select(v => v.Date).ToHashSet(); @@ -86,142 +99,158 @@ namespace timetracker.Server.Services var totalTarget = TimeSpan.Zero; var totalOvertime = TimeSpan.Zero; - container.Table(table => + var table = section.AddTable(); + table.Borders.Width = 0.5; + table.Borders.Color = Colors.LightGray; + + // Define columns + table.AddColumn("2.5cm"); // Datum + table.AddColumn("1.5cm"); // Start + table.AddColumn("1.5cm"); // Ende + table.AddColumn("1.8cm"); // Pause + table.AddColumn("1.8cm"); // Netto + table.AddColumn("1.8cm"); // Gleitzeit + table.AddColumn("6.1cm"); // Info + + // Header Row + var row = table.AddRow(); + row.HeadingFormat = true; + row.Format.Font.Bold = true; + row.Shading.Color = Colors.White; + row.Borders.Bottom.Width = 1; + row.Borders.Bottom.Color = Colors.Black; + + row.Cells[0].AddParagraph("Datum"); + row.Cells[1].AddParagraph("Start").Format.Alignment = ParagraphAlignment.Right; + row.Cells[2].AddParagraph("Ende").Format.Alignment = ParagraphAlignment.Right; + row.Cells[3].AddParagraph("Pause").Format.Alignment = ParagraphAlignment.Right; + row.Cells[4].AddParagraph("Netto").Format.Alignment = ParagraphAlignment.Right; + row.Cells[5].AddParagraph("Gleitzeit").Format.Alignment = ParagraphAlignment.Right; + row.Cells[6].AddParagraph("Info/Status"); + + for (int day = 1; day <= daysInMonth; day++) { - table.ColumnsDefinition(columns => + var date = new DateOnly(year, month, day); + var wd = workDays.FirstOrDefault(w => w.Date == date); + var isWorkDay = settings.IsWorkDay(date.DayOfWeek); + var isVacation = vacationSet.Contains(date); + var holidayName = holidayMap.GetValueOrDefault(date); + + TimeSpan? net = null; + TimeSpan breakSum = TimeSpan.Zero; + + if (wd?.StartTime != null && wd.EndTime != null) { - columns.ConstantColumn(70); // Datum - columns.ConstantColumn(50); // Start - columns.ConstantColumn(50); // Ende - columns.ConstantColumn(60); // Pause - columns.ConstantColumn(60); // Netto - columns.ConstantColumn(60); // Gleitzeit - columns.RelativeColumn(); // Info - }); - - table.Header(header => - { - header.Cell().Element(CellStyle).Text("Datum"); - header.Cell().Element(CellStyle).AlignRight().Text("Start"); - header.Cell().Element(CellStyle).AlignRight().Text("Ende"); - header.Cell().Element(CellStyle).AlignRight().Text("Pause"); - header.Cell().Element(CellStyle).AlignRight().Text("Netto"); - header.Cell().Element(CellStyle).AlignRight().Text("Gleitzeit"); - header.Cell().Element(CellStyle).Text("Info/Status"); - - static IContainer CellStyle(IContainer container) - { - return container.DefaultTextStyle(x => x.SemiBold()).PaddingVertical(5).BorderBottom(1).BorderColor(Colors.Black); - } - }); - - for (int day = 1; day <= daysInMonth; day++) - { - var date = new DateOnly(year, month, day); - var wd = workDays.FirstOrDefault(w => w.Date == date); - var isWorkDay = settings.IsWorkDay(date.DayOfWeek); - var isVacation = vacationSet.Contains(date); - var holidayName = holidayMap.GetValueOrDefault(date); - - TimeSpan? net = null; - TimeSpan breakSum = TimeSpan.Zero; - - if (wd?.StartTime != null && wd.EndTime != null) - { - var gross = wd.EndTime.Value.ToTimeSpan() - wd.StartTime.Value.ToTimeSpan(); - breakSum = wd.Breaks - .Where(b => b.StartTime.HasValue && b.EndTime.HasValue && b.EndTime > b.StartTime) - .Aggregate(TimeSpan.Zero, (s, b) => - s + (b.EndTime!.Value.ToTimeSpan() - b.StartTime!.Value.ToTimeSpan())); - var minMinutes = gross.TotalHours >= 9.0 ? 45 : 30; - var minBreak = TimeSpan.FromMinutes(Math.Max(minMinutes, settings.MinimumBreakMinutes)); - var finalBreak = breakSum > minBreak ? breakSum : minBreak; - net = gross - finalBreak; - if (net < TimeSpan.Zero) net = null; - } - - var target = isWorkDay ? TimeSpan.FromHours(settings.DailyTargetHours) : TimeSpan.Zero; - var overtime = net.HasValue ? net.Value - target : TimeSpan.Zero; - - if (net.HasValue) totalNet += net.Value; - if (isWorkDay) totalTarget += target; - if (isWorkDay && net.HasValue) totalOvertime += overtime; - - string status = ""; - if (!string.IsNullOrEmpty(holidayName)) status = holidayName; - else if (isVacation) status = "Urlaub"; - else if (!isWorkDay) status = "Wochenende"; - - var bgColor = Colors.White; - if (!isWorkDay || !string.IsNullOrEmpty(holidayName)) bgColor = Colors.Grey.Lighten4; - if (isVacation) bgColor = Colors.Orange.Lighten4; - - table.Cell().Element(c => CellStyle(c, bgColor)).Text(date.ToString("dd.MM.yyyy")); - table.Cell().Element(c => CellStyle(c, bgColor)).AlignRight().Text(wd?.StartTime?.ToString(@"HH\:mm") ?? "-"); - table.Cell().Element(c => CellStyle(c, bgColor)).AlignRight().Text(wd?.EndTime?.ToString(@"HH\:mm") ?? "-"); - table.Cell().Element(c => CellStyle(c, bgColor)).AlignRight().Text(net.HasValue ? FormatTs(breakSum) : "-"); - table.Cell().Element(c => CellStyle(c, bgColor)).AlignRight().Text(net.HasValue ? FormatTs(net.Value) : "-"); - - var overtimeColor = overtime < TimeSpan.Zero ? Colors.Red.Darken2 : Colors.Green.Darken2; - table.Cell().Element(c => CellStyle(c, bgColor)).AlignRight().Text(net.HasValue ? FormatTs(overtime, true) : "-").FontColor(net.HasValue && overtime != TimeSpan.Zero ? overtimeColor : Colors.Black); - - table.Cell().Element(c => CellStyle(c, bgColor)).Text(status).FontColor(Colors.Grey.Darken2); - - static IContainer CellStyle(IContainer container, string bgColor) - { - return container.BorderBottom(1).BorderColor(Colors.Grey.Lighten3).Background(bgColor).PaddingVertical(3).PaddingHorizontal(2); - } + var gross = wd.EndTime.Value.ToTimeSpan() - wd.StartTime.Value.ToTimeSpan(); + breakSum = wd.Breaks + .Where(b => b.StartTime.HasValue && b.EndTime.HasValue && b.EndTime > b.StartTime) + .Aggregate(TimeSpan.Zero, (s, b) => + s + (b.EndTime!.Value.ToTimeSpan() - b.StartTime!.Value.ToTimeSpan())); + var minMinutes = gross.TotalHours >= 9.0 ? 45 : 30; + var minBreak = TimeSpan.FromMinutes(Math.Max(minMinutes, settings.MinimumBreakMinutes)); + var finalBreak = breakSum > minBreak ? breakSum : minBreak; + net = gross - finalBreak; + if (net < TimeSpan.Zero) net = null; } - }); + + var target = isWorkDay ? TimeSpan.FromHours(settings.DailyTargetHours) : TimeSpan.Zero; + var overtime = net.HasValue ? net.Value - target : TimeSpan.Zero; + + if (net.HasValue) totalNet += net.Value; + if (isWorkDay) totalTarget += target; + if (isWorkDay && net.HasValue) totalOvertime += overtime; + + string status = ""; + if (!string.IsNullOrEmpty(holidayName)) status = holidayName; + else if (isVacation) status = "Urlaub"; + else if (!isWorkDay) status = "Wochenende"; + + var bgColor = Colors.White; + if (!isWorkDay || !string.IsNullOrEmpty(holidayName)) bgColor = new Color(245, 245, 245); // Light Gray + if (isVacation) bgColor = new Color(255, 236, 179); // Light Orange + + row = table.AddRow(); + row.Shading.Color = bgColor; + + row.Cells[0].AddParagraph(date.ToString("dd.MM.yyyy")); + row.Cells[1].AddParagraph(wd?.StartTime?.ToString(@"HH\:mm") ?? "-").Format.Alignment = ParagraphAlignment.Right; + row.Cells[2].AddParagraph(wd?.EndTime?.ToString(@"HH\:mm") ?? "-").Format.Alignment = ParagraphAlignment.Right; + row.Cells[3].AddParagraph(net.HasValue ? FormatTs(breakSum) : "-").Format.Alignment = ParagraphAlignment.Right; + row.Cells[4].AddParagraph(net.HasValue ? FormatTs(net.Value) : "-").Format.Alignment = ParagraphAlignment.Right; + + var overtimePara = row.Cells[5].AddParagraph(net.HasValue ? FormatTs(overtime, true) : "-"); + overtimePara.Format.Alignment = ParagraphAlignment.Right; + if (net.HasValue && overtime != TimeSpan.Zero) + { + overtimePara.Format.Font.Color = overtime < TimeSpan.Zero ? Colors.DarkRed : Colors.DarkGreen; + } + + var statusPara = row.Cells[6].AddParagraph(status); + statusPara.Format.Font.Color = Colors.DarkGray; + } totalNetOut = totalNet; totalTargetOut = totalTarget; totalOvertimeOut = totalOvertime; } - private void ComposeSummary(IContainer container, TimeSpan totalNet, TimeSpan totalTarget, TimeSpan totalOvertime) + private void ComposeSummary(Section section, TimeSpan totalNet, TimeSpan totalTarget, TimeSpan totalOvertime) { - container.Background(Colors.Grey.Lighten4).Padding(10).Row(row => + var paragraph = section.AddParagraph(); + paragraph.Format.SpaceBefore = "1cm"; + + var table = section.AddTable(); + table.Shading.Color = new Color(245, 245, 245); + table.AddColumn("4cm"); + table.AddColumn("4cm"); + + var row = table.AddRow(); + row.Cells[0].AddParagraph("Zusammenfassung").Format.Font.Bold = true; + row.Cells[0].MergeRight = 1; + + row = table.AddRow(); + row.Cells[0].AddParagraph("Soll-Stunden:"); + row.Cells[1].AddParagraph(FormatTs(totalTarget)); + + row = table.AddRow(); + row.Cells[0].AddParagraph("Ist-Stunden:"); + row.Cells[1].AddParagraph(FormatTs(totalNet)); + + row = table.AddRow(); + row.Cells[0].AddParagraph("Saldo:"); + var saldoPara = row.Cells[1].AddParagraph(FormatTs(totalOvertime, true)); + saldoPara.Format.Font.Bold = true; + if (totalOvertime != TimeSpan.Zero) { - row.RelativeItem().Column(column => - { - column.Item().Text("Zusammenfassung").SemiBold(); - column.Item().Text($"Soll-Stunden: {FormatTs(totalTarget)}"); - column.Item().Text($"Ist-Stunden: {FormatTs(totalNet)}"); - - var overtimeColor = totalOvertime < TimeSpan.Zero ? Colors.Red.Darken2 : Colors.Green.Darken2; - column.Item().Text($"Saldo: {FormatTs(totalOvertime, true)}").SemiBold().FontColor(totalOvertime != TimeSpan.Zero ? overtimeColor : Colors.Black); - }); - }); + saldoPara.Format.Font.Color = totalOvertime < TimeSpan.Zero ? Colors.DarkRed : Colors.DarkGreen; + } } - private void ComposeSignatures(IContainer container) + private void ComposeSignatures(Section section) { - container.Row(row => - { - row.RelativeItem().Column(column => - { - column.Item().LineHorizontal(1); - column.Item().PaddingTop(5).Text("Datum, Unterschrift Mitarbeiter").FontSize(10); - }); - row.ConstantItem(50); // space - row.RelativeItem().Column(column => - { - column.Item().LineHorizontal(1); - column.Item().PaddingTop(5).Text("Datum, Unterschrift Arbeitgeber").FontSize(10); - }); - }); + var table = section.AddTable(); + table.Format.SpaceBefore = "2cm"; + table.AddColumn("7cm"); + table.AddColumn("2cm"); + table.AddColumn("7cm"); + + var row = table.AddRow(); + row.Cells[0].Borders.Bottom.Width = 1; + row.Cells[2].Borders.Bottom.Width = 1; + + row = table.AddRow(); + row.Cells[0].AddParagraph("Datum, Unterschrift Mitarbeiter").Format.Font.Size = 8; + row.Cells[2].AddParagraph("Datum, Unterschrift Arbeitgeber").Format.Font.Size = 8; } - private void ComposeFooter(IContainer container) + private void ComposeFooter(Section section) { - container.AlignCenter().Text(x => - { - x.Span("Seite "); - x.CurrentPageNumber(); - x.Span(" von "); - x.TotalPages(); - }); + var paragraph = section.Footers.Primary.AddParagraph(); + paragraph.AddText("Seite "); + paragraph.AddPageField(); + paragraph.AddText(" von "); + paragraph.AddNumPagesField(); + paragraph.Format.Alignment = ParagraphAlignment.Center; } private static string FormatTs(TimeSpan ts, bool sign = false) diff --git a/timetracker.Server/logs/timetracker-20260626.log b/timetracker.Server/logs/timetracker-20260626.log index d50abe8..9b22128 100644 --- a/timetracker.Server/logs/timetracker-20260626.log +++ b/timetracker.Server/logs/timetracker-20260626.log @@ -1838,3 +1838,323 @@ SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" FROM "PublicHolidays" AS "p" WHERE CAST(strftime('%Y', "p"."Date") AS INTEGER) = @year ORDER BY "p"."Date" +2026-06-26 23:14:21.574 +02:00 [INF] File logging active. Writing logs to /Users/marcwieland/Uni/Master/Projects/Timetracker/timetracker/timetracker.Server/logs +2026-06-26 23:14:22.140 +02:00 [WRN] Entity 'WorkDay' has a global query filter defined and is the required end of a relationship with the entity 'BreakEntry'. This may lead to unexpected results when the required entity is filtered out. Either configure the navigation as optional, or define matching query filters for both entities in the navigation. See https://go.microsoft.com/fwlink/?linkid=2131316 for more information. +2026-06-26 23:14:22.205 +02:00 [INF] Acquiring an exclusive lock for migration application. See https://aka.ms/efcore-docs-migrations-lock for more information if this takes too long. +2026-06-26 23:14:22.216 +02:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsLock' AND "type" = 'table'; +2026-06-26 23:14:22.220 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +INSERT OR IGNORE INTO "__EFMigrationsLock"("Id", "Timestamp") VALUES(1, '2026-06-26 21:14:22.219046+00:00'); +SELECT changes(); +2026-06-26 23:14:22.273 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" ( + "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY, + "ProductVersion" TEXT NOT NULL +); +2026-06-26 23:14:22.279 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; +2026-06-26 23:14:22.281 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT "MigrationId", "ProductVersion" +FROM "__EFMigrationsHistory" +ORDER BY "MigrationId"; +2026-06-26 23:14:22.284 +02:00 [INF] No migrations were applied. The database is already up to date. +2026-06-26 23:14:22.286 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +DELETE FROM "__EFMigrationsLock"; +2026-06-26 23:14:22.412 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT "u"."Id", "u"."IsTenantAdmin", "u"."PasswordHash", "u"."PasswordSalt", "u"."TenantId", "u"."Username" +FROM "Users" AS "u" +WHERE "u"."TenantId" IS NULL AND "u"."Username" = 'marc' +LIMIT 1 +2026-06-26 23:14:22.920 +02:00 [INF] Executed DbCommand (2ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:14:22.958 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:14:22.969 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE CAST(strftime('%Y', "p"."Date") AS INTEGER) = @year +ORDER BY "p"."Date" +2026-06-26 23:14:23.006 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[@userId='?' (DbType = Int32), @monday='?' (DbType = Date), @AddDays='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @userId AND "w"."Date" >= @monday AND "w"."Date" < @AddDays +ORDER BY "w"."Date", "w"."Id" +2026-06-26 23:14:23.011 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32), @year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Id", "v"."Date", "v"."Note", "v"."TenantId", "v"."UserId" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @userId AND CAST(strftime('%Y', "v"."Date") AS INTEGER) = @year +ORDER BY "v"."Date" +2026-06-26 23:14:23.026 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Date" +FROM "WorkDays" AS "w" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId +ORDER BY "w"."Date" +LIMIT 1 +2026-06-26 23:14:23.052 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @startDate='?' (DbType = Date), @endDate='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId AND "w"."Date" >= @startDate AND "w"."Date" <= @endDate +ORDER BY "w"."Id" +2026-06-26 23:14:23.072 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@startDate='?' (DbType = Date), @endDate='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE "p"."Date" >= @startDate AND "p"."Date" <= @endDate +2026-06-26 23:14:23.083 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @startDate='?' (DbType = Date), @endDate='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Date" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @_8__locals1_userId AND "v"."Date" >= @startDate AND "v"."Date" <= @endDate +2026-06-26 23:14:23.879 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:14:28.518 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE CAST(strftime('%Y', "p"."Date") AS INTEGER) = @year +ORDER BY "p"."Date" +2026-06-26 23:14:28.518 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32), @year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Id", "v"."Date", "v"."Note", "v"."TenantId", "v"."UserId" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @userId AND CAST(strftime('%Y', "v"."Date") AS INTEGER) = @year +ORDER BY "v"."Date" +2026-06-26 23:14:28.527 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @from='?' (DbType = Date), @to='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId AND "w"."Date" >= @from AND "w"."Date" < @to +ORDER BY "w"."Date", "w"."Id" +2026-06-26 23:14:33.174 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "u"."Id", "u"."IsTenantAdmin", "u"."PasswordHash", "u"."PasswordSalt", "u"."TenantId", "u"."Username" +FROM "Users" AS "u" +WHERE "u"."Id" = @userId +LIMIT 1 +2026-06-26 23:14:33.175 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @from='?' (DbType = Date), @to='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId AND "w"."Date" >= @from AND "w"."Date" < @to +ORDER BY "w"."Date", "w"."Id" +2026-06-26 23:14:33.176 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32), @year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Id", "v"."Date", "v"."Note", "v"."TenantId", "v"."UserId" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @userId AND CAST(strftime('%Y', "v"."Date") AS INTEGER) = @year +ORDER BY "v"."Date" +2026-06-26 23:14:33.177 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:14:33.178 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE CAST(strftime('%Y', "p"."Date") AS INTEGER) = @year +ORDER BY "p"."Date" +2026-06-26 23:14:33.200 +02:00 [ERR] An unhandled exception has occurred while executing the request. +System.InvalidOperationException: The font 'Courier New' cannot be resolved for predefined error font. Use another font name or fix your font resolver. See https://docs.pdfsharp.net/link/migradoc-font-resolving-6.2.html and https://docs.pdfsharp.net/link/font-resolving.html for further information. + ---> System.InvalidOperationException: No appropriate font found for family name 'Courier New'. Implement IFontResolver and assign to 'GlobalFontSettings.FontResolver' to use fonts. See https://docs.pdfsharp.net/link/font-resolving.html + at PdfSharp.Drawing.XGlyphTypeface.GetOrCreateFrom(String familyName, FontResolvingOptions fontResolvingOptions) + at PdfSharp.Drawing.XFont.Initialize() + at PdfSharp.Drawing.XFont..ctor(String familyName, Double emSize, XFontStyleEx style, XPdfFontOptions pdfOptions) + at PdfSharp.Drawing.XFont..ctor(String familyName, Double emSize, XFontStyleEx style) + at MigraDoc.Rendering.DocumentRenderer.PredefinedFontsAndChars.CreateFont(String familyName, Double emSize, XFontStyleEx style, String propertyDescription) + --- End of inner exception stack trace --- + at MigraDoc.Rendering.DocumentRenderer.PredefinedFontsAndChars.CreateFont(String familyName, Double emSize, XFontStyleEx style, String propertyDescription) + at MigraDoc.Rendering.DocumentRenderer.PredefinedFontsAndChars.get_ErrorFont() + at MigraDoc.Rendering.DocumentRenderer.PredefinedFontsAndChars.CreateAllFixedFonts() + at MigraDoc.Rendering.PdfDocumentRenderer.PrepareDocumentRenderer(Boolean prepareCompletely) + at MigraDoc.Rendering.PdfDocumentRenderer.PrepareRenderPages() + at MigraDoc.Rendering.PdfDocumentRenderer.RenderDocument() + at timetracker.Server.Services.PdfGeneratorService.GenerateTimesheetPdf(User user, Tenant tenant, AppSettings settings, Int32 year, Int32 month, List`1 workDays, List`1 vacationDays, List`1 holidays) in /Users/marcwieland/Uni/Master/Projects/Timetracker/timetracker/timetracker.Server/Services/PdfGeneratorService.cs:line 50 + at Program.<>c.<<
$>b__0_27>d.MoveNext() in /Users/marcwieland/Uni/Master/Projects/Timetracker/timetracker/timetracker.Server/Program.cs:line 779 +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Http.RequestDelegateFactory.ExecuteTaskResult[T](Task`1 task, HttpContext httpContext) + at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) + at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) + at Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.Invoke(HttpContext context) + at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context) +2026-06-26 23:14:33.313 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:14:57.355 +02:00 [INF] File logging active. Writing logs to /Users/marcwieland/Uni/Master/Projects/Timetracker/timetracker/timetracker.Server/logs +2026-06-26 23:14:57.589 +02:00 [WRN] Entity 'WorkDay' has a global query filter defined and is the required end of a relationship with the entity 'BreakEntry'. This may lead to unexpected results when the required entity is filtered out. Either configure the navigation as optional, or define matching query filters for both entities in the navigation. See https://go.microsoft.com/fwlink/?linkid=2131316 for more information. +2026-06-26 23:14:57.653 +02:00 [INF] Acquiring an exclusive lock for migration application. See https://aka.ms/efcore-docs-migrations-lock for more information if this takes too long. +2026-06-26 23:14:57.665 +02:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsLock' AND "type" = 'table'; +2026-06-26 23:14:57.669 +02:00 [INF] Executed DbCommand (2ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +INSERT OR IGNORE INTO "__EFMigrationsLock"("Id", "Timestamp") VALUES(1, '2026-06-26 21:14:57.667524+00:00'); +SELECT changes(); +2026-06-26 23:14:57.721 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" ( + "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY, + "ProductVersion" TEXT NOT NULL +); +2026-06-26 23:14:57.727 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; +2026-06-26 23:14:57.729 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT "MigrationId", "ProductVersion" +FROM "__EFMigrationsHistory" +ORDER BY "MigrationId"; +2026-06-26 23:14:57.732 +02:00 [INF] No migrations were applied. The database is already up to date. +2026-06-26 23:14:57.734 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +DELETE FROM "__EFMigrationsLock"; +2026-06-26 23:14:57.860 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT "u"."Id", "u"."IsTenantAdmin", "u"."PasswordHash", "u"."PasswordSalt", "u"."TenantId", "u"."Username" +FROM "Users" AS "u" +WHERE "u"."TenantId" IS NULL AND "u"."Username" = 'marc' +LIMIT 1 +2026-06-26 23:14:58.019 +02:00 [ERR] Hosting failed to start +System.IO.IOException: Failed to bind to address http://127.0.0.1:5065: address already in use. + ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use + ---> System.Net.Sockets.SocketException (48): Address already in use + at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName) + at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) + at System.Net.Sockets.Socket.Bind(EndPoint localEP) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<g__OnBind|0>d.MoveNext() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.LocalhostListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.AddressesStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken) + at Microsoft.Extensions.Hosting.Internal.Host.b__14_1(IHostedService service, CancellationToken token) + at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation) +2026-06-26 23:16:46.101 +02:00 [INF] File logging active. Writing logs to /Users/marcwieland/Uni/Master/Projects/Timetracker/timetracker/timetracker.Server/logs +2026-06-26 23:16:46.558 +02:00 [WRN] Entity 'WorkDay' has a global query filter defined and is the required end of a relationship with the entity 'BreakEntry'. This may lead to unexpected results when the required entity is filtered out. Either configure the navigation as optional, or define matching query filters for both entities in the navigation. See https://go.microsoft.com/fwlink/?linkid=2131316 for more information. +2026-06-26 23:16:46.626 +02:00 [INF] Acquiring an exclusive lock for migration application. See https://aka.ms/efcore-docs-migrations-lock for more information if this takes too long. +2026-06-26 23:16:46.649 +02:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsLock' AND "type" = 'table'; +2026-06-26 23:16:46.658 +02:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +INSERT OR IGNORE INTO "__EFMigrationsLock"("Id", "Timestamp") VALUES(1, '2026-06-26 21:16:46.655104+00:00'); +SELECT changes(); +2026-06-26 23:16:46.737 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" ( + "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY, + "ProductVersion" TEXT NOT NULL +); +2026-06-26 23:16:46.743 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; +2026-06-26 23:16:46.745 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT "MigrationId", "ProductVersion" +FROM "__EFMigrationsHistory" +ORDER BY "MigrationId"; +2026-06-26 23:16:46.748 +02:00 [INF] No migrations were applied. The database is already up to date. +2026-06-26 23:16:46.749 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +DELETE FROM "__EFMigrationsLock"; +2026-06-26 23:16:46.876 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT "u"."Id", "u"."IsTenantAdmin", "u"."PasswordHash", "u"."PasswordSalt", "u"."TenantId", "u"."Username" +FROM "Users" AS "u" +WHERE "u"."TenantId" IS NULL AND "u"."Username" = 'marc' +LIMIT 1 +2026-06-26 23:16:47.560 +02:00 [INF] Executed DbCommand (2ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:16:47.601 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:16:47.613 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[@year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE CAST(strftime('%Y', "p"."Date") AS INTEGER) = @year +ORDER BY "p"."Date" +2026-06-26 23:16:47.651 +02:00 [INF] Executed DbCommand (1ms) [Parameters=[@userId='?' (DbType = Int32), @monday='?' (DbType = Date), @AddDays='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @userId AND "w"."Date" >= @monday AND "w"."Date" < @AddDays +ORDER BY "w"."Date", "w"."Id" +2026-06-26 23:16:47.656 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32), @year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Id", "v"."Date", "v"."Note", "v"."TenantId", "v"."UserId" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @userId AND CAST(strftime('%Y', "v"."Date") AS INTEGER) = @year +ORDER BY "v"."Date" +2026-06-26 23:16:47.668 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Date" +FROM "WorkDays" AS "w" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId +ORDER BY "w"."Date" +LIMIT 1 +2026-06-26 23:16:47.677 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @startDate='?' (DbType = Date), @endDate='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId AND "w"."Date" >= @startDate AND "w"."Date" <= @endDate +ORDER BY "w"."Id" +2026-06-26 23:16:47.688 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@startDate='?' (DbType = Date), @endDate='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE "p"."Date" >= @startDate AND "p"."Date" <= @endDate +2026-06-26 23:16:47.694 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @startDate='?' (DbType = Date), @endDate='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Date" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @_8__locals1_userId AND "v"."Date" >= @startDate AND "v"."Date" <= @endDate +2026-06-26 23:16:48.500 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:16:50.033 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32), @year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Id", "v"."Date", "v"."Note", "v"."TenantId", "v"."UserId" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @userId AND CAST(strftime('%Y', "v"."Date") AS INTEGER) = @year +ORDER BY "v"."Date" +2026-06-26 23:16:50.033 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE CAST(strftime('%Y', "p"."Date") AS INTEGER) = @year +ORDER BY "p"."Date" +2026-06-26 23:16:50.041 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @from='?' (DbType = Date), @to='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId AND "w"."Date" >= @from AND "w"."Date" < @to +ORDER BY "w"."Date", "w"."Id" +2026-06-26 23:16:51.302 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "u"."Id", "u"."IsTenantAdmin", "u"."PasswordHash", "u"."PasswordSalt", "u"."TenantId", "u"."Username" +FROM "Users" AS "u" +WHERE "u"."Id" = @userId +LIMIT 1 +2026-06-26 23:16:51.303 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@_8__locals1_userId='?' (DbType = Int32), @from='?' (DbType = Date), @to='?' (DbType = Date)], CommandType='"Text"', CommandTimeout='30'] +SELECT "w"."Id", "w"."Date", "w"."EndTime", "w"."StartTime", "w"."TenantId", "w"."UserId", "b"."Id", "b"."EndTime", "b"."StartTime", "b"."WorkDayId" +FROM "WorkDays" AS "w" +LEFT JOIN "BreakEntries" AS "b" ON "w"."Id" = "b"."WorkDayId" +WHERE "w"."TenantId" IS NULL AND "w"."UserId" = @_8__locals1_userId AND "w"."Date" >= @from AND "w"."Date" < @to +ORDER BY "w"."Date", "w"."Id" +2026-06-26 23:16:51.303 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32), @year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "v"."Id", "v"."Date", "v"."Note", "v"."TenantId", "v"."UserId" +FROM "VacationDays" AS "v" +WHERE "v"."TenantId" IS NULL AND "v"."UserId" = @userId AND CAST(strftime('%Y', "v"."Date") AS INTEGER) = @year +ORDER BY "v"."Date" +2026-06-26 23:16:51.303 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@userId='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "a"."Id", "a"."DailyTargetHours", "a"."FlexTimeStartDate", "a"."FlexTimeStartingBalanceHours", "a"."GermanState", "a"."MinimumBreakMinutes", "a"."TenantId", "a"."UserId", "a"."VacationDaysPerYear", "a"."WorkFriday", "a"."WorkMonday", "a"."WorkSaturday", "a"."WorkSunday", "a"."WorkThursday", "a"."WorkTuesday", "a"."WorkWednesday" +FROM "AppSettings" AS "a" +WHERE "a"."TenantId" IS NULL AND "a"."UserId" = @userId +LIMIT 1 +2026-06-26 23:16:51.304 +02:00 [INF] Executed DbCommand (0ms) [Parameters=[@year='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +SELECT "p"."Id", "p"."Counties", "p"."Date", "p"."Name" +FROM "PublicHolidays" AS "p" +WHERE CAST(strftime('%Y', "p"."Date") AS INTEGER) = @year +ORDER BY "p"."Date" diff --git a/timetracker.Server/timetracker.Server.csproj b/timetracker.Server/timetracker.Server.csproj index 04da38e..1f1d79c 100644 --- a/timetracker.Server/timetracker.Server.csproj +++ b/timetracker.Server/timetracker.Server.csproj @@ -14,7 +14,7 @@ - + @@ -25,4 +25,8 @@ + + + +