From 9102f8d3c6f05bf56b434b45b033302d1d042c70 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 6 Feb 2025 15:17:20 -0600 Subject: [PATCH] created details viewmodel Signed-off-by: Matt Bruce --- .../ViewModels/EmployeeDetailsViewModel.swift | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 EmployeeDirectory/ViewModels/EmployeeDetailsViewModel.swift 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) + } + } + } + } +}