diff --git a/EmployeeDirectory/Services/MockEmployeeService.swift b/EmployeeDirectory/Services/MockEmployeeService.swift index 29f3c1a..9ec53be 100644 --- a/EmployeeDirectory/Services/MockEmployeeService.swift +++ b/EmployeeDirectory/Services/MockEmployeeService.swift @@ -9,7 +9,7 @@ import Foundation public class MockEmployeeService: EmployeeServiceProtocol { // MARK: - Properties public static let shared = MockEmployeeService() // Default shared instance - private var employees: Employees + private var wrapper: Employees private var sortField: EmployeeSortField = .fullName private var sortOrder: EmployeeSortOrder = .ascending @@ -20,14 +20,14 @@ public class MockEmployeeService: EmployeeServiceProtocol { guard let url = Bundle.main.url(forResource: jsonFileName, withExtension: "json"), let data = try? Data(contentsOf: url), let localData = try? JSONDecoder().decode(Employees.self, from: data) else { - employees = .init(employees: [], total: 0, page: 0, perPage: 0) + wrapper = .init(employees: [], total: 0, page: 0, perPage: 0) return } - employees = localData + wrapper = localData } public func getEmployees(_ serviceMode: EmployeeServiceMode) async throws -> Employees { - return employees + return wrapper } public func getEmployees(_ serviceMode: EmployeeServiceMode = .production, @@ -35,24 +35,27 @@ public class MockEmployeeService: EmployeeServiceProtocol { sortField: EmployeeSortField = .fullName, sortOrder: EmployeeSortOrder = .ascending) async throws -> Employees { + //resort mock data if sortField != self.sortField || sortOrder != self.sortOrder { - employees = .init(employees: employees.employees.sorted(by: sortField, with: sortOrder), - total: employees.employees.count, + wrapper = .init(employees: wrapper.employees.sorted(by: sortField, with: sortOrder), + total: wrapper.employees.count, page: page, perPage: perPage) self.sortField = sortField self.sortOrder = sortOrder } - let totalUsers = employees.employees.count + let totalUsers = wrapper.employees.count let startIndex = (page - 1) * perPage let endIndex = min(startIndex + perPage, totalUsers) guard startIndex < totalUsers else { return .init(employees: [], total: totalUsers, page: page, perPage: perPage) // Return empty if out of bounds } - let paginatedUsers = Array(employees.employees[startIndex..