0
0
mirror of https://github.com/alex289/CleanArchitecture.git synced 2025-08-24 04:08:34 +00:00
CleanArchitecture/CleanArchitecture.Infrastructure/EventSourcing/EventStoreContext.cs
2023-08-28 19:41:49 +02:00

31 lines
888 B
C#

using System;
using CleanArchitecture.Domain.Interfaces;
using Microsoft.AspNetCore.Http;
namespace CleanArchitecture.Infrastructure.EventSourcing;
public sealed class EventStoreContext : IEventStoreContext
{
private readonly string _correlationId;
private readonly IUser? _user;
public EventStoreContext(IUser? user, IHttpContextAccessor? httpContextAccessor)
{
_user = user;
if (httpContextAccessor?.HttpContext is null ||
!httpContextAccessor.HttpContext.Request.Headers.TryGetValue("X-CLEAN-ARCHITECTURE-CORRELATION-ID", out var id))
{
_correlationId = $"internal - {Guid.NewGuid()}";
}
else
{
_correlationId = id.ToString();
}
}
public string GetCorrelationId() => _correlationId;
public string GetUserEmail() => _user?.GetUserEmail() ?? string.Empty;
}