/* Options: Date: 2024-11-24 15:06:33 SwiftVersion: 5.0 Version: 6.50 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://clubready.com/api/current //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: GetClassScheduleRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Get a list of classes for a locations. Specify ToDate / FromDate (max 7 days) to get a list of classes within a date range. Omitting dates will retrieve classes for today. */ // @Route("/scheduling/class-schedule", "GET") // @Route("/v2/{Apikey}/club/{StoreID}/classschedule", "GET") // @Api(Description="Get a list of classes for a locations. Specify ToDate / FromDate (max 7 days) to get a list of classes within a date range. Omitting dates will retrieve classes for today.") public class GetClassScheduleRequest : GetClassScheduleRequestDto, IRestrictedApiRequest { /** * Api Key - grants access to resources */ // @ApiMember(DataType="string", Description="Api Key - grants access to resources", IsRequired=true, Name="ApiKey", ParameterType="query") public var apiKey:String /** * StoreID */ // @ApiMember(DataType="integer", Description="StoreID", IsRequired=true, Name="StoreID", ParameterType="query") public var storeId:Int? /** * From Date (if blank, defaults to today; format: YYYY-MM-DD) */ // @ApiMember(DataType="date", Description="From Date (if blank, defaults to today; format: YYYY-MM-DD)", Name="FromDate", ParameterType="query") public var fromDate:Date? /** * To Date (max 7 days; format: YYYY-MM-DD) */ // @ApiMember(DataType="date", Description="To Date (max 7 days; format: YYYY-MM-DD)", IsRequired=true, Name="ToDate", ParameterType="query") public var toDate:Date? /** * Id of Category Names to filter results by */ // @ApiMember(DataType="int", Description="Id of Category Names to filter results by", Name="FilterByCategoryId", ParameterType="query") public var filterByCategoryId:Int? public var restrictedId:Int? public var restrictedResourceType:RestrictedResourceType required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case apiKey case storeId case fromDate case toDate case filterByCategoryId case restrictedId case restrictedResourceType } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) apiKey = try container.decodeIfPresent(String.self, forKey: .apiKey) storeId = try container.decodeIfPresent(Int.self, forKey: .storeId) fromDate = try container.decodeIfPresent(Date.self, forKey: .fromDate) toDate = try container.decodeIfPresent(Date.self, forKey: .toDate) filterByCategoryId = try container.decodeIfPresent(Int.self, forKey: .filterByCategoryId) restrictedId = try container.decodeIfPresent(Int.self, forKey: .restrictedId) restrictedResourceType = try container.decodeIfPresent(RestrictedResourceType.self, forKey: .restrictedResourceType) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if apiKey != nil { try container.encode(apiKey, forKey: .apiKey) } if storeId != nil { try container.encode(storeId, forKey: .storeId) } if fromDate != nil { try container.encode(fromDate, forKey: .fromDate) } if toDate != nil { try container.encode(toDate, forKey: .toDate) } if filterByCategoryId != nil { try container.encode(filterByCategoryId, forKey: .filterByCategoryId) } if restrictedId != nil { try container.encode(restrictedId, forKey: .restrictedId) } if restrictedResourceType != nil { try container.encode(restrictedResourceType, forKey: .restrictedResourceType) } } } public enum RestrictedResourceType : String, Codable { case Store case Chain case User case Undefined } public protocol IRestrictedApiRequest : IApiKeyEndpoint { var restrictedId:Int? { get set } var restrictedResourceType:RestrictedResourceType { get set } } public protocol IApiKeyEndpoint { var apiKey:String { get set } } public class GetClassScheduleRequestDto : ApiDtoBase { public var fromDate:Date? public var toDate:Date? public var filterByCategoryId:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case fromDate case toDate case filterByCategoryId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) fromDate = try container.decodeIfPresent(Date.self, forKey: .fromDate) toDate = try container.decodeIfPresent(Date.self, forKey: .toDate) filterByCategoryId = try container.decodeIfPresent(Int.self, forKey: .filterByCategoryId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if fromDate != nil { try container.encode(fromDate, forKey: .fromDate) } if toDate != nil { try container.encode(toDate, forKey: .toDate) } if filterByCategoryId != nil { try container.encode(filterByCategoryId, forKey: .filterByCategoryId) } } } public class ApiDtoBase : Codable { public var apiKey:String public var storeId:Int? public var chainId:Int? required public init(){} }