feat: Add Grid View and Monthly Summary pages with workday management
Some checks failed
Publish Container / publish (push) Failing after 1m2s

- Implement GridView.razor for displaying a tabular view of workdays in the current month.
- Create MonthlySummary.razor to show a summary of worked hours, income, and day types for the selected month.
- Introduce WorkDayEditor.razor for adding and editing workday entries with detailed calculations.
- Update Home.razor to include links to the new Grid View and Monthly Summary pages.
- Add IWorkDayService interface and CouchbaseLiteWorkDayService implementation for managing workday data.
- Define domain models: WorkDayDocument, MonthlySummaryModel, and CoeffSnapshotDocument for data structure.
- Enhance CouchbaseLiteDatabaseProvider to include a collection for workdays.
- Update app settings and services to support new features.
- Add CSS styles for calendar view and table formatting.
This commit is contained in:
MaddoScientisto 2026-03-17 22:10:19 +01:00
commit 3ccce7e8a6
17 changed files with 1257 additions and 18 deletions

View file

@ -0,0 +1,16 @@
namespace WorkTracker.Domain;
public sealed class CoeffSnapshotDocument
{
public decimal StandardWorkHoursPerDay { get; set; } = 8m;
public decimal LunchBreakHours { get; set; } = 1m;
public decimal HourlyGrossRate { get; set; } = 17.5m;
public decimal ProfitabilityCoefficient { get; set; } = 0.67m;
public decimal InpsRate { get; set; } = 0.2607m;
public decimal SubstituteTaxRate { get; set; } = 0.15m;
}

View file

@ -0,0 +1,30 @@
namespace WorkTracker.Domain;
public sealed class MonthlySummaryModel
{
public int Year { get; set; }
public int Month { get; set; }
public decimal TotalWorkedHours { get; set; }
public int OfficeDays { get; set; }
public int HomeDays { get; set; }
public int HolidayDays { get; set; }
public int SickDays { get; set; }
public int DaysOff { get; set; }
public int ClosureDays { get; set; }
public decimal TotalHoursOff { get; set; }
public decimal TotalGrossIncome { get; set; }
public decimal TotalNetIncome { get; set; }
public int TotalWorkingDays { get; set; }
}

40
Domain/WorkDayDocument.cs Normal file
View file

@ -0,0 +1,40 @@
namespace WorkTracker.Domain;
public sealed class WorkDayDocument
{
public string Id { get; set; } = string.Empty;
public DateOnly Date { get; set; }
public TimeOnly? StartTime { get; set; }
public TimeOnly? ProjectedExitTime { get; set; }
public TimeOnly? ActualExitTime { get; set; }
public DayType DayType { get; set; } = DayType.None;
public decimal ExtraHoursDelta { get; set; }
public decimal WorkedHoursBase { get; set; }
public decimal WorkedHoursFinal { get; set; }
public decimal HoursOff { get; set; }
public decimal GrossIncome { get; set; }
public decimal NetIncome { get; set; }
public bool IsWeekend { get; set; }
public bool IsItalianFestivity { get; set; }
public string? Notes { get; set; }
public CoeffSnapshotDocument CoeffSnapshot { get; set; } = new();
public DateTimeOffset CreatedAtUtc { get; set; } = DateTimeOffset.UtcNow;
public DateTimeOffset UpdatedAtUtc { get; set; } = DateTimeOffset.UtcNow;
}