* Included System.Text.Json related changes * Fixed order details summary in WebMVC * Updated custom JsonConverter
44 lines
1.7 KiB
C#
44 lines
1.7 KiB
C#
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
|
|
using System;
|
|
using System.Text.Json;
|
|
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 = JsonSerializer.Serialize(@event, @event.GetType(), new JsonSerializerOptions
|
|
{
|
|
WriteIndented = true
|
|
});
|
|
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 = JsonSerializer.Deserialize(Content, type, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }) as IntegrationEvent;
|
|
return this;
|
|
}
|
|
}
|
|
}
|