ResultDto.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Quadarax.Foundation.Core.Exceptions;
  5. namespace Quadarax.Foundation.Core.Data.Interface.Entity.Dto
  6. {
  7. public abstract class ResultDto : IDto, IResult
  8. {
  9. /// <summary>
  10. /// <inheritdoc cref="IResult.IsSuccess"/>
  11. /// </summary>
  12. public bool IsSuccess => !Errors.Any();
  13. /// <summary>
  14. /// <inheritdoc cref="IResult.Errors"/>
  15. /// </summary>
  16. public IEnumerable<ErrorMessageDto> Errors { get; set; }
  17. //public IEnumerable<IError> Errors { get; set; }
  18. IEnumerable<IError> IResult.Errors => Errors;
  19. /// <summary>
  20. /// <inheritdoc cref="IResult.GetValue()"/>
  21. /// </summary>
  22. /// <returns></returns>
  23. public abstract object GetValue();
  24. protected ResultDto(IEnumerable<IError> errors)
  25. {
  26. Errors = new List<ErrorMessageDto>(errors.Select(x=>(ErrorMessageDto) x));
  27. //Errors = new List<IError>(errors);
  28. }
  29. protected ResultDto()
  30. {
  31. Errors = new List<ErrorMessageDto>();
  32. }
  33. public void AppendException(Exception e)
  34. {
  35. if (e == null) throw new ArgumentNullException(nameof(e));
  36. Errors = Errors.Append(new ErrorMessageDto(e));
  37. }
  38. public AggregateException ToAggregateException()
  39. {
  40. if (IsSuccess)
  41. return null;
  42. var errors = new List<Exception>();
  43. foreach (var e in Errors)
  44. {
  45. var addExc = new Exception(e.Message);
  46. addExc.SetCode(e.Code);
  47. errors.Add(addExc);
  48. }
  49. return new AggregateException(errors);
  50. }
  51. }
  52. }