Add holiday flag to data

This commit is contained in:
2024-12-19 09:51:38 -05:00
parent 200a07d6ba
commit 88cf5d1b83
3 changed files with 7 additions and 6 deletions

View File

@@ -7,7 +7,7 @@ namespace ChrisKaczor.HomeMonitor.Calendar.Service.Controllers;
[ApiController] [ApiController]
public class CalendarController(IConfiguration configuration, HttpClient httpClient) : ControllerBase public class CalendarController(IConfiguration configuration, HttpClient httpClient) : ControllerBase
{ {
private async Task<IEnumerable<CalendarEntry>> GetCalendarEntries(string calendarUrl, int days) private async Task<IEnumerable<CalendarEntry>> GetCalendarEntries(string calendarUrl, int days, bool isHoliday)
{ {
var data = await httpClient.GetStringAsync(calendarUrl); var data = await httpClient.GetStringAsync(calendarUrl);
@@ -18,7 +18,7 @@ public class CalendarController(IConfiguration configuration, HttpClient httpCli
var calendarEntries = calendar var calendarEntries = calendar
.GetOccurrences(start, end) .GetOccurrences(start, end)
.Select(o => new CalendarEntry(o)) .Select(o => new CalendarEntry(o, isHoliday))
.OrderBy(ce => ce.Start); .OrderBy(ce => ce.Start);
return calendarEntries; return calendarEntries;
@@ -27,12 +27,12 @@ public class CalendarController(IConfiguration configuration, HttpClient httpCli
[HttpGet("upcoming")] [HttpGet("upcoming")]
public async Task<ActionResult<IEnumerable<CalendarEntry>>> GetUpcoming([FromQuery] int days = 1, [FromQuery] bool includeHolidays = false) public async Task<ActionResult<IEnumerable<CalendarEntry>>> GetUpcoming([FromQuery] int days = 1, [FromQuery] bool includeHolidays = false)
{ {
var calendarEntries = await GetCalendarEntries(configuration["Calendar:PersonalUrl"]!, days); var calendarEntries = await GetCalendarEntries(configuration["Calendar:PersonalUrl"]!, days, false);
if (!includeHolidays) if (!includeHolidays)
return Ok(calendarEntries); return Ok(calendarEntries);
var holidayEntries = await GetCalendarEntries(configuration["Calendar:HolidayUrl"]!, days); var holidayEntries = await GetCalendarEntries(configuration["Calendar:HolidayUrl"]!, days, true);
calendarEntries = calendarEntries.Concat(holidayEntries).OrderBy(c => c.Start); calendarEntries = calendarEntries.Concat(holidayEntries).OrderBy(c => c.Start);
return Ok(calendarEntries); return Ok(calendarEntries);

View File

@@ -21,7 +21,7 @@ public class HolidayController(IConfiguration configuration, HttpClient httpClie
var calendarEntries = calendar var calendarEntries = calendar
.GetOccurrences(start, end) .GetOccurrences(start, end)
.Select(o => new CalendarEntry(o)) .Select(o => new CalendarEntry(o, true))
.OrderBy(ce => ce.Start); .OrderBy(ce => ce.Start);
var nextCalendarEntry = calendarEntries.First(); var nextCalendarEntry = calendarEntries.First();

View File

@@ -5,10 +5,11 @@ using JetBrains.Annotations;
namespace ChrisKaczor.HomeMonitor.Calendar.Service.Models; namespace ChrisKaczor.HomeMonitor.Calendar.Service.Models;
[PublicAPI] [PublicAPI]
public class CalendarEntry(Occurrence occurrence) public class CalendarEntry(Occurrence occurrence, bool isHoliday)
{ {
public string Summary { get; set; } = ((CalendarEvent)occurrence.Source).Summary; public string Summary { get; set; } = ((CalendarEvent)occurrence.Source).Summary;
public bool IsAllDay { get; set; } = ((CalendarEvent)occurrence.Source).IsAllDay; public bool IsAllDay { get; set; } = ((CalendarEvent)occurrence.Source).IsAllDay;
public DateTimeOffset Start { get; set; } = occurrence.Period.StartTime.AsDateTimeOffset; public DateTimeOffset Start { get; set; } = occurrence.Period.StartTime.AsDateTimeOffset;
public DateTimeOffset End { get; set; } = occurrence.Period.EndTime.AsDateTimeOffset; public DateTimeOffset End { get; set; } = occurrence.Period.EndTime.AsDateTimeOffset;
public bool IsHoliday { get; set; } = isHoliday;
} }