ContactCard.swift 34 lignes · 1105 octets
import Foundation

struct ContactCard: Equatable {
    var fullName: String? = nil
    var firstName: String? = nil
    var lastName: String? = nil
    var company: String? = nil
    var jobTitle: String? = nil
    var phones: [String] = []
    var emails: [String] = []
    var website: String? = nil
    var address: String? = nil
    var note: String? = nil
    /// Fields with low OCR confidence (keys: fullName, company, jobTitle, address).
    var champsDouteux: Set<String> = []

    func displayName() -> String {
        if let fullName = fullName?.nilIfBlank { return fullName }
        let joined = [firstName, lastName].compactMap { $0 }.joined(separator: " ")
        if joined.isNotBlank { return joined }
        return company ?? ""
    }

    func hasAnyField() -> Bool {
        displayName().isNotBlank
            || company?.isNotBlank == true
            || jobTitle?.isNotBlank == true
            || !phones.isEmpty
            || !emails.isEmpty
            || website?.isNotBlank == true
            || address?.isNotBlank == true
            || note?.isNotBlank == true
    }
}