feat: Working on search for purchase orders.
This commit is contained in:
38
Sources/App/Controllers/View/UtilsViewController.swift
Normal file
38
Sources/App/Controllers/View/UtilsViewController.swift
Normal file
@@ -0,0 +1,38 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user