added sorting to viewmodel
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
285b448bce
commit
95cbafec57
@ -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
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user