import Dependencies import Foundation public struct PurchaseOrder: Codable, Equatable, Identifiable, Sendable { public let id: Int public var workOrder: Int? public var materials: String public var customer: String public var truckStock: Bool public var createdBy: User public var createdFor: Employee public var vendorBranch: VendorBranch public var createdAt: Date? public var updatedAt: Date? public init( id: Int, workOrder: Int? = nil, materials: String, customer: String, truckStock: Bool, createdBy: User, createdFor: Employee, vendorBranch: VendorBranch, createdAt: Date?, updatedAt: Date? ) { self.id = id self.workOrder = workOrder self.materials = materials self.customer = customer self.truckStock = truckStock self.createdBy = createdBy self.createdFor = createdFor self.vendorBranch = vendorBranch self.createdAt = createdAt self.updatedAt = updatedAt } } public extension PurchaseOrder { // TODO: Add created by id. struct Create: Codable, Sendable { public let id: Int? public let workOrder: Int? public let materials: String public let customer: String public let truckStock: Bool? public let createdForID: Employee.ID public let vendorBranchID: VendorBranch.ID public init( id: Int? = nil, workOrder: Int? = nil, materials: String, customer: String, truckStock: Bool? = nil, createdForID: Employee.ID, vendorBranchID: VendorBranch.ID ) { self.id = id self.workOrder = workOrder self.materials = materials self.customer = customer self.truckStock = truckStock self.createdForID = createdForID self.vendorBranchID = vendorBranchID } } } #if DEBUG // public extension PurchaseOrder { // static func generateMocks( // count: Int = 50, // employees: [Employee], // users: [User], // vendorBranches: [VendorBranch] // ) -> [Self] { // @Dependency(\.date.now) var now // @Dependency(\.uuid) var uuid // // var output = [Self]() // // for id in 0 ... count { // output.append(.init( // id: id, // workOrder: Int.random(in: 0 ... 100), // materials: "Some thing", // customer: "\(RandomNames.firstNames.randomElement()!) \(RandomNames.lastNames.randomElement()!)", // truckStock: Bool.random(), // createdBy: users.randomElement()!, // createdFor: employees.randomElement()!, // vendorBranch: vendorBranches.randomElement()!, // createdAt: now, // updatedAt: now // )) // } // // return output // } // } public extension PurchaseOrder.Create { static func generateMocks( count: Int = 50, employees: [Employee], vendorBranches: [VendorBranch] ) -> [Self] { precondition(employees.count > 0) precondition(vendorBranches.count > 0) return (0 ... count).reduce(into: [Self]()) { array, _ in array.append(.init( materials: "Some materials", customer: "\(RandomNames.firstNames.randomElement()!) \(RandomNames.lastNames.randomElement()!)", createdForID: employees.randomElement()!.id, vendorBranchID: vendorBranches.randomElement()!.id )) } } } #endif