/* Options: Date: 2025-12-06 06:28:21 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: ProjectEquipmentListRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/Project/Equipment/{ProjectID}", "GET,POST,PUT,DELETE,OPTIONS") // @Route("/v1/Project/Equipment/{ProjectID}/{JobID}", "GET,POST,PUT,DELETE,OPTIONS") public class ProjectEquipmentListRequest : IReturn, Codable { public typealias Return = ProjectEquipmentListResponse public var projectID:Int? public var jobID:Int? public var projectEquipment:[Equipment] = [] required public init(){} } public class ProjectEquipmentListResponse : Codable { public var responseStatus:ResponseStatus? public var projectEquipment:[ProjectEquipment] = [] required public init(){} } public class ProjectEquipment : Equipment { public var projectEquipmentID:Int? public var projectID:Int? public var projectEndDate:Date? public var equipmentRate:Double? public var jobID:Int? public var billedEquipmentRate:Double? public var status:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case projectEquipmentID case projectID case projectEndDate case equipmentRate case jobID case billedEquipmentRate case status } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) projectEquipmentID = try container.decodeIfPresent(Int.self, forKey: .projectEquipmentID) projectID = try container.decodeIfPresent(Int.self, forKey: .projectID) projectEndDate = try container.decodeIfPresent(Date.self, forKey: .projectEndDate) equipmentRate = try container.decodeIfPresent(Double.self, forKey: .equipmentRate) jobID = try container.decodeIfPresent(Int.self, forKey: .jobID) billedEquipmentRate = try container.decodeIfPresent(Double.self, forKey: .billedEquipmentRate) status = try container.decodeIfPresent(String.self, forKey: .status) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if projectEquipmentID != nil { try container.encode(projectEquipmentID, forKey: .projectEquipmentID) } if projectID != nil { try container.encode(projectID, forKey: .projectID) } if projectEndDate != nil { try container.encode(projectEndDate, forKey: .projectEndDate) } if equipmentRate != nil { try container.encode(equipmentRate, forKey: .equipmentRate) } if jobID != nil { try container.encode(jobID, forKey: .jobID) } if billedEquipmentRate != nil { try container.encode(billedEquipmentRate, forKey: .billedEquipmentRate) } if status != nil { try container.encode(status, forKey: .status) } } } public class Project : Codable { public var projectID:Int? public var projectUID:String? public var projectName:String? public var imageURL:String? public var imageKey:String? public var clientName:String? public var clientPhone:String? public var clientEmail:String? public var projectManagerID:Int? public var projectManagerName:String? public var startDate:Date? public var endDate:Date? public var actualStartDate:Date? public var actualEndDate:Date? public var jobCount:Int? public var crewMemberCount:Int? public var equipmentCount:Int? public var materialCount:Int? public var projectStatusID:Int16? public var projectStatusDescription:String? public var budget:Double? public var costToDate:Double? public var projectLocation:String? public var projectType:String? public var projectSponsor:String? public var createdBy:String? public var createdAt:Date? public var updatedAt:Date? public var projectDescription:String? public var scope:String? public var statusId:Int? required public init(){} } public class Equipment : Codable { public var equipmentID:Int? public var equipmentName:String? public var equipmentTypeID:Int16? public var manufacturer:String? public var equipmentType:String? public var serialNumber:String? public var barCode:String? public var equipmentLocation:String? public var imageURL:String? public var productDetailsURL:String? public var recordCreatedDate:Date? public var createdByUID:String? public var active:Bool? public var notes:String? public var rate:Double? public var projects:[Project] = [] required public init(){} }