From c9e17b57a5ecdeea81674de5a033a201e7802526 Mon Sep 17 00:00:00 2001 From: vman Date: Fri, 18 Nov 2022 15:55:22 -0500 Subject: Initial commit --- .../Exceptions/ValidationFailedException.cs | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Emails.Transactional.Client/Exceptions/ValidationFailedException.cs (limited to 'Emails.Transactional.Client/Exceptions/ValidationFailedException.cs') 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 +{ + /// + /// Raised when server message validation failed + /// + public class ValidationFailedException : InvalidTransactionRequestException + { + /// + public ValidationFailedException() + {} + /// + public ValidationFailedException(string message) : base(message) + {} + /// + public ValidationFailedException(string message, Exception innerException) : base(message, innerException) + {} + + /// + /// A collection of validaion error messages + /// + public ICollection? ValidationErrors { get; init; } + /// + /// + /// + /// + public ValidationFailedException(TransactionResult result):base("Transaction data server validation failed") + { + this.ValidationErrors = result?.ValidationErrors; + } + + /// + 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(); + } + } + } +} -- cgit