using System.Diagnostics; using Microsoft.Extensions.Logging; using SeaHaven.DataServices.Interfaces; using SeaHaven.Services.DTOs; using SeaHaven.Services.Interfaces; namespace SeaHaven.Services.Implementation { public class PastDueCacheService : IPastDueCacheService { private readonly IWorkOrderDomainJobDataService _dataService; private readonly ILogger _logger; public PastDueCacheService( IWorkOrderDomainJobDataService dataService, ILogger logger) { _dataService = dataService; _logger = logger; } public async Task RefreshAsync(CancellationToken cancellationToken = default) { var stopwatch = Stopwatch.StartNew(); var utcNow = DateTime.UtcNow; _logger.LogInformation("PastDue cache refresh started at {UtcNow}", utcNow); var refreshResult = await _dataService.RefreshPastDueFlagsAsync(utcNow, cancellationToken: cancellationToken); stopwatch.Stop(); var result = new PastDueCacheJobResult { SetCount = refreshResult.SetCount, ClearedCount = refreshResult.ClearedCount, ExaminedCount = refreshResult.ExaminedCount, DurationMs = stopwatch.ElapsedMilliseconds }; _logger.LogInformation( "PastDue cache refresh completed. Set={SetCount}, Cleared={ClearedCount}, Examined={ExaminedCount}, DurationMs={DurationMs}", result.SetCount, result.ClearedCount, result.ExaminedCount, result.DurationMs); return result; } } }