/* Options: Date: 2025-05-10 03:45:06 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: CustomerInfoRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * CustomerInfoRequires active-e Customer Service. */ // @Route("/CustomerInfo", "GET") // @DataContract public class CustomerInfoRequest : BaseSecureRequest, IReturn { public typealias Return = CustomerInfoResponse // @DataMember public var acct:Int required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case acct } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) acct = try container.decodeIfPresent(Int.self, forKey: .acct) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if acct != nil { try container.encode(acct, forKey: .acct) } } } // @DataContract public class CustomerInfoResponse : BaseResponse { // @DataMember public var customer:CustomerSearchRecord // @DataMember public var discountInfo:CustomerDiscountInfo // @DataMember public var memberships:[CustomerMembershipInfo] = [] // @DataMember public var emails:[CustomerEmailInfo] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case customer case discountInfo case memberships case emails } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) customer = try container.decodeIfPresent(CustomerSearchRecord.self, forKey: .customer) discountInfo = try container.decodeIfPresent(CustomerDiscountInfo.self, forKey: .discountInfo) memberships = try container.decodeIfPresent([CustomerMembershipInfo].self, forKey: .memberships) ?? [] emails = try container.decodeIfPresent([CustomerEmailInfo].self, forKey: .emails) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if customer != nil { try container.encode(customer, forKey: .customer) } if discountInfo != nil { try container.encode(discountInfo, forKey: .discountInfo) } if memberships.count > 0 { try container.encode(memberships, forKey: .memberships) } if emails.count > 0 { try container.encode(emails, forKey: .emails) } } } // @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 CustomerDiscountInfo : Codable { // @DataMember public var accessoryInventory:Double // @DataMember public var serializedInventory:Double // @DataMember public var shortTermRental:Double // @DataMember public var nonInventory:Double // @DataMember public var labor:Double // @DataMember public var mediaInventory:Double // @DataMember public var categoryLevelDiscounts:[CategoryLevelDiscount] = [] // @DataMember public var priceLevel:String required public init(){} } // @DataContract public class CustomerMembershipInfo : Codable { // @DataMember public var Description:String // @DataMember public var teeLevel:Int // @DataMember public var webTeeLevel:Int // @DataMember public var stationLevel:Int required public init(){} } // @DataContract public class CustomerEmailInfo : Codable { // @DataMember public var Description:String // @DataMember public var email:String // @DataMember public var method:String // @DataMember public var type:String required public init(){} } // @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 CategoryLevelDiscount : Codable { // @DataMember public var category:Int // @DataMember public var subCategory:Int? // @DataMember public var discountType:String // @DataMember public var discountAmount:Double 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(){} }