/* Options: Date: 2025-05-10 03:11:58 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 // @DataMember // @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header") public var oAuthToken:String required public init(){} } // @DataContract public class BaseSecureRequest : BaseRequest { /** * */ // @DataMember // @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header") public var token:String /** * */ // @DataMember // @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header") public var deviceId:String /** * */ // @DataMember // @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header") public var appId:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case token case deviceId case appId } 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) deviceId = try container.decodeIfPresent(String.self, forKey: .deviceId) appId = try container.decodeIfPresent(String.self, forKey: .appId) } 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) } if deviceId != nil { try container.encode(deviceId, forKey: .deviceId) } if appId != nil { try container.encode(appId, forKey: .appId) } } } // @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(){} }