/* * Copyright (c) 2022 Vaughn Nugent * * Library: VNLib * Package: Emails.Transactional.Client * File: ValidationFailedException.cs * * ValidationFailedException.cs is part of Emails.Transactional.Client which is part of the larger * VNLib collection of libraries and utilities. * * Emails.Transactional.Client is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 2 of the License, * or (at your option) any later version. * * Emails.Transactional.Client is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/. */ 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(); } } } }