/* Options: Date: 2024-11-21 13:22:48 SwiftVersion: 5.0 Version: 8.23 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: NextFreeTimeQuery.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/services/{ServiceId}/nextfreetime", "GET") public class NextFreeTimeQuery : IReturn, IInterval, Codable { public typealias Return = AvailableTimesResponse /** * Company to show available time for */ // @ApiMember(Description="Company to show available time for", ParameterType="query") public var companyId:String? /** * Service id */ // @ApiMember(Description="Service id", IsRequired=true, ParameterType="path") public var serviceId:Int /** * From what datetime to search available times */ // @ApiMember(DataType="dateTime", Description="From what datetime to search available times", IsRequired=true, ParameterType="query") public var from:Date /** * To what datetime to show available times. Optional, if no datetime is set it will search one year */ // @ApiMember(DataType="dateTime", Description="To what datetime to show available times. Optional, if no datetime is set it will search one year", IsRequired=true, ParameterType="query") public var to:Date /** * Here you can select one of the resource in each resource type connected to the service, if none is selected it will show available times for all */ // @ApiMember(Description="Here you can select one of the resource in each resource type connected to the service, if none is selected it will show available times for all", ParameterType="query") public var resources:[AvailableTimesResourceTypeResource] = [] /** * Here you select number of resources to book (in each resource type). Default is 1. */ // @ApiMember(Description="Here you select number of resources to book (in each resource type). Default is 1.", ParameterType="query") public var numberOfResources:Int /** * The duration you want to book. Needs to withing the service Min and Max. If not set it will use the service duration */ // @ApiMember(DataType="bool", Description="The duration you want to book. Needs to withing the service Min and Max. If not set it will use the service duration", ParameterType="query") public var duration:Int? /** * If you want to include the connected resource types and resources */ // @ApiMember(Description="If you want to include the connected resource types and resources", ParameterType="query") public var showPerResource:Bool required public init(){} } public class AvailableTimesResponse : Codable { public var companyId:String public var serviceId:Int public var timesFreeTextSingle:String public var timesFreeTextMultiple:String public var times:[AvailableTimesSum] = [] required public init(){} } public protocol IInterval { var from:Date { get set } var to:Date { get set } } public class AvailableTimesResourceTypeResource : Codable { /** * The resourcetype id */ // @ApiMember(Description="The resourcetype id") public var resourceTypeId:Int /** * The resource id */ // @ApiMember(Description="The resource id") public var resourceId:Int required public init(){} } public class AvailableTimesSum : IAvailableTime, Codable { public var from:Date public var to:Date public var free:Int public var freeSpots:Int public var exceptionTexts:[ExceptionText] = [] required public init(){} } public class ExceptionText : Codable { public var reason:String public var reasonPublic:String required public init(){} } public protocol IAvailableTime : IInterval { var free:Int { get set } }