* Small Refactoring inside IntegrationEventLogEF * Small Refactoring inside BuildingBlocks folder
41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using System.Linq;
|
|
|
|
namespace Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF
|
|
{
|
|
public class IntegrationEventLogEntry
|
|
{
|
|
private IntegrationEventLogEntry() { }
|
|
public IntegrationEventLogEntry(IntegrationEvent @event, Guid transactionId)
|
|
{
|
|
EventId = @event.Id;
|
|
CreationTime = @event.CreationDate;
|
|
EventTypeName = @event.GetType().FullName;
|
|
Content = JsonConvert.SerializeObject(@event);
|
|
State = EventStateEnum.NotPublished;
|
|
TimesSent = 0;
|
|
TransactionId = transactionId.ToString();
|
|
}
|
|
public Guid EventId { get; private set; }
|
|
public string EventTypeName { get; private set; }
|
|
[NotMapped]
|
|
public string EventTypeShortName => EventTypeName.Split('.')?.Last();
|
|
[NotMapped]
|
|
public IntegrationEvent IntegrationEvent { get; private set; }
|
|
public EventStateEnum State { get; set; }
|
|
public int TimesSent { get; set; }
|
|
public DateTime CreationTime { get; private set; }
|
|
public string Content { get; private set; }
|
|
public string TransactionId { get; private set; }
|
|
|
|
public IntegrationEventLogEntry DeserializeJsonContent(Type type)
|
|
{
|
|
IntegrationEvent = JsonConvert.DeserializeObject(Content, type) as IntegrationEvent;
|
|
return this;
|
|
}
|
|
}
|
|
}
|