namespace IceImportDAL.DTO.IceImportRun; // Mirrors ICEIMPORT.TICEIMPORTRUNROWRESULT. Used both as the bulk-insert payload // (IIceImportRunBLL.SaveRowResultsAsync — RowResultId/RunId ignored by the INSERT, RunId supplied // separately) and as the GetImportRunRowErrors query projection (RowResultId/RunId populated by the // DB) — one DTO shape crossing all layers per CLAUDE.md, avoiding a duplicate "input" record. // Status is a free-form discriminator (this phase uses "Success" | "Warning" | "Error", matching // IceImportSeverity's naming) — no CHECK constraint on this column in the Phase 0 migration. public class IceImportRunRowResultDTO { public long RowResultId { get; set; } public long RunId { get; set; } public int RowNumber { get; set; } public string? EntityCode { get; set; } public string Status { get; set; } = string.Empty; public int? TargetEntityId { get; set; } // JSON envelope {"Url":"...","Payload":{...}} recorded for every actual service call this row // made (Save/Update via MenuWebServiceDispatcher) — see PersistResultDTO.PostData. Null for // rows that never reached a service call (skipped, no adapter, embedded child, dynamic-SQL // UPDATE, or a pre-commit validation failure). public string? PostData { get; set; } public string? ErrorMessage { get; set; } }