private async Task RefreshSaga(SagaInfo originatingSaga) { _eventAggregator.Publish(new WorkStarted("Loading message body...")); if (Data == null || Data.SagaId != originatingSaga.SagaId) { Data = await _serviceControl.GetSagaById(originatingSaga.SagaId.ToString()); if (Data == SagaData.Empty) { ShowSagaNotFoundWarning = true; Data = null; } else if (Data != null && Data.Changes != null) { ProcessDataValues(Data.Changes); } else { Data = null; } } if (ShowMessageData) { RefreshMessageProperties(); } RefreshShowData(); _eventAggregator.Publish(new WorkFinished()); }
public void When_initiating_message_can_not_be_found_doesnot_throw() { var sagaId = Guid.NewGuid(); var timeouts = new List <SagaTimeoutMessage> { new SagaTimeoutMessage { DeliverAt = DateTime.Now, Timeout = TimeSpan.FromMinutes(1) } }; var update = new SagaUpdate { InitiatingMessage = null, OutgoingMessages = timeouts }; var sagaChanges = new List <SagaUpdate> { update }; var sagaList = new List <SagaInfo> { new SagaInfo { SagaId = sagaId } }; var sagaData = new SagaData { Changes = sagaChanges }; messageSelectionContext.SelectedMessage = new StoredMessage { InvokedSagas = sagaList }; serviceControl.GetSagaById(Arg.Is(sagaId)).Returns(sagaData); var selectedMessageChanged = new SelectedMessageChanged(); Assert.DoesNotThrowAsync(() => viewModel.Handle(selectedMessageChanged)); }
void RefreshSaga(SagaInfo originatingSaga) { try { eventAggregator.PublishOnUIThread(new WorkStarted("Loading message body...")); var previousSagaId = Guid.Empty; if (Data == null || Data.SagaId != originatingSaga.SagaId) { if (Data != null) { previousSagaId = Data.SagaId; } Data = serviceControl.GetSagaById(originatingSaga.SagaId); if (Data != null) { if (Data.SagaId == Guid.Empty) { ShowSagaNotFoundWarning = true; Data = null; } else if (Data.Changes != null) { ProcessDataValues(Data.Changes); } else { Data = null; } } } if (Data == null || Data.Changes == null) { return; } // Skip refreshing if we already displaying the correct saga data if (previousSagaId == Data.SagaId) { return; } RefreshShowData(); if (ShowMessageData) { RefreshMessageProperties(); } } finally { eventAggregator.PublishOnUIThread(new WorkFinished()); } }
private SagaData FetchOrderedSagaData(Guid sagaId) { var sagaData = serviceControl.GetSagaById(sagaId); if (sagaData?.Changes != null) { sagaData.Changes = sagaData.Changes.OrderBy(x => x.StartTime) .ThenBy(x => x.FinishTime) .ToList(); foreach (var timeout in sagaData.Changes.SelectMany(update => update.TimeoutMessages)) { timeout.HasBeenProcessed = sagaData.Changes.Any(update => update.InitiatingMessage.MessageId == timeout.MessageId); } } return(sagaData); }