/* Options: Date: 2025-10-21 20:16:16 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: CreateBookingUserQueue.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/bookinguserqueue", "POST") public class CreateBookingUserQueue : IReturn, Codable { public typealias Return = BookingUserQueueItemResponse public var companyId:String? public var customerId:String? public var customer:CustomerToHandle? public var invoiceAddress:InvoiceAddressToHandle? public var serviceId:Int? public var from:Date? public var to:Date? public var quantities:[QuantityToBook] = [] /** * If Custom Fields are added to the booking, here you will send the id and the value for each custom field to be saved */ // @ApiMember(Description="If Custom Fields are added to the booking, here you will send the id and the value for each custom field to be saved") public var customFields:[AddCustomField] = [] required public init(){} } public class BookingUserQueueItemResponse : Codable { public var bookingUserQueueId:Int? public var companyId:String? public var customerId:String? public var serviceId:Int? public var from:Date? public var to:Date? public var statusCode:Int? public var statusName:String? public var sendConfirmationTime:Date? public var quantities:[BookingUserQueuePriceResponse] = [] public var service:ServiceInfoResponse? public var company:CompanyInfoResponse? required public init(){} } public class AddCustomField : Codable { public var id:Int? public var value:String? required public init(){} } public class CustomerToHandle : CustomerBase { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class InvoiceAddressToHandle : IInvoiceAddress, Codable { public var corporateIdentityNumber:String? public var invoiceAddress1:String? public var invoiceAddress2:String? public var invoiceCity:String? public var invoicePostalCode:String? public var invoiceCountryCode:String? required public init(){} } public class QuantityToBook : Codable { /** * If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book) */ // @ApiMember(Description="If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book)", IsRequired=true) public var priceId:Int? /** * Set the number of spots or resources you want to book on the specific price category */ // @ApiMember(Description="Set the number of spots or resources you want to book on the specific price category", IsRequired=true) public var quantity:Int? /** * If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information. */ // @ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.") public var occupiesSpot:Bool? required public init(){} } public class CustomerBase : ICustomerBase, Codable { public var customerId:String? public var firstname:String? public var lastname:String? public var email:String? public var phone:String? public var subscribedToNewsletter:Bool? required public init(){} } public protocol ICustomerBase { var customerId:String? { get set } var firstname:String? { get set } var lastname:String? { get set } var email:String? { get set } var phone:String? { get set } var subscribedToNewsletter:Bool? { get set } } public class GroupBookingSettings : Codable { public var active:Bool? public var min:Int? public var max:Int? required public init(){} } public class MultipleResourceSettings : Codable { public var active:Bool? public var min:Int? public var max:Int? required public init(){} } public class BookingUserQueuePriceResponse : Codable { public var companyId:String? public var id:Int? public var bookingUserQueueId:Int? public var servicePriceId:Int? public var quantity:Int? required public init(){} } public class ServiceInfoResponse : Codable { public var id:Int? public var name:String? public var Description:String? public var imageUrl:Uri? public var lengthInMinutes:Int? public var maxNumberOfSpotsPerBooking:Int? public var minNumberOfSpotsPerBooking:Int? public var groupBooking:GroupBookingSettings? public var multipleResource:MultipleResourceSettings? public var isGroupBooking:Bool? public var isPaymentEnabled:Bool? required public init(){} } public class CompanyInfoResponse : Codable { public var id:String? public var name:String? public var logoType:Uri? public var category:String? public var street1:String? public var street2:String? public var zipCode:String? public var city:String? public var countryId:String? public var longitude:String? public var latitude:String? public var phone:String? public var email:String? public var homePage:String? public var sitePath:String? required public init(){} } public protocol IInvoiceAddress { var corporateIdentityNumber:String? { get set } var invoiceAddress1:String? { get set } var invoiceAddress2:String? { get set } var invoiceCity:String? { get set } var invoicePostalCode:String? { get set } var invoiceCountryCode:String? { get set } }