/* Options: Date: 2025-08-04 04:41:08 SwiftVersion: 5.0 Version: 6.110 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://szallitoiportal-be.veolia.hu //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: BrowseContract.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/user/{supplieruserid}/contract/{contractid}", "GET") public class BrowseContract : ContractBase, IReturn, IGet { public typealias Return = BrowseContractResponse required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class BrowseContractResponse : ResponseBase { public var contract:ContractDetails required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case contract } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) contract = try container.decodeIfPresent(ContractDetails.self, forKey: .contract) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if contract != nil { try container.encode(contract, forKey: .contract) } } } public protocol IConcurrencyStamp { var concurrencyStamp:String { get set } } public enum ProcedureType : Int, Codable { case Competition = 0 case Simplified = 1 } public enum TenderType : Int, Codable { case Private = 0 case Public = 1 } public enum TenderStatus : Int, Codable { case FirstRound = 0 case SecondRound = 1 case ThirdRound = 2 case Successful = 3 case UnSuccessful = 4 case Revoked = 5 } public class TenderBase : Codable { public var tenderIdentifier:String public var tenderType:TenderType public var subject:String public var procurementContact:String public var procurementContactEmail:String public var procurementContactPhone:String public var professionalContact:String public var professionalContactEmail:String public var professionalContactPhone:String public var result:String public var status:TenderStatus required public init(){} } public class ModifyContractBase : ModifyRequestBase { public var tenderUserId:Int? public var contractIdentifier:String public var supplierUserId:Int public var buyer:String public var subject:String public var confirmationDeadline:Date required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case tenderUserId case contractIdentifier case supplierUserId case buyer case subject case confirmationDeadline } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) tenderUserId = try container.decodeIfPresent(Int.self, forKey: .tenderUserId) contractIdentifier = try container.decodeIfPresent(String.self, forKey: .contractIdentifier) supplierUserId = try container.decodeIfPresent(Int.self, forKey: .supplierUserId) buyer = try container.decodeIfPresent(String.self, forKey: .buyer) subject = try container.decodeIfPresent(String.self, forKey: .subject) confirmationDeadline = try container.decodeIfPresent(Date.self, forKey: .confirmationDeadline) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if tenderUserId != nil { try container.encode(tenderUserId, forKey: .tenderUserId) } if contractIdentifier != nil { try container.encode(contractIdentifier, forKey: .contractIdentifier) } if supplierUserId != nil { try container.encode(supplierUserId, forKey: .supplierUserId) } if buyer != nil { try container.encode(buyer, forKey: .buyer) } if subject != nil { try container.encode(subject, forKey: .subject) } if confirmationDeadline != nil { try container.encode(confirmationDeadline, forKey: .confirmationDeadline) } } } public class ContractBase : Codable { public var supplierUserId:Int public var contractId:Int required public init(){} } public class ResponseBase : Codable { public var responseStatus:ResponseStatus required public init(){} } public class ContractDetails : ModifyContractBase { public var id:Int public var cancellationDateTime:Date? public var isCancelled:Bool public var meta:[String:String] = [:] public var contractVersions:[ContractVersionSimple] = [] public var tender:TenderDetails required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case id case cancellationDateTime case isCancelled case meta case contractVersions case tender } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) id = try container.decodeIfPresent(Int.self, forKey: .id) cancellationDateTime = try container.decodeIfPresent(Date.self, forKey: .cancellationDateTime) isCancelled = try container.decodeIfPresent(Bool.self, forKey: .isCancelled) meta = try container.decodeIfPresent([String:String].self, forKey: .meta) ?? [:] contractVersions = try container.decodeIfPresent([ContractVersionSimple].self, forKey: .contractVersions) ?? [] tender = try container.decodeIfPresent(TenderDetails.self, forKey: .tender) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if id != nil { try container.encode(id, forKey: .id) } if cancellationDateTime != nil { try container.encode(cancellationDateTime, forKey: .cancellationDateTime) } if isCancelled != nil { try container.encode(isCancelled, forKey: .isCancelled) } if meta.count > 0 { try container.encode(meta, forKey: .meta) } if contractVersions.count > 0 { try container.encode(contractVersions, forKey: .contractVersions) } if tender != nil { try container.encode(tender, forKey: .tender) } } } public class TenderDetails : TenderBase, IConcurrencyStamp { public var id:Int public var starterTenderRoundId:Int? public var procedureType:ProcedureType public var meta:[String:String] = [:] public var tenderFiles:[TenderFileDetails] = [] public var tenderRounds:[TenderRoundSimple] = [] public var concurrencyStamp:String public var isProcurementEnabled:Bool public var isComplianceEnabled:Bool required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case id case starterTenderRoundId case procedureType case meta case tenderFiles case tenderRounds case concurrencyStamp case isProcurementEnabled case isComplianceEnabled } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) id = try container.decodeIfPresent(Int.self, forKey: .id) starterTenderRoundId = try container.decodeIfPresent(Int.self, forKey: .starterTenderRoundId) procedureType = try container.decodeIfPresent(ProcedureType.self, forKey: .procedureType) meta = try container.decodeIfPresent([String:String].self, forKey: .meta) ?? [:] tenderFiles = try container.decodeIfPresent([TenderFileDetails].self, forKey: .tenderFiles) ?? [] tenderRounds = try container.decodeIfPresent([TenderRoundSimple].self, forKey: .tenderRounds) ?? [] concurrencyStamp = try container.decodeIfPresent(String.self, forKey: .concurrencyStamp) isProcurementEnabled = try container.decodeIfPresent(Bool.self, forKey: .isProcurementEnabled) isComplianceEnabled = try container.decodeIfPresent(Bool.self, forKey: .isComplianceEnabled) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if id != nil { try container.encode(id, forKey: .id) } if starterTenderRoundId != nil { try container.encode(starterTenderRoundId, forKey: .starterTenderRoundId) } if procedureType != nil { try container.encode(procedureType, forKey: .procedureType) } if meta.count > 0 { try container.encode(meta, forKey: .meta) } if tenderFiles.count > 0 { try container.encode(tenderFiles, forKey: .tenderFiles) } if tenderRounds.count > 0 { try container.encode(tenderRounds, forKey: .tenderRounds) } if concurrencyStamp != nil { try container.encode(concurrencyStamp, forKey: .concurrencyStamp) } if isProcurementEnabled != nil { try container.encode(isProcurementEnabled, forKey: .isProcurementEnabled) } if isComplianceEnabled != nil { try container.encode(isComplianceEnabled, forKey: .isComplianceEnabled) } } } public class TenderFileDetails : BrowseFileResponseBase { public var tenderId:Int public var documentType:String public var isTenderAnnouncement:Bool required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case tenderId case documentType case isTenderAnnouncement } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) tenderId = try container.decodeIfPresent(Int.self, forKey: .tenderId) documentType = try container.decodeIfPresent(String.self, forKey: .documentType) isTenderAnnouncement = try container.decodeIfPresent(Bool.self, forKey: .isTenderAnnouncement) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if tenderId != nil { try container.encode(tenderId, forKey: .tenderId) } if documentType != nil { try container.encode(documentType, forKey: .documentType) } if isTenderAnnouncement != nil { try container.encode(isTenderAnnouncement, forKey: .isTenderAnnouncement) } } } public class ModifyRequestBase : IConcurrencyStamp, Codable { public var concurrencyStamp:String required public init(){} } public class ContractVersionSimple : Codable { public var id:Int public var contractId:Int public var version:Int public var isViewed:Bool public var status:ReviewStatus required public init(){} } public enum ReviewStatus : Int, Codable { case Draft = 0 case Commented = 1 case Accepted = 2 } public class BrowseFileResponseBase : Codable { public var id:Int public var fileContentId:Int public var fileName:String public var size:Int required public init(){} } public class TenderRoundSimple : Codable { public var id:Int public var name:String public var isQuestionEnabled:Bool public var questionDeadline:Date? public var answerDeadline:Date? public var submissionDeadline:Date public var isSupplementaryEnabled:Bool public var supplementaryRequestDeadline:Date? public var supplementaryDeadline:Date? public var announcementDateTime:Date public var status:Int required public init(){} }