diff --git a/EmployeeDirectory/ViewControllers/EmployeesViewController.swift b/EmployeeDirectory/ViewControllers/EmployeesViewController.swift index 199fe89..44f314b 100644 --- a/EmployeeDirectory/ViewControllers/EmployeesViewController.swift +++ b/EmployeeDirectory/ViewControllers/EmployeesViewController.swift @@ -6,14 +6,53 @@ // import UIKit +import Combine class EmployeesViewController: UIViewController { + private let tableView = UITableView() + private let viewModel = EmployeesViewModel() + private var cancellables = Set() - override func viewDidLoad() { + public override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view. + setupUI() + bindViewModel() + viewModel.fetchEmployees() + } + + private func setupUI() { + view.backgroundColor = .white + + // Configure TableView + tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") + tableView.dataSource = self + + view.addSubview(tableView) + tableView.frame = view.bounds + + } + + private func bindViewModel() { + viewModel.$employees + .receive(on: RunLoop.main) + .sink { [weak self] _ in + self?.tableView.reloadData() + self?.tableView.refreshControl?.endRefreshing() + } + .store(in: &cancellables) } - - } +extension EmployeesViewController: UITableViewDataSource { + public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return viewModel.employees.count + } + + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) + let employee = viewModel.employees[indexPath.row] + cell.textLabel?.text = employee.fullName + cell.detailTextLabel?.text = employee.emailAddress + return cell + } +}