diff --git a/EmployeeDirectory/ViewModels/EmployeeDetailsViewModel.swift b/EmployeeDirectory/ViewModels/EmployeeDetailsViewModel.swift new file mode 100644 index 0000000..ab9b3b6 --- /dev/null +++ b/EmployeeDirectory/ViewModels/EmployeeDetailsViewModel.swift @@ -0,0 +1,50 @@ +// +// EmployeeDetailsViewModel.swift +// EmployeeDirectory +// +// Created by Matt Bruce on 2/6/25. +// + +import Foundation +import UIKit + +/// ViewModel that will be used along with the EmployeeTableViewCell. +@MainActor +public class EmployeeDetailViewModel: ObservableObject { + // MARK: - Properties + + private let employee: Employee + + public private(set) var uuid: String + public private(set) var fullName: String + public private(set) var phoneNumber: String? + public private(set) var emailAddress: String + public private(set) var biography: String? + public private(set) var team: String + public private(set) var employeeType: String + @Published public private(set) var largePhoto: UIImage? + + // MARK: - Initializer + + public init(employee: Employee) { + self.employee = employee + + // Initialize properties + uuid = employee.uuid.uuidString + fullName = employee.fullName + phoneNumber = employee.phoneNumber?.formatUSNumber() + emailAddress = employee.emailAddress + biography = employee.biography + team = employee.team + employeeType = employee.employeeType.description + + // Fetch the image for the url if it exists + if let endpoint = employee.photoURLLarge { + Task{ + if let photoURL = URL(string: endpoint) { + largePhoto = await ImageCacheService.shared.loadImage(from: photoURL) + } + } + } + } +}