diff --git a/DigitalData.Core.DTO/DTOExtensions.cs b/DigitalData.Core.DTO/DTOExtensions.cs index 8559d6f..daad4ce 100644 --- a/DigitalData.Core.DTO/DTOExtensions.cs +++ b/DigitalData.Core.DTO/DTOExtensions.cs @@ -68,23 +68,45 @@ namespace DigitalData.Core.DTO return result.IsSuccess ? Success() : Fail(result.Messages, result.Notices); } + public static async Task ThenAsync(this Result result, Func> SuccessAsync, Func, List, I> Fail) + { + return result.IsSuccess ? await SuccessAsync() : Fail(result.Messages, result.Notices); + } + public static I Then(this DataResult result, Func Success, Func, List, I> Fail) { return result.IsSuccess ? Success(result.Data) : Fail(result.Messages, result.Notices); } + public static async Task ThenAsync(this DataResult result, Func> SuccessAsync, Func, List, I> Fail) + { + return result.IsSuccess ? await SuccessAsync(result.Data) : Fail(result.Messages, result.Notices); + } + public static async Task ThenAsync(this Task tResult, Func Success, Func, List, I> Fail) { Result result = await tResult; return result.IsSuccess ? Success() : Fail(result.Messages, result.Notices); } + public static async Task ThenAsync(this Task tResult, Func> SuccessAsync, Func, List, I> Fail) + { + Result result = await tResult; + return result.IsSuccess ? await SuccessAsync() : Fail(result.Messages, result.Notices); + } + public static async Task ThenAsync(this Task> tResult, Func Success, Func, List, I> Fail) { DataResult result = await tResult; return result.IsSuccess ? Success(result.Data) : Fail(result.Messages, result.Notices); } + public static async Task ThenAsync(this Task> tResult, Func> SuccessAsync, Func, List, I> Fail) + { + DataResult result = await tResult; + return result.IsSuccess ? await SuccessAsync(result.Data) : Fail(result.Messages, result.Notices); + } + public static string Join(this IEnumerable values, string start = "", string seperator = ". ", string end = ".") => new StringBuilder(start).Append(string.Join(seperator, values)).Append(end).ToString();