You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

WokrOrder.swift 6.6 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. //
  2. // WorkOrder.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 10/27/21.
  6. //
  7. import Foundation
  8. import Vapor
  9. import Fluent
  10. import FluentPostgresDriver
  11. final class mdlWorkOrder: Model, Content{
  12. static let schema = "WorkOrder"
  13. @ID(custom: "id", generatedBy: .database) var id: Int?
  14. @Field(key: "number") var number: String
  15. @Field(key: "specialInstruction") var specialinstruction: String
  16. @Field(key: "scheduledStartDate") var scheduledstartdate: Date
  17. @Field(key: "scheduledEndDate") var scheduledenddate: Date
  18. @Field(key: "createUserId" ) var createuserid: Int?
  19. @Timestamp(key: "createDate", on: .create) var createdate: Date?
  20. @Field(key: "updateUserId") var updateuserid: Int?
  21. @Timestamp(key: "updateDate", on: .update) var updatedate: Date?
  22. @Parent(key: "customerId") var customer: mdlCustomer
  23. @Parent(key: "machineId") var machine: mdlMachine
  24. @Parent(key: "priorityId") var priority: mdlPriority
  25. @Parent(key: "reasonId") var reason: mdlReason
  26. @Parent(key: "incompleteReasonId") var incompletereason: mdlIncompleteReason
  27. //@Children(for: \.$workorder) var users: [mdlWorkOrderUser]
  28. @Children(for: \.$workorder) var workorderstatuses: [mdlWorkOrderStatus]
  29. @Children(for: \.$workorder) var inspections: [mdlInspection]
  30. @Children(for: \.$workorder) var consumptions: [mdlConsumption]
  31. @Children(for: \.$workorder) var notes: [mdlNote]
  32. @Children(for: \.$workorder) var files: [mdlFile]
  33. @Children(for: \.$workorder) var signatures: [mdlSignature]
  34. @Children(for: \.$workorder) var parts: [mdlWorkOrderPart]
  35. @Siblings(through: mdlWorkOrderUser.self, from: \.$workorder, to: \.$user) public var userss: [mdlUser]
  36. @Siblings(through: mdlWorkOrderStatus.self, from: \.$workorder, to: \.$status) public var statuses: [mdlStatus]
  37. init(){}
  38. init(id: Int? = nil, number: String, specialinstruction: String, scheduledstartdate: Date, scheduledenddate: Date, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, customer: mdlCustomer, machine: mdlMachine, priority: mdlPriority, reason: mdlReason, incompletereason: mdlIncompleteReason, users: [mdlUser]?, workorderstatuses: [mdlWorkOrderStatus]?, inspections: [mdlInspection]?, consumptions: [mdlConsumption]?, notes: [mdlNote]?, files: [mdlFile]?, signatures: [mdlSignature]?, parts: [mdlWorkOrderPart]?, statuses: [mdlStatus]?){
  39. self.id = id
  40. self.number = number
  41. self.specialinstruction = specialinstruction
  42. self.scheduledstartdate = scheduledstartdate
  43. self.scheduledenddate = scheduledenddate
  44. self.createuserid = createuserid
  45. self.createdate = createdate
  46. self.updateuserid = updateuserid
  47. self.updatedate = updatedate
  48. self.$customer.id = customer.id!
  49. self.$machine.id = machine.id!
  50. self.$priority.id = priority.id!
  51. self.$reason.id = reason.id!
  52. self.$incompletereason.id = incompletereason.id!
  53. self.$userss.value = users
  54. self.$workorderstatuses.value = workorderstatuses
  55. self.$inspections.value = inspections
  56. self.$consumptions.value = consumptions
  57. self.$notes.value = notes
  58. self.$files.value = files
  59. self.$signatures.value = signatures
  60. self.$parts.value = parts
  61. self.$statuses.value = statuses
  62. }
  63. }
  64. extension mdlWorkOrder {
  65. struct Input: Content{
  66. let id: Int?
  67. let number: String
  68. let specialinstruction: String
  69. let scheduledstartdate: Date
  70. let scheduledenddate: Date
  71. let createdate: Date?
  72. let createuserid: Int?
  73. let updatedate: Date?
  74. let updateuserid: Int?
  75. let customer: mdlCustomer
  76. let machine: mdlMachine
  77. let priority: mdlPriority
  78. let reason: mdlReason
  79. let incompletereason: mdlIncompleteReason
  80. let workorderstatuses: [mdlWorkOrderStatus]?
  81. let users: [mdlUser]?
  82. let inspections: [mdlInspection]?
  83. let consumptions: [mdlConsumption]?
  84. let notes: [mdlNote]?
  85. let files: [mdlFile]?
  86. let signatures: [mdlSignature]?
  87. let parts: [mdlWorkOrderPart]?
  88. let statuses: [mdlStatus]?
  89. }
  90. struct Output: Content{
  91. let id: Int?
  92. let number: String
  93. let specialinstruction: String
  94. let scheduledstartdate: Date
  95. let scheduledenddate: Date
  96. let createdate: Date?
  97. let createuserid: Int?
  98. let updatedate: Date?
  99. let updateuserid: Int?
  100. let customer: mdlCustomer
  101. let machine: mdlMachine
  102. let priority: mdlPriority
  103. let reason: mdlReason
  104. let incompletereason: mdlIncompleteReason
  105. let workorderstatuses: [mdlWorkOrderStatus]?
  106. let users: [mdlUser]?
  107. let inspections: [mdlInspection]?
  108. let consumptions: [mdlConsumption]?
  109. let notes: [mdlNote]?
  110. let files: [mdlFile]?
  111. let signatures: [mdlSignature]?
  112. let parts: [mdlWorkOrderPart]?
  113. let statuses: [mdlStatus]?
  114. }
  115. struct create: Migration{
  116. func prepare(on database: Database) -> EventLoopFuture<Void> {
  117. return database.schema("WorkOrder")
  118. .field("id", .int, .identifier(auto: true))
  119. .field("number", .string)
  120. .field("specialInstruction", .string)
  121. .field("scheduledStartDate", .datetime)
  122. .field("scheduledEndDate", .datetime)
  123. .field("customerId", .int, .required, .references("Customer", "id"))
  124. .field("machineId", .int, .required, .references("Machine", "id"))
  125. .field("priorityId", .int, .references("Priority", "id"))
  126. .field("reasonId", .int, .references("Reason", "id"))
  127. .field("incompleteReasonId", .int, .references("IncompleteReason", "id"))
  128. .field("createUserId", .int)
  129. .field("createDate", .datetime)
  130. .field("updateUserId", .int)
  131. .field("updateDate", .datetime)
  132. .create()
  133. }
  134. func revert(on database: Database) -> EventLoopFuture<Void> {
  135. database.schema("WorkOrder").delete()
  136. }
  137. }
  138. /* Uncomment if you need to seed the table.
  139. struct seed: Migration {
  140. func prepare(on database: Database) -> EventLoopFuture<Void> {
  141. // 1
  142. let array: [<#Model#>] = [
  143. <#init#>
  144. ]
  145. // 2
  146. return array.map { obj in
  147. obj.save(on: database)
  148. }
  149. .flatten(on: database.eventLoop)
  150. }
  151. func revert(on database: Database) -> EventLoopFuture<Void> {
  152. // 3
  153. <#Model#>.query(on: database).delete()
  154. }
  155. }
  156. */
  157. }