diff options
Diffstat (limited to 'Emails.Transactional.Client/Exceptions/ValidationFailedException.cs')
-rw-r--r-- | Emails.Transactional.Client/Exceptions/ValidationFailedException.cs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Emails.Transactional.Client/Exceptions/ValidationFailedException.cs b/Emails.Transactional.Client/Exceptions/ValidationFailedException.cs new file mode 100644 index 0000000..12bcc33 --- /dev/null +++ b/Emails.Transactional.Client/Exceptions/ValidationFailedException.cs @@ -0,0 +1,62 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; + +#nullable enable + +namespace Emails.Transactional.Client.Exceptions +{ + /// <summary> + /// Raised when server message validation failed + /// </summary> + public class ValidationFailedException : InvalidTransactionRequestException + { + ///<inheritdoc/> + public ValidationFailedException() + {} + ///<inheritdoc/> + public ValidationFailedException(string message) : base(message) + {} + ///<inheritdoc/> + public ValidationFailedException(string message, Exception innerException) : base(message, innerException) + {} + + /// <summary> + /// A collection of validaion error messages + /// </summary> + public ICollection<ValidationErrorMessage>? ValidationErrors { get; init; } + /// <summary> + /// + /// </summary> + /// <param name="result"></param> + public ValidationFailedException(TransactionResult result):base("Transaction data server validation failed") + { + this.ValidationErrors = result?.ValidationErrors; + } + + ///<inheritdoc/> + public override string Message + { + get + { + if(ValidationErrors == null) + { + return base.Message; + + } + StringBuilder sb = new(base.Message); + sb.AppendLine(); + + foreach(var kvp in ValidationErrors) + { + sb.Append("Validation error: "); + sb.Append(kvp.PropertyName); + sb.Append(' '); + sb.AppendLine(kvp.ErrorMessage); + } + return sb.ToString(); + } + } + } +} |