/*
* 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();
}
}
}
}