using Microsoft.Extensions.Logging;
using OmsorgCore.Engine.Events;

namespace OmsorgCore.Engine.Handlers;

/// <summary>
/// Referenzimplementierung eines Event-Handlers. Reagiert auf <see cref="EmployeeCreatedEvent"/>
/// (Trigger "Neuer Mitarbeiter beginnt", REQUIREMENTS.md Abschnitt 4.10). Protokolliert bislang nur —
/// die eigentlichen Aktionen (Dashboard-Hinweis, App-Zugang vorbereiten, ...) werden ergänzt,
/// sobald die zugehörigen Module existieren.
/// </summary>
public class EmployeeCreatedHandler : IDomainEventHandler<EmployeeCreatedEvent>
{
    private readonly ILogger<EmployeeCreatedHandler> _logger;

    public EmployeeCreatedHandler(ILogger<EmployeeCreatedHandler> logger)
    {
        _logger = logger;
    }

    public Task HandleAsync(EmployeeCreatedEvent domainEvent, CancellationToken cancellationToken = default)
    {
        _logger.LogInformation(
            "Engine: Mitarbeiter {EmployeeId} wurde angelegt ({OccurredAt}).",
            domainEvent.EmployeeId,
            domainEvent.OccurredAt);

        return Task.CompletedTask;
    }
}
