feat: Add Grid View and Monthly Summary pages with workday management
Some checks failed
Publish Container / publish (push) Failing after 1m2s
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:
parent
6e3371514e
commit
3ccce7e8a6
17 changed files with 1257 additions and 18 deletions
16
Domain/CoeffSnapshotDocument.cs
Normal file
16
Domain/CoeffSnapshotDocument.cs
Normal 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;
|
||||
}
|
||||
30
Domain/MonthlySummaryModel.cs
Normal file
30
Domain/MonthlySummaryModel.cs
Normal 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
40
Domain/WorkDayDocument.cs
Normal 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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue