Replace calendar service with new .NET version

This commit is contained in:
2024-12-18 11:59:05 -05:00
parent 4dbedee94b
commit 40ebbf38cb
25 changed files with 767 additions and 3504 deletions

View File

@@ -0,0 +1,13 @@
using Ical.Net.CalendarComponents;
using Ical.Net.DataTypes;
using JetBrains.Annotations;
namespace ChrisKaczor.HomeMonitor.Calendar.Service.Models;
[PublicAPI]
public class CalendarEntry(Occurrence occurrence)
{
public string Summary { get; set; } = ((CalendarEvent)occurrence.Source).Summary;
public DateTimeOffset Start { get; set; } = occurrence.Period.StartTime.AsUtc;
public DateTimeOffset End { get; set; } = occurrence.Period.EndTime.AsUtc;
}

View File

@@ -0,0 +1,19 @@
namespace ChrisKaczor.HomeMonitor.Calendar.Service.Models;
public class Duration
{
public int Days { get; set; }
public int Hours { get; set; }
public int Minutes { get; set; }
public int Seconds { get; set; }
public Duration(DateTimeOffset date)
{
var now = DateTimeOffset.Now;
var duration = date - now;
Days = duration.Days;
Hours = duration.Hours;
Minutes = duration.Minutes;
Seconds = duration.Seconds;
}
}

View File

@@ -0,0 +1,17 @@
namespace ChrisKaczor.HomeMonitor.Calendar.Service.Models;
public class HolidayEntry
{
public string Name { get; set; }
public DateTimeOffset Date { get; set; }
public bool IsToday { get; set; }
public Duration DurationUntil { get; set; }
public HolidayEntry(CalendarEntry calendarEntry, TimeZoneInfo timeZoneInfo)
{
Name = calendarEntry.Summary;
Date = TimeZoneInfo.ConvertTime(calendarEntry.Start, timeZoneInfo).Subtract(timeZoneInfo.GetUtcOffset(calendarEntry.Start));
IsToday = Date.Date == DateTimeOffset.UtcNow.Date;
DurationUntil = new Duration(Date);
}
}

View File

@@ -0,0 +1,10 @@
using JetBrains.Annotations;
namespace ChrisKaczor.HomeMonitor.Calendar.Service.Models;
[PublicAPI]
public class HolidayResponse(HolidayEntry holidayEntry, TimeZoneInfo timeZoneInfo)
{
public DateTimeOffset ResponseTime { get; set; } = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, timeZoneInfo);
public HolidayEntry? Event { get; set; } = holidayEntry;
}