import Foundation

struct Employment: Identifiable {
    let employeeId: Int
    let businessId: Int
    let businessName: String
    let businessAddress: String
    let businessCity: String
    let employeeStatusId: Int
    let pendingTaskCount: Int

    var id: Int { employeeId }

    /// Decode directly from a [String: Any] dictionary (matches Flutter's fromJson)
    init(json: [String: Any]) {
        employeeId = WorkTask.parseInt(json["EmployeeID"]) ?? 0
        businessId = WorkTask.parseInt(json["BusinessID"]) ?? 0
        // Server returns "Name" not "BusinessName"
        businessName = (json["Name"] as? String) ?? (json["BusinessName"] as? String) ?? ""
        businessAddress = (json["Address"] as? String) ?? (json["BusinessAddress"] as? String) ?? ""
        businessCity = (json["City"] as? String) ?? (json["BusinessCity"] as? String) ?? ""
        // Match Flutter: read EmployeeStatusID first (server sends StatusID, which may differ)
        employeeStatusId = WorkTask.parseInt(json["EmployeeStatusID"] ?? json["StatusID"]) ?? 0
        pendingTaskCount = WorkTask.parseInt(json["PendingTaskCount"]) ?? 0
    }

    var statusName: String {
        switch employeeStatusId {
        case 0: return "Pending"
        case 1: return "Active"
        case 2: return "Inactive"
        default: return "Unknown"
        }
    }
}
