// // Employee.swift // EmployeeDirectory // // Created by Matt Bruce on 1/20/25. // import Foundation /// EmployeeType enum /// - How the employee is classified. public enum EmployeeType: String, Codable, CustomStringConvertible { case fullTime = "FULL_TIME" case partTime = "PART_TIME" case contractor = "CONTRACTOR" /// Format the employee type for display public var description: String { switch self { case .fullTime: return "Full-Time" case .partTime: return "Part-Time" case .contractor: return "Contractor" } } } /// Employee Object /// JSON Object defintion /// - https://square.github.io/microsite/mobile-interview-project/ public struct Employee: Hashable, Codable { /// The unique identifier for the employee. Represented as a UUID. public let uuid: UUID /// The full name of the employee. public let fullName: String /// The phone number of the employee, sent as an unformatted string (eg, 5556661234). public let phoneNumber: String? /// The email address of the employee. public let emailAddress: String /// A short, tweet-length (~300 chars) string that the employee provided to describe themselves. public let biography: String? /// The URL of the employee’s small photo. Useful for list view. public let photoURLSmall: String? /// The URL of the employee’s full-size photo. public let photoURLLarge: String? /// The team they are on, represented as a human readable string. public let team: String /// How the employee is classified. public let employeeType: EmployeeType private enum CodingKeys: String, CodingKey { case uuid case fullName = "full_name" case phoneNumber = "phone_number" case emailAddress = "email_address" case biography case photoURLSmall = "photo_url_small" case photoURLLarge = "photo_url_large" case team case employeeType = "employee_type" } }