using System; using System.Collections.Generic; using System.Linq; namespace Timeline.Services { [Serializable] public class EntityException : Exception { public EntityException() { } public EntityException(string? message) : base(message) { } public EntityException(string? message, Exception? inner) : base(message, inner) { } public EntityException(EntityType entityType, IDictionary constraints, string? message = null, Exception? inner = null) : base(message, inner) { EntityType = entityType; Constraints = constraints; } protected EntityException( System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { } public EntityType EntityType { get; } = EntityTypes.Default; public IDictionary Constraints { get; } = new Dictionary(); public string GenerateConstraintString() { return string.Join(' ', Constraints.Select(c => $"[{c.Key} = {c.Value}]")); } } }