ResultDto.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 AggregateException ToAggregateException()
  34. {
  35. if (IsSuccess)
  36. return null;
  37. var errors = new List<Exception>();
  38. foreach (var e in Errors)
  39. {
  40. var addExc = new Exception(e.Message);
  41. addExc.SetCode(e.Code);
  42. errors.Add(addExc);
  43. }
  44. return new AggregateException(errors);
  45. }
  46. }
  47. }