aboutsummaryrefslogtreecommitdiff
path: root/Emails.Transactional.Client/Exceptions/ValidationFailedException.cs
diff options
context:
space:
mode:
authorLibravatar vman <public@vaughnnugent.com>2022-11-18 15:55:22 -0500
committerLibravatar vman <public@vaughnnugent.com>2022-11-18 15:55:22 -0500
commitc9e17b57a5ecdeea81674de5a033a201e7802526 (patch)
tree15c331af950441351507bb716e07dbe45452cd13 /Emails.Transactional.Client/Exceptions/ValidationFailedException.cs
parent038d86a0381b39af94b66c9bdd3da1e31cd2d8f2 (diff)
Initial commit
Diffstat (limited to 'Emails.Transactional.Client/Exceptions/ValidationFailedException.cs')
-rw-r--r--Emails.Transactional.Client/Exceptions/ValidationFailedException.cs62
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();
+ }
+ }
+ }
+}