added sorting to viewmodel

Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
Matt Bruce 2025-01-21 12:12:44 -06:00
parent 285b448bce
commit 95cbafec57
2 changed files with 18 additions and 9 deletions

View File

@ -10,6 +10,8 @@ public class MockEmployeeService: EmployeeServiceProtocol {
// MARK: - Properties
public static let shared = MockEmployeeService() // Default shared instance
private var employees: Employees
private var sortField: EmployeeSortField = .fullName
private var sortOrder: EmployeeSortOrder = .ascending
// MARK: - Initializer
@ -30,13 +32,17 @@ public class MockEmployeeService: EmployeeServiceProtocol {
public func getEmployees(_ serviceMode: EmployeeServiceMode = .production,
page: Int, perPage: Int,
sortField: EmployeeSortField = .team,
sortField: EmployeeSortField = .fullName,
sortOrder: EmployeeSortOrder = .ascending) async throws -> Employees {
if sortField != self.sortField || sortOrder != self.sortOrder {
employees = .init(employees: employees.employees.sorted(by: sortField, with: sortOrder),
total: employees.employees.count,
page: page,
perPage: perPage)
self.sortField = sortField
self.sortOrder = sortOrder
}
let totalUsers = employees.employees.count
let startIndex = (page - 1) * perPage

View File

@ -12,7 +12,7 @@ import Foundation
@MainActor
public class EmployeesViewModel: ObservableObject {
private var serviceMode: EmployeeServiceMode = .production
private var employeeService: EmployeeServiceProtocol = MockEmployeeService.shared
@Published public private(set) var employees: [Employee] = []
@Published public private(set) var errorMessage: String? = nil
@Published public private(set) var isLoading: Bool = false
@ -33,7 +33,10 @@ public class EmployeesViewModel: ObservableObject {
Task {
do {
// Fetch employees using the paginated API
let wrapper = try await MockEmployeeService.shared.getEmployees(.empty ,page: page, perPage: perPage)
let wrapper = try await employeeService.getEmployees(serviceMode, page: page,
perPage: perPage,
sortField: .employeeType,
sortOrder: .ascending)
// Update published properties
if page == 1 {