zeroframework/Services/DeviceCenter/ZeroFramework.DeviceCenter.Infrastructure/IntegrationEvents/IntegrationEventLog.cs

37 lines
1.2 KiB
C#
Raw Permalink Normal View History

2023-12-05 09:22:48 +00:00
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json;
namespace ZeroFramework.DeviceCenter.Infrastructure.IntegrationEvents
{
public class IntegrationEventLog : Domain.Entities.BaseEntity<Guid>
{
private IntegrationEventLog() { }
public IntegrationEventLog(Guid id, object @event, Guid? transactionId)
{
Id = id;
CreationTime = DateTimeOffset.Now;
EventTypeName = @event.GetType().FullName ?? string.Empty;
Content = JsonSerializer.Serialize(@event, @event.GetType());
Status = IntegrationEventStatus.NotPublished;
TimesSent = 0;
TransactionId = transactionId?.ToString();
}
public string EventTypeName { get; private set; } = string.Empty;
[NotMapped]
public string EventTypeShortName => EventTypeName.Split('.')?.Last() ?? string.Empty;
public IntegrationEventStatus Status { get; set; }
public int TimesSent { get; set; }
public DateTimeOffset CreationTime { get; private set; }
public string Content { get; private set; } = string.Empty;
public string? TransactionId { get; private set; }
}
}