public async Task HandleAsync(T @event, ICorrelationContext context) { if (@event.BelongsToSaga()) { var sagaContext = SagaContext.FromCorrelationContext(context); await _sagaCoordinator.ProcessAsync(@event, sagaContext); } switch (@event) { case IRejectedEvent rejectedEvent: await _operationsStorage.SetAsync(context.Id, context.UserId, context.Name, OperationState.Rejected, context.Resource, rejectedEvent.Code, rejectedEvent.Reason); await _operationPublisher.RejectAsync(context, rejectedEvent.Code, rejectedEvent.Reason); return; case IEvent _: await _operationsStorage.SetAsync(context.Id, context.UserId, context.Name, OperationState.Completed, context.Resource); await _operationPublisher.CompleteAsync(context); return; } }
public async Task HandleAsync(T command, ICorrelationContext context) { if (!command.BelongsToSaga()) { return; } var sagaContext = SagaContext.FromCorrelationContext(context); await _sagaCoordinator.ProcessAsync(command, sagaContext); }
public async Task HandleAsync(T command, ICorrelationContext context) { if (command.IsProcessable()) { var sagaContext = SagaContext.FromCorrelationContext(context); await _sagaCoordinator.ProcessAsync(command, sagaContext); return; } if (await _operationsStorage.TrySetAsync(context.Id, context.UserId, context.Name, OperationState.Pending, context.Resource, string.Empty)) { await _operationPublisher.PendingAsync(context); } }