/// <inheritdoc/> protected override async Task <AuditEventModel> ProtectedHandleAsync(CreateAuditEventCommand request, CancellationToken cancellationToken) { XDASv2Net.Model.EventType parsedEventType = Enum.TryParse(request.Event.Action.Event.Name, out XDASv2Net.Model.EventType eventType) ? eventType : XDASv2Net.Model.EventType.INVOKE_SERVICE; SubEventType parsedSubEventType = Enum.TryParse(request.Event.Action.SubEvent.Name, out SubEventType subEventType) ? subEventType : SubEventType.None; var eventEntity = new AuditEventEntity() { Id = idGenerator.GenerateId(), Timestamp = DateTime.UtcNow, EventType = (int)parsedEventType, SubEventType = (int)parsedSubEventType, EventSerialized = serializer.Serialize(request.Event) }; Context.AuditEventRepository.Add(eventEntity); await Context.SaveChangesAsync(cancellationToken); var result = AuditEventModel.Create(eventEntity, serializer); await Gateway.NotifyGroupsAsync(string.Empty, EventType.AuditEventCreated, result, cancellationToken); return(result); }
/// <summary> /// Creates a model based on the given domain entity. /// </summary> /// <param name="entity">The domain entity.</param> /// <param name="serializer">The JSON serializer.</param> /// <returns>The domain entity as a model.</returns> public static AuditEventModel Create(AuditEventEntity entity, IDefaultJsonSerializer serializer) { if (entity == null) { return(null); } var model = new AuditEventModel { Timestamp = entity.Timestamp, EventType = Enum.TryParse(entity.EventType.ToString(), out EventType eventType) ? eventType : EventType.INVOKE_SERVICE, SubEventType = Enum.TryParse(entity.SubEventType.ToString(), out SubEventType subEventType) ? subEventType : SubEventType.None, Xdas = serializer.Deserialize <XDASv2Event>(entity.EventSerialized) }; return(model); } }