Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
    }