From 4f0d099f60f1a27d7c5fb118633feadd1d5cb1b3 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 21 Jan 2025 12:51:01 -0600 Subject: [PATCH] fixed for normal service Signed-off-by: Matt Bruce --- EmployeeDirectory/Models/Employees.swift | 19 +++++++++++++++++-- .../ViewModels/EmployeesViewModel.swift | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/EmployeeDirectory/Models/Employees.swift b/EmployeeDirectory/Models/Employees.swift index b30f156..8b59d6b 100644 --- a/EmployeeDirectory/Models/Employees.swift +++ b/EmployeeDirectory/Models/Employees.swift @@ -8,17 +8,32 @@ import Foundation /// Wrapper JSON Class for the Employees public struct Employees: Codable { - + /// Array of Employees public var employees: [Employee] public let total: Int public let page: Int public let perPage: Int - + private enum CodingKeys: String, CodingKey { case employees case total case page case perPage = "per_page" } + + public init(employees: [Employee], total: Int = 0, page: Int = 1, perPage: Int = 10) { + self.employees = employees + self.total = total + self.page = page + self.perPage = perPage + } + + public init(from decoder: any Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.employees = try container.decode([Employee].self, forKey: .employees) + self.total = try container.decodeIfPresent(Int.self, forKey: .total) ?? self.employees.count + self.page = try container.decodeIfPresent(Int.self, forKey: .page) ?? 1 + self.perPage = try container.decodeIfPresent(Int.self, forKey: .perPage) ?? self.total + } } diff --git a/EmployeeDirectory/ViewModels/EmployeesViewModel.swift b/EmployeeDirectory/ViewModels/EmployeesViewModel.swift index aaf1075..95571ff 100644 --- a/EmployeeDirectory/ViewModels/EmployeesViewModel.swift +++ b/EmployeeDirectory/ViewModels/EmployeesViewModel.swift @@ -13,7 +13,7 @@ import Combine @MainActor public class EmployeesViewModel: ObservableObject { private var serviceMode: EmployeeServiceMode = .production - private var employeeService: EmployeeServiceProtocol = MockEmployeeService.shared + private var employeeService: EmployeeServiceProtocol = EmployeeService.shared @Published public private(set) var employees: [Employee] = [] @Published public private(set) var errorMessage: String? = nil @Published public private(set) var isLoading: Bool = false