diff --git a/src/PowderCoating.Infrastructure/Services/CsvImportService.cs b/src/PowderCoating.Infrastructure/Services/CsvImportService.cs index a86276d..b9a3ffe 100644 --- a/src/PowderCoating.Infrastructure/Services/CsvImportService.cs +++ b/src/PowderCoating.Infrastructure/Services/CsvImportService.cs @@ -480,7 +480,12 @@ public class CsvImportService : ICsvImportService { // Strip any literal quote characters that QB/Excel may wrap around field values var cleanCompanyName = StripQuotes(record.CompanyName); - var cleanEmail = StripQuotes(record.Email); + // Normalise to null (not empty string) — the UNIQUE index on (CompanyId, Email) + // uses HasFilter("[Email] IS NOT NULL"), so NULL is allowed for multiple rows + // but "" (empty string) is not NULL and would cause a unique-constraint violation + // on the second blank-email customer saved. + var rawEmail = StripQuotes(record.Email); + var cleanEmail = string.IsNullOrWhiteSpace(rawEmail) ? null : rawEmail; var firstName = StripQuotes(record.ContactFirstName)?.Trim(); var lastName = StripQuotes(record.ContactLastName)?.Trim();