namespace MS.Microservice.Infrastructure.Utils.Excel; public enum ExcelImportErrorKind { MissingColumn, DuplicateColumn, UnwritableProperty, Required, Conversion, BusinessValidation } /// A business error; the importer supplies the actual source row and column. public sealed record ExcelRowValidationError(string Message, string? PropertyName = null); /// A valid value and its original, one-based Excel row number. public sealed record ExcelImportRow(int RowNumber, T Value); /// A flat error model that can be exported using ExcelHelper.Export. public sealed class ExcelImportError { public string SheetName { get; init; } = ""; public int RowNumber { get; init; } public int? ColumnNumber { get; init; } public string? ColumnName { get; init; } public string? PropertyName { get; init; } public ExcelImportErrorKind Kind { get; init; } public string Message { get; init; } = ""; public string? RawValue { get; init; } } public sealed record ExcelImportReport( IReadOnlyList> Rows, IReadOnlyList Errors) { public bool IsValid => Errors.Count == 0; }