/* Options: Date: 2025-05-10 03:22:46 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: MatchCustomerRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * MatchCustomerRequires active-e Customer Service. */ // @Route("/MatchCustomer", "GET") // @DataContract public class MatchCustomerRequest : BaseSecureRequest, IReturn { public typealias Return = MatchCustomerResponse // @DataMember public var email:String // @DataMember public var homePhone:String // @DataMember public var name:String // @DataMember public var city:String // @DataMember public var state:String // @DataMember public var includeNameOnlyMatches:Bool required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case email case homePhone case name case city case state case includeNameOnlyMatches } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) email = try container.decodeIfPresent(String.self, forKey: .email) homePhone = try container.decodeIfPresent(String.self, forKey: .homePhone) name = try container.decodeIfPresent(String.self, forKey: .name) city = try container.decodeIfPresent(String.self, forKey: .city) state = try container.decodeIfPresent(String.self, forKey: .state) includeNameOnlyMatches = try container.decodeIfPresent(Bool.self, forKey: .includeNameOnlyMatches) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if email != nil { try container.encode(email, forKey: .email) } if homePhone != nil { try container.encode(homePhone, forKey: .homePhone) } if name != nil { try container.encode(name, forKey: .name) } if city != nil { try container.encode(city, forKey: .city) } if state != nil { try container.encode(state, forKey: .state) } if includeNameOnlyMatches != nil { try container.encode(includeNameOnlyMatches, forKey: .includeNameOnlyMatches) } } } // @DataContract public class MatchCustomerResponse : BaseResponse { // @DataMember public var possibleMatches:[CustomerSearchRecord] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case possibleMatches } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) possibleMatches = try container.decodeIfPresent([CustomerSearchRecord].self, forKey: .possibleMatches) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if possibleMatches.count > 0 { try container.encode(possibleMatches, forKey: .possibleMatches) } } } // @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 LocationInfo : Codable { // @DataMember public var id:Int // @DataMember public var desc:String // @DataMember public var shortDesc:String // @DataMember public var region:String // @DataMember public var latitude:Double // @DataMember public var longitude:Double // @DataMember public var inStorePickup:String // @DataMember public var active:Bool // @DataMember public var cashSaleAcct:Int? required public init(){} } // @DataContract public class CustomerSearchRecord : BindableObject { // @DataMember public var pk:Int // @DataMember public var acct:Int // @DataMember public var last:String // @DataMember public var name:String // @DataMember public var addr1:String // @DataMember public var addr2:String // @DataMember public var city:String // @DataMember public var st:String // @DataMember public var zip:String // @DataMember public var phone:String // @DataMember public var email:String // @DataMember public var openInvoices:Bool // @DataMember public var rentalActivity:Bool // @DataMember public var stLoc:String // @DataMember public var hold:Bool // @DataMember public var barcode:String // @DataMember public var color:Int // @DataMember public var dependantInfo:[DependantRecord] = [] // @DataMember public var additionalDetails:AdditionalDetail // @DataMember public var matchedOn:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case pk case acct case last case name case addr1 case addr2 case city case st case zip case phone case email case openInvoices case rentalActivity case stLoc case hold case barcode case color case dependantInfo case additionalDetails case matchedOn } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) pk = try container.decodeIfPresent(Int.self, forKey: .pk) acct = try container.decodeIfPresent(Int.self, forKey: .acct) last = try container.decodeIfPresent(String.self, forKey: .last) name = try container.decodeIfPresent(String.self, forKey: .name) addr1 = try container.decodeIfPresent(String.self, forKey: .addr1) addr2 = try container.decodeIfPresent(String.self, forKey: .addr2) city = try container.decodeIfPresent(String.self, forKey: .city) st = try container.decodeIfPresent(String.self, forKey: .st) zip = try container.decodeIfPresent(String.self, forKey: .zip) phone = try container.decodeIfPresent(String.self, forKey: .phone) email = try container.decodeIfPresent(String.self, forKey: .email) openInvoices = try container.decodeIfPresent(Bool.self, forKey: .openInvoices) rentalActivity = try container.decodeIfPresent(Bool.self, forKey: .rentalActivity) stLoc = try container.decodeIfPresent(String.self, forKey: .stLoc) hold = try container.decodeIfPresent(Bool.self, forKey: .hold) barcode = try container.decodeIfPresent(String.self, forKey: .barcode) color = try container.decodeIfPresent(Int.self, forKey: .color) dependantInfo = try container.decodeIfPresent([DependantRecord].self, forKey: .dependantInfo) ?? [] additionalDetails = try container.decodeIfPresent(AdditionalDetail.self, forKey: .additionalDetails) matchedOn = try container.decodeIfPresent(String.self, forKey: .matchedOn) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if pk != nil { try container.encode(pk, forKey: .pk) } if acct != nil { try container.encode(acct, forKey: .acct) } if last != nil { try container.encode(last, forKey: .last) } if name != nil { try container.encode(name, forKey: .name) } if addr1 != nil { try container.encode(addr1, forKey: .addr1) } if addr2 != nil { try container.encode(addr2, forKey: .addr2) } if city != nil { try container.encode(city, forKey: .city) } if st != nil { try container.encode(st, forKey: .st) } if zip != nil { try container.encode(zip, forKey: .zip) } if phone != nil { try container.encode(phone, forKey: .phone) } if email != nil { try container.encode(email, forKey: .email) } if openInvoices != nil { try container.encode(openInvoices, forKey: .openInvoices) } if rentalActivity != nil { try container.encode(rentalActivity, forKey: .rentalActivity) } if stLoc != nil { try container.encode(stLoc, forKey: .stLoc) } if hold != nil { try container.encode(hold, forKey: .hold) } if barcode != nil { try container.encode(barcode, forKey: .barcode) } if color != nil { try container.encode(color, forKey: .color) } if dependantInfo.count > 0 { try container.encode(dependantInfo, forKey: .dependantInfo) } if additionalDetails != nil { try container.encode(additionalDetails, forKey: .additionalDetails) } if matchedOn != nil { try container.encode(matchedOn, forKey: .matchedOn) } } } // @DataContract public class CustomerDefaultInfo : Codable { // @DataMember public var id:Int // @DataMember public var desc:String // @DataMember public var shortDesc:String required public init(){} } // @DataContract public class DependantRecord : Codable { // @DataMember public var name:String // @DataMember public var onlineId:String // @DataMember public var schoolDistrict:String // @DataMember public var school:String // @DataMember public var id:Int required public init(){} } // @DataContract public class AdditionalDetail : Codable { // @DataMember public var creationDate:Date // @DataMember public var lastModifiedDate:Date // @DataMember public var notes:String // @DataMember public var customerDefault:CustomerDefaultInfo // @DataMember public var taxAuthority:TaxAuthorityInfo // @DataMember public var canCharge:Bool // @DataMember public var popupNotes:String // @DataMember public var dlNumber:String // @DataMember public var phone2:String // @DataMember public var phone3:String // @DataMember public var phone4:String // @DataMember public var location:LocationInfo required public init(){} } // @DataContract public class BindableObject : Codable { required public init(){} } // @DataContract public class TaxAuthorityInfo : Codable { // @DataMember public var id:Int // @DataMember public var desc:String // @DataMember public var shortDesc: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(){} }