Skip to content

Commit 1575b6f

Browse files
authored
Add regex option to find scout appintments to ignore (#96)
1 parent acc4168 commit 1575b6f

File tree

4 files changed

+28
-25
lines changed

4 files changed

+28
-25
lines changed

src/NuttyTree.NetDaemon.Application/AppointmentReminders/AppointmentRemindersApp.cs

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,25 @@ private async Task UpdateAppointmentsFromHomeAssistantAsync(CancellationToken ca
114114
foreach (var homeAssistantAppointment in homeAssistantAppointments)
115115
{
116116
var appointment = appointments.FirstOrDefault(a => a.Id == homeAssistantAppointment.Id);
117-
if (appointment?.HasChanged(homeAssistantAppointment) == true)
117+
if (appointment == null)
118+
{
119+
logger.LogInformation(
120+
"Found new appointment {AppointmentSummary} at {AppointmentStart} in Home Assistant",
121+
homeAssistantAppointment.Summary,
122+
homeAssistantAppointment.Start);
123+
124+
appointment = homeAssistantAppointment.ToAppointmentEntity();
125+
appointment.SetAppointmentPerson();
126+
appointment.SetLocationCoordinates(appointment.GetKnownLocationCoordinates(options)
127+
?? (await wazeTravelTimes.GetAddressLocationFromAddressAsync(appointment.Location))?.Location
128+
?? LocationCoordinates.Empty);
129+
appointment.SetAppointmentReminderOptions(options);
130+
131+
dbContext.Appointments.Add(appointment);
132+
await dbContext.SaveChangesAsync(cancellationToken);
133+
travelTimeUpdatesTask.Trigger();
134+
}
135+
else if (appointment.HasChanged(homeAssistantAppointment))
118136
{
119137
logger.LogInformation(
120138
"Found updated appointment {AppointmentSummary} at {AppointmentStart} in Home Assistant",
@@ -129,26 +147,6 @@ private async Task UpdateAppointmentsFromHomeAssistantAsync(CancellationToken ca
129147
travelTimeUpdatesTask.Trigger();
130148
}
131149
}
132-
133-
foreach (var homeAssistantAppointment in homeAssistantAppointments
134-
.Where(h => !appointments.Any(a => a.Id == h.Id)))
135-
{
136-
logger.LogInformation(
137-
"Found new appointment {AppointmentSummary} at {AppointmentStart} in Home Assistant",
138-
homeAssistantAppointment.Summary,
139-
homeAssistantAppointment.Start);
140-
141-
var appointment = homeAssistantAppointment.ToAppointmentEntity();
142-
appointment.SetAppointmentPerson();
143-
appointment.SetLocationCoordinates(appointment.GetKnownLocationCoordinates(options)
144-
?? (await wazeTravelTimes.GetAddressLocationFromAddressAsync(appointment.Location))?.Location
145-
?? LocationCoordinates.Empty);
146-
appointment.SetAppointmentReminderOptions(options);
147-
148-
dbContext.Appointments.Add(appointment);
149-
await dbContext.SaveChangesAsync(cancellationToken);
150-
travelTimeUpdatesTask.Trigger();
151-
}
152150
}
153151
}
154152
catch (Exception ex)

src/NuttyTree.NetDaemon.Application/AppointmentReminders/Extensions/AppointmentEntityExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Diagnostics.CodeAnalysis;
2+
using System.Text.RegularExpressions;
23
using NuttyTree.NetDaemon.Application.AppointmentReminders.Options;
34
using NuttyTree.NetDaemon.ExternalServices.Waze.Models;
45
using NuttyTree.NetDaemon.Infrastructure.Database.Entities;
@@ -208,7 +209,7 @@ public static void SetAppointmentReminderOptions(this AppointmentEntity appointm
208209
}
209210
}
210211

211-
if (appointment.Calendar == ScoutsCalendar && appointment.Summary.Contains("cancel", StringComparison.OrdinalIgnoreCase))
212+
if (appointment.Calendar == ScoutsCalendar && !string.IsNullOrWhiteSpace(options.IgnoreScoutsAppointmntRegex) && new Regex(options.IgnoreScoutsAppointmntRegex).IsMatch(appointment.Summary))
212213
{
213214
startReminder.Cancel();
214215
endReminder.Cancel();

src/NuttyTree.NetDaemon.Application/AppointmentReminders/Options/AppointmentRemindersOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ internal sealed class AppointmentRemindersOptions
1010

1111
public LocationCoordinates? HomeLocation { get; set; }
1212

13+
public string? IgnoreScoutsAppointmntRegex { get; set; }
14+
1315
public int MaxReminderMiles { get; set; } = 100;
1416

1517
public int DefaultStartLeadMinutes { get; set; } = 5;

src/NuttyTree.NetDaemon.Infrastructure/Logging/IHostBuilderExtensions.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Microsoft.Extensions.Hosting;
33
using Serilog;
44
using Serilog.Events;
5+
using Serilog.Sinks.SystemConsole.Themes;
56

67
namespace NuttyTree.NetDaemon.Infrastructure.Logging;
78

@@ -11,12 +12,13 @@ public static IHostBuilder UseLogging(this IHostBuilder builder)
1112
{
1213
return builder.UseSerilog((context, config) =>
1314
{
14-
config.MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning);
15+
config.MinimumLevel.Debug();
16+
config.MinimumLevel.Override("Microsoft", LogEventLevel.Warning);
17+
config.MinimumLevel.Override("Serilog", LogEventLevel.Warning);
1518
config.MinimumLevel.Override("System.Net.Http.HttpClient", LogEventLevel.Warning);
16-
config.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning);
1719
config.WriteTo.Async(sinkConfig =>
1820
{
19-
sinkConfig.Console(formatProvider: CultureInfo.CurrentCulture, outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext} {Message:lj}{NewLine}{Exception}");
21+
sinkConfig.Console(theme: AnsiConsoleTheme.Sixteen, formatProvider: CultureInfo.CurrentCulture);
2022
});
2123
});
2224
}

0 commit comments

Comments
 (0)