mirror of
https://github.com/alex289/CleanArchitecture.git
synced 2025-06-29 18:21:08 +00:00
37 lines
951 B
C#
37 lines
951 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()
|
|
{
|
|
return _correlationId;
|
|
}
|
|
|
|
public string GetUserEmail()
|
|
{
|
|
return _user?.GetUserEmail() ?? string.Empty;
|
|
}
|
|
} |