示例#1
0
        public async Task Handle(AddStatusEventManualChangeEntity entity)
        {
            var time = entity.Timestamp.UtcDateTime;

            var eventEntity = new EventEntity(
                entity.EventAffectedComponentPath,
                time,
                affectedComponentStatus: (ComponentStatus)entity.EventAffectedComponentStatus,
                endTime: entity.EventIsActive ? (DateTime?)null : time);

            var messageEntity = new MessageEntity(
                eventEntity,
                time,
                entity.MessageContents,
                MessageType.Manual);

            await _table.InsertAsync(messageEntity);

            await _table.InsertAsync(eventEntity);
        }
示例#2
0
        public async Task CreateMessageAsync(EventEntity eventEntity, DateTime time, MessageType type, IComponent component, ComponentStatus status)
        {
            using (_logger.Scope("Creating new message of type {Type} for event {EventRowKey} at {Timestamp} affecting {ComponentPath} with status {ComponentStatus}.",
                                 type, eventEntity.RowKey, time, component.Path, status))
            {
                var existingMessage = await _table.RetrieveAsync <MessageEntity>(MessageEntity.GetRowKey(eventEntity, time));

                if (existingMessage != null)
                {
                    _logger.LogInformation("Message already exists, will not recreate.");
                    return;
                }

                var contents      = _builder.Build(type, component, status);
                var messageEntity = new MessageEntity(eventEntity, time, contents, type);
                _logger.LogInformation("Creating message with time {MessageTimestamp} and contents {MessageContents}.",
                                       messageEntity.Time, messageEntity.Contents);
                await _table.InsertAsync(messageEntity);
            }
        }
        public async Task Handle(AddStatusMessageManualChangeEntity entity)
        {
            var time = entity.Timestamp.UtcDateTime;

            var eventRowKey = EventEntity.GetRowKey(entity.EventAffectedComponentPath, entity.EventStartTime);
            var eventEntity = await _table.RetrieveAsync <EventEntity>(eventRowKey);

            if (eventEntity == null)
            {
                throw new ArgumentException("Cannot create a message for an event that does not exist.");
            }

            var messageEntity = new MessageEntity(eventEntity, time, entity.MessageContents, MessageType.Manual);

            await _table.InsertAsync(messageEntity);

            if (ManualStatusChangeUtility.UpdateEventIsActive(eventEntity, entity.EventIsActive, time))
            {
                await _table.ReplaceAsync(eventEntity);
            }
        }