public static bool IsValidationFailed(this IDispatchResult dispatchResult, out IEnumerable <ValidationResult> validationResults) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { var innerResults = aggregateDispatchResult.Flatten().DispatchResults; if (!innerResults.Any(p => p is ValidationFailureDispatchResult)) { validationResults = Enumerable.Empty <ValidationResult>(); return(false); } var validationFailureDispatchResults = innerResults.Select(p => p is ValidationFailureDispatchResult); validationResults = validationFailureDispatchResults.OfType <ValidationFailureDispatchResult>().SelectMany(p => p.ValidationResults); return(true); } if (dispatchResult is ValidationFailureDispatchResult validationFailureDispatchResult) { validationResults = validationFailureDispatchResult.ValidationResults; return(true); } validationResults = Enumerable.Empty <ValidationResult>(); return(false); }
public static bool IsNotAuthenticated(this IDispatchResult dispatchResult) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { return(aggregateDispatchResult.Flatten().DispatchResults.Any(p => p is NotAuthenticatedDispatchResult)); } return(dispatchResult is NotAuthenticatedDispatchResult); }
public static bool IsValidationFailed(this IDispatchResult dispatchResult) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { return(aggregateDispatchResult.Flatten().DispatchResults.Any(p => p is ValidationFailureDispatchResult)); } return(dispatchResult is ValidationFailureDispatchResult); }
public static bool IsConcurrencyIssue(this IDispatchResult dispatchResult) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { return(aggregateDispatchResult.Flatten().DispatchResults.Any(p => p is ConcurrencyIssueDispatchResult)); } return(dispatchResult is ConcurrencyIssueDispatchResult); }
public static bool IsEntityNotFound(this IDispatchResult dispatchResult) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { return(aggregateDispatchResult.Flatten().DispatchResults.Any(p => p is EntityNotFoundDispatchResult)); } return(dispatchResult is EntityNotFoundDispatchResult); }
public static bool IsTimeout(this IDispatchResult dispatchResult) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { return(aggregateDispatchResult.Flatten().DispatchResults.Any(p => p is TimeoutDispatchResult)); } return(dispatchResult is TimeoutDispatchResult); }
public static bool IsEntityAlreadPresent(this IDispatchResult dispatchResult) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { return(aggregateDispatchResult.Flatten().DispatchResults.Any(p => p is EntityAlreadyPresentDispatchResult)); } return(dispatchResult is EntityAlreadyPresentDispatchResult); }
private IActionResult GetActionResult <TModel>(IDispatchResult dispatchResult, TModel model) { if (dispatchResult.IsValidationFailed(out var validationResults)) { AddModelError(validationResults); return(View(model)); } return(GetActionResult(dispatchResult)); }
public static bool IsDispatchFailure(this IDispatchResult dispatchResult, out Type messageType) { if (dispatchResult is DispatchFailureDispatchResult dispatchFailure) { messageType = dispatchFailure.MessageType; return(true); } messageType = default; return(false); }
public static bool IsAggregateResult(this IDispatchResult dispatchResult, out IAggregateDispatchResult aggregateDispatchResult) { if (dispatchResult is IAggregateDispatchResult aggregateDispatchResult2) { aggregateDispatchResult = aggregateDispatchResult2; return(true); } aggregateDispatchResult = default; return(false); }
private void SerializeDispatchResult(IMessage message, IDispatchResult dispatchResult) { Assert(message != null); Assert(dispatchResult != null); using (var stream = message.PushFrame().OpenStream()) using (var writer = new StreamWriter(stream)) using (var jsonWriter = new JsonTextWriter(writer)) { Serializer.Serialize(jsonWriter, dispatchResult, typeof(IDispatchResult)); } }
private static void GetResultFromNonAggregate <TResult>(IDispatchResult dispatchResult, bool throwOnFailure, ICollection <TResult> results) { if (dispatchResult.IsSuccessWithResult <TResult>(out var singleResult)) { results.Add(singleResult); } else if (throwOnFailure) { throw new FailureOrTypeMismatchException(); } }
public static bool IsSuccessWithResult <TResult>(this IDispatchResult dispatchResult, out TResult result) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { dispatchResult = aggregateDispatchResult.Flatten() .DispatchResults .OfType <IDispatchResult <TResult> >() .FirstOrDefault(); } if (dispatchResult.IsSuccess && dispatchResult is IDispatchResult <TResult> typedDispatchResult) { result = typedDispatchResult.Result; return(true); } result = default; return(false); }
private IActionResult GetActionResult(IDispatchResult dispatchResult) { if (dispatchResult.IsNotFound()) { return(NotFound()); } if (dispatchResult.IsNotAuthenticated()) { return(StatusCode(401)); // TODO: Rediect to authentication page } if (dispatchResult.IsNotAuthorized()) { return(Forbid()); } return(StatusCode(500)); }
public static bool IsTimeout(this IDispatchResult dispatchResult, out DateTime dueTime) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { dispatchResult = aggregateDispatchResult.Flatten() .DispatchResults .OfType <TimeoutDispatchResult>() .FirstOrDefault(); } if (dispatchResult is TimeoutDispatchResult timeoutDispatchResult) { dueTime = timeoutDispatchResult.DueTime; return(true); } dueTime = default; return(false); }
public static IEnumerable <TResult> GetResults <TResult>(this IDispatchResult dispatchResult, bool throwOnFailure) { if (dispatchResult.IsAggregateResult(out var aggregateDispatchResult)) { var flattenedDispatchResult = aggregateDispatchResult.Flatten(); return(GetResultsFromFlattened <TResult>(flattenedDispatchResult, throwOnFailure)); } if (dispatchResult.IsSuccessWithResult <TResult>(out var result)) { return(Enumerable.Repeat(result, count: 1)); } if (throwOnFailure) { throw new FailureOrTypeMismatchException(); } return(Enumerable.Empty <TResult>()); }
public static bool IsSuccess <TResult>(this IDispatchResult dispatchResult, out TResult result) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { var dispatchResults = aggregateDispatchResult.Flatten() .DispatchResults .Where(p => p.IsSuccess); result = default; if (dispatchResults.Any()) { var typedDispatchResult = dispatchResults.OfType <IDispatchResult <TResult> >().FirstOrDefault(); if (typedDispatchResult != null) { result = typedDispatchResult.Result; } return(true); } return(false); } if (dispatchResult.IsSuccess) { if (dispatchResult is IDispatchResult <TResult> typedDispatchResult) { result = typedDispatchResult.Result; } else { result = default; } return(true); } result = default; return(false); }
public static bool IsEntityAlreadPresent(this IDispatchResult dispatchResult, out Type entityType, out string id) { if (IsAggregateResult(dispatchResult, out var aggregateDispatchResult)) { dispatchResult = aggregateDispatchResult.Flatten() .DispatchResults .OfType <EntityAlreadyPresentDispatchResult>() .FirstOrDefault(); } if (dispatchResult is EntityAlreadyPresentDispatchResult entityAlreadyPresentDispatchResult) { entityType = entityAlreadyPresentDispatchResult.EntityType; id = entityAlreadyPresentDispatchResult.Id; return(true); } entityType = default; id = default; return(false); }
public AggregateDispatchResult(IDispatchResult dispatchResult, IReadOnlyDictionary <string, object> resultData) : this((dispatchResult ?? throw new ArgumentNullException(nameof(dispatchResult))).Yield(), resultData)
public virtual FailureDispatchResult Failure(string message, IDispatchResult underlyingResult) // TODO { return(new FailureDispatchResult(message)); }
public static bool IsAggregateResult(this IDispatchResult dispatchResult) { return(dispatchResult is IAggregateDispatchResult); }
public static bool IsSuccessWithResult(this IDispatchResult dispatchResult, out object result) { return(dispatchResult.IsSuccessWithResult <object>(out result)); }
public static bool IsDispatchFailure(this IDispatchResult dispatchResult) { return(dispatchResult is DispatchFailureDispatchResult); }