|
- //
- // WorkOrderCtrl.swift
- //
- //
- // Created by Michiel Carman on 11/10/21.
- //
-
- import Foundation
- import Vapor
- import Fluent
- import FluentPostgresDriver
-
- final class WorkOrderCtrl{
- //Create Unit
- func create(req: Request) throws -> EventLoopFuture<mdlWorkOrder.Output>{
- let input = try req.content.decode(mdlWorkOrder.Input.self)
- let output = self.createUnit(input)
- return self.save(output, req, input)
-
- }
-
- //Update Unit
- func update(req: Request) throws -> EventLoopFuture<mdlWorkOrder.Output>{
- let input = try req.content.decode(mdlWorkOrder.Input.self)
- return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input)
- return self.save(output, req: req)
- }
- }
-
- //Get all Divisions
- func readAll(req: Request) throws -> EventLoopFuture<Page<mdlWorkOrder.Output>>{
- return try qbase(req: req)
- .paginate(for: req)
- .map{
- page in page.map{
- self.createRead($0)
- }
- }
- }
- //Get 1 Division
- func read(req: Request) throws -> EventLoopFuture<mdlWorkOrder.Output>{
-
- return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)}
-
- }
- //Delete 1 Division
- func delete(req: Request) throws -> EventLoopFuture<HTTPStatus>{
-
- guard let id = req.parameters.get("id", as: Int.self) else{
- throw Abort(.badRequest)
- }
- return mdlWorkOrder.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok}
- }
-
- }
- extension WorkOrderCtrl{
- //Query Settings
- func qbase(req: Request) throws -> QueryBuilder<mdlWorkOrder> {
- let query = mdlWorkOrder.query(on: req.db)
- .with(\.$customer)
- .with(\.$machine)
- .with(\.$priority)
- .with(\.$reason)
- .with(\.$incompletereason)
- .with(\.$workorderstatuses)
- .with(\.$userss)
- .with(\.$inspections)
- .with(\.$consumptions)
- .with(\.$notes)
- .with(\.$files)
- .with(\.$signatures)
- .with(\.$parts)
- .with(\.$statuses)
-
- if let id = req.parameters.get("id", as: Int.self){
- return query.filter(\.$id == id)
- } else{
- return query
- }
- }
- struct Input: Content{
- let id: Int?
- let number: String
- let specialinstruction: String
- let scheduledstartdate: Date
- let scheduledenddate: Date
- let createdate: Date?
- let createuserid: Int?
- let updatedate: Date?
- let updateuserid: Int?
- let customer: mdlCustomer
- let machine: mdlMachine
- let priority: mdlPriority
- let reason: mdlReason
- let incompletereason: mdlIncompleteReason
- let workorderstatus: [mdlWorkOrder]?
- let users: [mdlWorkOrderUser]?
- let inspections: [mdlInspection]?
- let consumptions: [mdlConsumption]?
- let notes: [mdlNote]?
- let files: [mdlFile]?
- let signatures: [mdlSignature]?
- let parts: [mdlWorkOrderPart]?
- let statuses: [mdlStatus]?
- }
- //create Output
- func createRead(_ output: mdlWorkOrder) -> mdlWorkOrder.Output {
- return mdlWorkOrder.Output(
- id: output.id!
- , number: output.number
- , specialinstruction: output.specialinstruction
- , scheduledstartdate: output.scheduledstartdate
- , scheduledenddate: output.scheduledenddate
- , createdate: output.createdate
- , createuserid: output.createuserid
- , updatedate: output.updatedate
- , updateuserid: output.updateuserid
- , customer: output.$customer.value!
- , machine: output.$machine.value!
- , priority: output.$priority.value!
- , reason: output.$reason.value!
- , incompletereason: output.$incompletereason.value!
- , workorderstatuses: output.$workorderstatuses.value!
- , users: output.$userss.value!
- , inspections: output.$inspections.value!
- , consumptions: output.$consumptions.value!
- , notes: output.$notes.value!
- , files: output.$files.value!
- , signatures: output.$signatures.value!
- , parts: output.$parts.value!
- , statuses: output.$statuses.value!
-
- )
- }
-
- func mapOutput(_ output: Optional<mdlWorkOrder>.WrappedType, _ input: mdlWorkOrder.Input){
- output.number = input.number;
- output.specialinstruction = input.specialinstruction;
- output.scheduledstartdate = input.scheduledstartdate;
- output.scheduledenddate = input.scheduledenddate;
- output.createdate = input.createdate;
- output.updatedate = input.updatedate;
- output.createuserid = input.createuserid;
- output.updateuserid = input.updateuserid;
- output.$customer.id = input.customer.id!;
- output.$machine.id = input.machine.id!;
- output.$priority.id = input.priority.id!;
- output.$reason.id = input.reason.id!;
- output.$incompletereason.id = input.incompletereason.id!;
- output.$workorderstatuses.value = input.workorderstatuses!;
- output.$userss.value = input.users!;
- output.$inspections.value = input.inspections!;
- output.$consumptions.value = input.consumptions!;
- output.$notes.value = input.notes!;
- output.$files.value = input.files!;
- output.$signatures.value = input.signatures!;
- output.$parts.value = input.parts!;
- output.$statuses.value = input.statuses!;
- }
-
- func createUnit(_ input: mdlWorkOrder.Input) -> mdlWorkOrder {
- return mdlWorkOrder(
- id: input.id ?? nil
- , number: input.number
- , specialinstruction: input.specialinstruction
- , scheduledstartdate: input.scheduledstartdate
- , scheduledenddate: input.scheduledenddate
- , createuserid: input.createuserid ?? -1
- , createdate: input.createdate
- , updateuserid: input.updateuserid ?? -1
- , updatedate: input.updatedate
- , customer: input.customer
- , machine: input.machine
- , priority: input.priority
- , reason: input.reason
- , incompletereason: input.incompletereason
- , users: input.users!
- , workorderstatuses: input.workorderstatuses!
- , inspections: input.inspections!
- , consumptions: input.consumptions!
- , notes: input.notes!
- , files: input.files!
- , signatures: input.signatures!
- , parts: input.parts!
- , statuses: input.statuses!
- )
- }
-
- //update function
- func save(_ output: Optional<mdlWorkOrder>.WrappedType, req: Request) -> EventLoopFuture<mdlWorkOrder.Output> {
- return output
- .save(on: req.db)
- .map{mdlWorkOrder.Output(
- id: output.id!
- , number: output.number
- , specialinstruction: output.specialinstruction
- , scheduledstartdate: output.scheduledstartdate
- , scheduledenddate: output.scheduledenddate
- , createdate: output.createdate
- , createuserid: output.createuserid
- , updatedate: output.updatedate
- , updateuserid: output.updateuserid
- , customer: output.$customer.value!
- , machine: output.$machine.value!
- , priority: output.$priority.value!
- , reason: output.$reason.value!
- , incompletereason: output.$incompletereason.value!
- , workorderstatuses: output.$workorderstatuses.value!
- , users: output.$userss.value!
- , inspections: output.$inspections.value!
- , consumptions: output.$consumptions.value!
- , notes: output.$notes.value!
- , files: output.$files.value!
- , signatures: output.$signatures.value!
- , parts: output.$parts.value!
- , statuses: output.$statuses.value!
- )
- }
- }
- //create function
- func save(_ output: mdlWorkOrder, _ req: Request, _ input: mdlWorkOrder.Input) -> EventLoopFuture<mdlWorkOrder.Output> {
- return output
- .save(on: req.db)
- .map{
- mdlWorkOrder.Output(
- id: output.id!
- , number: output.number
- , specialinstruction: output.specialinstruction
- , scheduledstartdate: output.scheduledstartdate
- , scheduledenddate: output.scheduledenddate
- , createdate: output.createdate
- , createuserid: output.createuserid
- , updatedate: output.updatedate
- , updateuserid: output.updateuserid
- , customer: input.customer
- , machine: input.machine
- , priority: input.priority
- , reason: input.reason
- , incompletereason: input.incompletereason
- , workorderstatuses: input.workorderstatuses!
- , users: input.users!
- , inspections: input.inspections!
- , consumptions: input.consumptions!
- , notes: input.notes!
- , files: input.files!
- , signatures: input.signatures!
- , parts: input.parts!
- , statuses: input.statuses!
- )
-
- }
- }
-
- }
- extension WorkOrderCtrl: RouteCollection{
- func boot(routes: RoutesBuilder) throws{
- let apigroup = routes.grouped("workorders")
- apigroup.get("", use: readAll)
- apigroup.get(":id", use: read)
- apigroup.post("", use: create)
- apigroup.post(":id", use: update)
- apigroup.delete(":id", use: delete)
-
-
- }
- }
|