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;
}