Files
vapor-po/Sources/App/Controllers/View/UtilsViewController.swift

39 lines
962 B
Swift

import DatabaseClient
import Dependencies
import SharedModels
import Vapor
import VaporElementary
struct UtilsViewController: RouteCollection {
@Dependency(\.database) var database
func boot(routes: any RoutesBuilder) throws {
let route = routes.protected
route.group("select") {
$0.get("employee", use: employeeSelect(req:))
}
}
@Sendable
func employeeSelect(req: Request) async throws -> HTMLResponse {
let context = try req.query.decode(EmployeeSelectContext.self)
let employees = try await database.employees.fetchAll()
return await req.render { context.toHTML(employees: employees) }
}
}
private struct EmployeeSelectContext: Content {
let context: EmployeeSelect.Context
func toHTML(employees: [Employee]) -> EmployeeSelect {
switch context {
case .form:
return .purchaseOrderForm(employees: employees)
case .search:
return .purchaseOrderSearch(employees: employees)
}
}
}