/* Options: Date: 2025-08-04 00:08:05 SwiftVersion: 5.0 Version: 8.40 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://active-ewebservice.biz/aeServices30/api //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: GetContractDetailsRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * GetContractDetailsRequires active-e Contracts Service or active-e Customer Service */ // @Route("/GetContractDetails", "POST, GET") // @DataContract public class GetContractDetailsRequest : BaseSecureRequest, IReturn { public typealias Return = GetContractDetailsResponse // @DataMember public var ref:String // @DataMember public var sub:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case ref case sub } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) ref = try container.decodeIfPresent(String.self, forKey: .ref) sub = try container.decodeIfPresent(Int.self, forKey: .sub) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if ref != nil { try container.encode(ref, forKey: .ref) } if sub != nil { try container.encode(sub, forKey: .sub) } } } // @DataContract public class GetContractDetailsResponse : BaseResponse { // @DataMember public var accountSub:String // @DataMember public var nextDueDate:Date // @DataMember public var paymentAmount:Double // @DataMember public var pastDueAmount:Double // @DataMember public var lateCharges:Double // @DataMember public var otherCharges:Double // @DataMember public var totalDue:Double // @DataMember public var accumulatedCredit:Double // @DataMember public var studentName:String // @DataMember public var schoolName:String // @DataMember public var topic:String // @DataMember public var inventory:[InventoryGeneric] = [] // @DataMember public var payments:[PaymentGeneric] = [] // @DataMember public var paymentAmt:Double // @DataMember public var pastDueAmt:Double // @DataMember public var currentBalance:Double // @DataMember public var totalPayoff:Double // @DataMember public var discountedPayoff:Double? // @DataMember public var payoffDate:Date required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case accountSub case nextDueDate case paymentAmount case pastDueAmount case lateCharges case otherCharges case totalDue case accumulatedCredit case studentName case schoolName case topic case inventory case payments case paymentAmt case pastDueAmt case currentBalance case totalPayoff case discountedPayoff case payoffDate } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) accountSub = try container.decodeIfPresent(String.self, forKey: .accountSub) nextDueDate = try container.decodeIfPresent(Date.self, forKey: .nextDueDate) paymentAmount = try container.decodeIfPresent(Double.self, forKey: .paymentAmount) pastDueAmount = try container.decodeIfPresent(Double.self, forKey: .pastDueAmount) lateCharges = try container.decodeIfPresent(Double.self, forKey: .lateCharges) otherCharges = try container.decodeIfPresent(Double.self, forKey: .otherCharges) totalDue = try container.decodeIfPresent(Double.self, forKey: .totalDue) accumulatedCredit = try container.decodeIfPresent(Double.self, forKey: .accumulatedCredit) studentName = try container.decodeIfPresent(String.self, forKey: .studentName) schoolName = try container.decodeIfPresent(String.self, forKey: .schoolName) topic = try container.decodeIfPresent(String.self, forKey: .topic) inventory = try container.decodeIfPresent([InventoryGeneric].self, forKey: .inventory) ?? [] payments = try container.decodeIfPresent([PaymentGeneric].self, forKey: .payments) ?? [] paymentAmt = try container.decodeIfPresent(Double.self, forKey: .paymentAmt) pastDueAmt = try container.decodeIfPresent(Double.self, forKey: .pastDueAmt) currentBalance = try container.decodeIfPresent(Double.self, forKey: .currentBalance) totalPayoff = try container.decodeIfPresent(Double.self, forKey: .totalPayoff) discountedPayoff = try container.decodeIfPresent(Double.self, forKey: .discountedPayoff) payoffDate = try container.decodeIfPresent(Date.self, forKey: .payoffDate) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if accountSub != nil { try container.encode(accountSub, forKey: .accountSub) } if nextDueDate != nil { try container.encode(nextDueDate, forKey: .nextDueDate) } if paymentAmount != nil { try container.encode(paymentAmount, forKey: .paymentAmount) } if pastDueAmount != nil { try container.encode(pastDueAmount, forKey: .pastDueAmount) } if lateCharges != nil { try container.encode(lateCharges, forKey: .lateCharges) } if otherCharges != nil { try container.encode(otherCharges, forKey: .otherCharges) } if totalDue != nil { try container.encode(totalDue, forKey: .totalDue) } if accumulatedCredit != nil { try container.encode(accumulatedCredit, forKey: .accumulatedCredit) } if studentName != nil { try container.encode(studentName, forKey: .studentName) } if schoolName != nil { try container.encode(schoolName, forKey: .schoolName) } if topic != nil { try container.encode(topic, forKey: .topic) } if inventory.count > 0 { try container.encode(inventory, forKey: .inventory) } if payments.count > 0 { try container.encode(payments, forKey: .payments) } if paymentAmt != nil { try container.encode(paymentAmt, forKey: .paymentAmt) } if pastDueAmt != nil { try container.encode(pastDueAmt, forKey: .pastDueAmt) } if currentBalance != nil { try container.encode(currentBalance, forKey: .currentBalance) } if totalPayoff != nil { try container.encode(totalPayoff, forKey: .totalPayoff) } if discountedPayoff != nil { try container.encode(discountedPayoff, forKey: .discountedPayoff) } if payoffDate != nil { try container.encode(payoffDate, forKey: .payoffDate) } } } // @DataContract public class BaseRequest : Codable { /** * This is your AIM API Key provided by Tri-Tech */ // @DataMember // @ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="Header") public var apiKey:String /** * The OAuthToken token return by AeServices30 */ // @DataMember // @ApiMember(DataType="string", Description="The OAuthToken token return by AeServices30", IsRequired=true, Name="OAuthToken", ParameterType="Header") public var oAuthToken:String /** * The Device ID of the Mobile Device. Not used for non-mobile devices. */ // @DataMember // @ApiMember(DataType="string", Description="The Device ID of the Mobile Device. Not used for non-mobile devices.", Name="DeviceId", ParameterType="Header") public var deviceId:String /** * An identifier for your integration */ // @DataMember // @ApiMember(DataType="string", Description="An identifier for your integration", IsRequired=true, Name="AppId", ParameterType="Header") public var appId:String required public init(){} } // @DataContract public class BaseSecureRequest : BaseRequest { /** * The Login Token return by the Security API. Required for secured calls. */ // @DataMember // @ApiMember(DataType="string", Description="The Login Token return by the Security API. Required for secured calls.", Name="Token", ParameterType="Header") public var token:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case token } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) token = try container.decodeIfPresent(String.self, forKey: .token) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if token != nil { try container.encode(token, forKey: .token) } } } // @DataContract public class InventoryGeneric : Codable { // @DataMember public var model:String // @DataMember public var item:String // @DataMember public var sku:String // @DataMember public var serial:String // @DataMember public var desc:String // @DataMember public var mfg:String required public init(){} } // @DataContract public class PaymentGeneric : Codable { // @DataMember public var date:Date // @DataMember public var amount:Double // @DataMember public var ref:String required public init(){} } // @DataContract public class BaseResponse : Codable { /** * */ // @DataMember // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body") public var status:BaseResponseResult required public init(){} }