Name Message Date
📁 Properties Add web dashboard for viewing monitor status and detections. 2 hours ago
📁 Protos Initialize project 1 month ago
📁 wwwroot Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 .containerfile Containerize 10 days ago
📄 .dockerignore Containerize 10 days ago
📄 .editorconfig Initialize project 1 month ago
📄 .gitignore Remove database file from repository 10 days ago
📄 AppSettings.cs Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 appsettings.Development.json Fix Claudes mess 10 days ago
📄 appsettings.json Fix Claudes mess 10 days ago
📄 BfiMonitor.csproj Add web dashboard for viewing monitor status and detections. 2 hours ago
📄 BfiMonitor.slnx Initialize project 1 month ago
📄 CheckMonitoringJob.cs Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 dotnet-tools.json Initialize project 1 month ago
📄 global.json Fix Claudes mess 10 days ago
📄 IntervalScheduler.cs Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 MonitoringCheckScheduler.cs Add multi-monitoring management with scan triggers and editing. 2 hours ago
📄 MonitorOptions.cs Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 OpenTelemetryExtensions.cs Add web dashboard for viewing monitor status and detections. 2 hours ago
📄 packages.lock.json Add web dashboard for viewing monitor status and detections. 2 hours ago
📄 PlaywrightBrowserService.cs Use Playwright settings from Lukas 10 days ago
📄 Program.cs Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 ScheduleMonitoringChecksJob.cs Add multi-monitoring management with scan triggers and editing. 2 hours ago
📄 ScreeningRepository.cs Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 SendSmsJob.cs Add tracing 10 days ago
📄 Tracing.cs Add configurable settings and per-monitoring SMS recipients. 1 hour ago
📄 ScheduleMonitoringChecksJob.cs
using System.Diagnostics;
using BfiMonitor;
using Microsoft.Extensions.Logging;
using Quartz;

internal sealed class ScheduleMonitoringChecksJob(
    MonitoringCheckScheduler scheduler,
    ScreeningRepository repository,
    ILogger<ScheduleMonitoringChecksJob> logger
) : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        using var activity = Tracing.StartCheckerJob();

        var monitors = await repository.GetActiveMonitoringsAsync(context.CancellationToken);
        if (monitors.Count == 0)
        {
            logger.LogNoActiveMonitorings();
            activity?.SetTag("EndReason", "NoActiveMonitorings");
            activity?.SetStatus(ActivityStatusCode.Ok);
            return;
        }

        await scheduler.ScheduleRunningChecksAsync(context.CancellationToken);
        activity?.SetTag("ScheduledChecks", monitors.Count);
        activity?.SetTag("EndReason", "RanToCompletion");
        activity?.SetStatus(ActivityStatusCode.Ok);
    }
}

internal static partial class ScheduleMonitoringChecksJobLoggerExtensions
{
    [LoggerMessage(LogLevel.Information, "No active monitorings configured")]
    public static partial void LogNoActiveMonitorings(this ILogger logger);
}