/* Options: Date: 2026-10-24 10:59:22 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: EquipmentDvirSignOffRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/Equipment/{EquipmentID}/dvir/signoff", "POST,OPTIONS") public class EquipmentDvirSignOffRequest : IReturn, Codable { public typealias Return = EquipmentDvirSignOffResponse public var equipmentID:Int? public var defects:[DvirSignOffItem] = [] public var mechanicName:String? public var signaturePng:String? required public init(){} } public class EquipmentDvirSignOffResponse : Codable { public var vehicle:DvirVehicleDetail? public var returned:Bool? public var responseStatus:ResponseStatus? required public init(){} } public class DvirSignOffItem : Codable { public var dvirDefectID:Int? public var outcome:String? public var note:String? public var scheduledFor:String? required public init(){} } public class DvirVehicleDetail : DvirVehicleView { public var plate:String? public var vin:String? public var gvwrLbs:Int? public var branchName:String? public var inspectionDue:Date? public var insuranceExpires:Date? public var recentlyFixed:[DvirDefectView] = [] public var reviewReports:[DvirReportView] = [] public var history:[DvirReportView] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case plate case vin case gvwrLbs case branchName case inspectionDue case insuranceExpires case recentlyFixed case reviewReports case history } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) plate = try container.decodeIfPresent(String.self, forKey: .plate) vin = try container.decodeIfPresent(String.self, forKey: .vin) gvwrLbs = try container.decodeIfPresent(Int.self, forKey: .gvwrLbs) branchName = try container.decodeIfPresent(String.self, forKey: .branchName) inspectionDue = try container.decodeIfPresent(Date.self, forKey: .inspectionDue) insuranceExpires = try container.decodeIfPresent(Date.self, forKey: .insuranceExpires) recentlyFixed = try container.decodeIfPresent([DvirDefectView].self, forKey: .recentlyFixed) ?? [] reviewReports = try container.decodeIfPresent([DvirReportView].self, forKey: .reviewReports) ?? [] history = try container.decodeIfPresent([DvirReportView].self, forKey: .history) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if plate != nil { try container.encode(plate, forKey: .plate) } if vin != nil { try container.encode(vin, forKey: .vin) } if gvwrLbs != nil { try container.encode(gvwrLbs, forKey: .gvwrLbs) } if branchName != nil { try container.encode(branchName, forKey: .branchName) } if inspectionDue != nil { try container.encode(inspectionDue, forKey: .inspectionDue) } if insuranceExpires != nil { try container.encode(insuranceExpires, forKey: .insuranceExpires) } if recentlyFixed.count > 0 { try container.encode(recentlyFixed, forKey: .recentlyFixed) } if reviewReports.count > 0 { try container.encode(reviewReports, forKey: .reviewReports) } if history.count > 0 { try container.encode(history, forKey: .history) } } } public class DvirReportView : Codable { public var dvirReportID:Int? public var number:String? public var kind:String? public var kindText:String? public var equipmentID:Int? public var unit:String? public var trailers:[DvirUnitRef] = [] public var contactID:Int? public var driverName:String? public var board:String? public var forDate:String? public var filedAtUtc:Date? public var savedAtUtc:Date? public var isLate:Bool? public var isAway:Bool? public var isSatisfactory:Bool? public var odometer:Int? public var locationText:String? public var remarks:String? public var reviewedByName:String? public var reviewedAtUtc:Date? public var chip:String? public var defects:[DvirDefectView] = [] public var signatures:[DvirSignatureView] = [] required public init(){} } public class DvirDefectView : Codable { public var dvirDefectID:Int? public var clientKey:String? public var dvirReportID:Int? public var reportNumber:String? public var equipmentID:Int? public var unit:String? public var itemKey:String? public var label:String? public var formLine:String? public var isCustom:Bool? public var severity:String? public var severityText:String? public var note:String? public var source:String? public var reportedByName:String? public var reportedAtUtc:Date? public var equipmentMaintenanceID:Int? public var outcome:String? public var outcomeText:String? public var outcomeNote:String? public var scheduledFor:String? public var signedOffByName:String? public var signedOffAtUtc:Date? public var isOpen:Bool? public var withdrawn:Bool? public var photoCount:Int? public var photos:[DvirPhotoView] = [] required public init(){} } public class DvirVehicleView : Codable { public var equipmentID:Int? public var unit:String? public var name:String? public var vehicleType:String? public var isTrailer:Bool? public var vehicleStatus:String? public var status:String? public var statusText:String? public var line:String? public var firstUnsafeReport:String? public var openCount:Int? public var localToday:String? public var needsPreTrip:Bool? public var needsReview:Bool? public var reviewReportIds:[Int] = [] public var trailers:[DvirUnitRef] = [] public var lastOdometer:Int? public var inUseBy:String? public var drivingNow:Bool? public var todayPreTripId:Int? public var todayPostTripId:Int? public var openDefects:[DvirDefectView] = [] required public init(){} } public class DvirUnitRef : Codable { public var equipmentID:Int? public var unit:String? required public init(){} } public class DvirSignatureView : Codable { public var signatureRecordID:Int? public var role:String? public var signerName:String? public var signedAt:Date? public var imageUrl:String? required public init(){} } public class DvirPhotoView : Codable { public var workPhotoID:Int? public var defectKey:String? public var url:String? public var markedUrl:String? public var capturedAtUtc:Date? public var lat:Double? public var lng:Double? required public init(){} }