39 lines
962 B
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)
|
|
}
|
|
}
|
|
|
|
}
|