/* Options: Date: 2024-12-03 18:39:18 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: AddResourceToBooking.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/bookings/{Id}/resource", "POST") // @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) // @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403) // @ValidateRequest(Validator="IsAuthenticated") public class AddResourceToBooking : IReturn, ICompany, Codable { public typealias Return = BookingQueryResponse /** * The company id, if empty will use the company id for the user you are logged in with. */ // @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.") public var companyId:String? /** * Id of the booking */ // @ApiMember(Description="Id of the booking", IsRequired=true, ParameterType="path") public var id:Int? /** * The resource type id */ // @ApiMember(Description="The resource type id") public var resourceTypeId:Int /** * The resource id */ // @ApiMember(Description="The resource id") public var resourceId:Int required public init(){} } public class BookingQueryResponse : Codable { public var id:Int public var companyId:String public var from:Date public var to:Date public var status:BookingStatusEnum public var statusId:Int public var statusName:String public var statusInfo:BookingStatusQueryResponse public var sendEmailReminder:Bool public var sendSmsReminder:Bool public var sendSmsConfirmation:Bool public var sendEmailConfirmation:Bool public var lastTimeToUnBook:Date? public var customFields:[CustomFieldConfigData] = [] public var customFieldValues:[CustomFieldDataResponse] = [] public var bookedResourceTypes:[BookedResourceType] = [] public var company:BookedCompany public var customer:BookedCustomer public var quantities:[BookedQuantity] = [] public var service:ServiceInfoResponse public var paymentExpiration:Date? public var log:[BookingLogQueryResponse] = [] public var paymentLog:[BookingPaymentLogQueryResponse] = [] public var checkoutLog:[BookingCheckoutQueryResponse] = [] public var externalReference:[ExternalReferenceResponse] = [] public var responseStatus:ResponseStatus public var calendarExportStatus:BookingCalendarExportStatus public var lengthInMinutes:Int? public var bookedBy:String public var bookedComments:String public var unbookedComments:String public var commentsToCustomer:String public var createdDate:Date public var updatedDate:Date public var unbookedOn:Date? public var cancellationCode:String public var ratingCode:String required public init(){} } public protocol ICompany { var companyId:String? { get set } } public class BookingStatusQueryResponse : Codable { public var id:Int public var name:String public var Description:String public var icon:String public var color:String required public init(){} } public enum BookingStatusEnum : Int, Codable { case Booked = 1 case Unbooked = 2 case Reserved = 3 case Canceled = 4 case AwaitingPayment = 5 case AwaitingPaymentNoTimeLimit = 6 case Payed = 7 case AwaitingPaymentRequestFromAdmin = 8 case AwaitingPaymentFromProvider = 9 case Invoiced = 10 } 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 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 CustomFieldConfigData : Codable { /** * Custom field id */ // @ApiMember(Description="Custom field id") public var id:Int /** * Configuration name. Example: 'Number of persons'. */ // @ApiMember(Description="Configuration name. Example: 'Number of persons'.") public var name:String /** * Custom field description. Example: 'For how many persons is this booking?' */ // @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'") public var Description:String /** * Field width. Example: 20 for 20px */ // @ApiMember(Description="Field width. Example: 20 for 20px") public var width:Int? /** * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */ // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'") public var dataType:String /** * Default value of the field. Example: '3' */ // @ApiMember(Description="Default value of the field. Example: '3'") public var defaultValue:String /** * Determines if the field is required to have a value or not */ // @ApiMember(Description="Determines if the field is required to have a value or not") public var isMandatory:Bool /** * Error message shown to the user if the field data is required but not entered */ // @ApiMember(Description="Error message shown to the user if the field data is required but not entered") public var mandatoryErrorMessage:String /** * Max lenght of the field */ // @ApiMember(Description="Max lenght of the field") public var maxLength:Int /** * If the field should have multiple lines */ // @ApiMember(Description="If the field should have multiple lines") public var multipleLineText:Bool /** * Regular expression used for validation of the field */ // @ApiMember(Description="Regular expression used for validation of the field") public var regEx:String /** * Error message shown if the regular expression validation failed */ // @ApiMember(Description="Error message shown if the regular expression validation failed") public var regExErrorMessage:String /** * The values to select from if Datatype is DropDown for this custom field */ // @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field") public var values:[CustomFieldValueResponse] = [] required public init(){} } public class CustomFieldDataResponse : Codable { public var id:Int public var column:String public var name:String public var Description:String public var value:String /** * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */ // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'") public var dataType:String required public init(){} } public class BookedResourceType : Codable { /** * The resource type id */ // @ApiMember(Description="The resource type id") public var id:Int /** * The resource type name */ // @ApiMember(Description="The resource type name") public var name:String /** * The resources inside resource type */ // @ApiMember(Description="The resources inside resource type") public var resources:[BookedResource] = [] required public init(){} } public class BookedCompany : 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 public var isFavorite:Bool public var paymentProviderId:Int? required public init(){} } public class BookedCustomer : Codable { public var id:String public var firstname:String public var lastname:String public var email:String public var phone:String public var facebookUserName:String public var imageUrl:String 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 BookingPaymentLogQueryResponse : Codable { /** * The booking payment log id */ // @ApiMember(Description="The booking payment log id") public var id:Int /** * The booking id */ // @ApiMember(Description="The booking id") public var bookingId:Int /** * The payment reference id */ // @ApiMember(Description="The payment reference id") public var paymentReferenceId:String /** * The payment order item reference id */ // @ApiMember(Description="The payment order item reference id") public var orderItemReferenceId:String /** * The payment reference id */ // @ApiMember(Description="The payment reference id") public var paymentProviderId:Int? /** * The payment amount */ // @ApiMember(Description="The payment amount") public var amount:Double /** * The payment VAT in percent */ // @ApiMember(Description="The payment VAT in percent") public var vat:Double /** * The payment amount that is credited */ // @ApiMember(Description="The payment amount that is credited") public var amountCredited:Double /** * The payment currency id */ // @ApiMember(Description="The payment currency id") public var currencyId:String /** * The payment currency info */ // @ApiMember(Description="The payment currency info") public var currencyInfo:CurrencyInfoResponse /** * Comments that could be added to the event log item */ // @ApiMember(Description="Comments that could be added to the event log item") public var comments:String /** * The date when the payment items was created */ // @ApiMember(Description="The date when the payment items was created") public var created:Date /** * The date when the payment items was update */ // @ApiMember(Description="The date when the payment items was update") public var updated:Date required public init(){} } public class BookingCheckoutQueryResponse : Codable { /** * The checkout id */ // @ApiMember(Description="The checkout id") public var id:String /** * The booking id */ // @ApiMember(Description="The booking id") public var bookingId:Int /** * The purchase id */ // @ApiMember(Description="The purchase id") public var purchaseId:Int? /** * The payment checkout expiration datetime */ // @ApiMember(Description="The payment checkout expiration datetime") public var expirationTime:Date? /** * The payment snippet code */ // @ApiMember(Description="The payment snippet code") public var snippet:String /** * The payment status */ // @ApiMember(Description="The payment status") public var status:String /** * Log message */ // @ApiMember(Description="Log message") public var message:String /** * When the checkout log item was created */ // @ApiMember(Description="When the checkout log item was created") public var created:Date /** * When the checkout log item was updated */ // @ApiMember(Description="When the checkout log item was updated") public var updated:Date required public init(){} } public class ExternalReferenceResponse : Codable { public var companyId:String public var id:String public var ownerId:String public var referenceType:String public var externalData:String public var createdBy:String public var updated:Date public var created:Date required public init(){} } public class BookingCalendarExportStatus : Codable { public var calendarId:String public var bookingId:Int public var synced:Bool? required public init(){} } public class CurrencyInfoResponse : Codable { /** * The currency id */ // @ApiMember(Description="The currency id") public var id:String /** * The currency id */ // @ApiMember(Description="The currency id") public var name:String /** * The currency id */ // @ApiMember(Description="The currency id") public var currencySign:String required public init(){} } public class CustomFieldValueResponse : Codable { public var value:String required public init(){} } public class BookedResource : Codable { public var id:Int public var name:String public var color:String public var imageUrl:Uri public var email:String public var mobilePhone:String public var accessGroup:String public var emailNotification:Bool public var smsNotification:Bool public var emailReminder:Bool public var smsReminder:Bool required public init(){} } public class BookingLogQueryResponse : Codable { /** * The booking log id */ // @ApiMember(Description="The booking log id") public var id:Int /** * The booking id */ // @ApiMember(Description="The booking id") public var bookingId:Int /** * The type of event */ // @ApiMember(Description="The type of event") public var eventTypeId:Int /** * The type of event */ // @ApiMember(Description="The type of event") public var eventType:BookingLogEventTypeResponse /** * Comments that could be added to the event log item */ // @ApiMember(Description="Comments that could be added to the event log item") public var comments:String /** * The user created the event */ // @ApiMember(Description="The user created the event") public var userName:String /** * Then date when the event occured */ // @ApiMember(Description="Then date when the event occured") public var created:Date required public init(){} } public class BookedQuantity : Codable { /** * The quantity Id */ // @ApiMember(Description="The quantity Id") public var id:Int /** * The quantity for booked on this price category */ // @ApiMember(Description="The quantity for booked on this price category") public var quantity:Int /** * The price */ // @ApiMember(Description="The price") public var price:Double? /** * The price bofore rebate codes */ // @ApiMember(Description="The price bofore rebate codes") public var priceBeforeRebate:Double? /** * The price currency */ // @ApiMember(Description="The price currency") public var currencyId:String /** * The price sign */ // @ApiMember(Description="The price sign") public var priceSign:String /** * The price category */ // @ApiMember(Description="The price category") public var category:String /** * The price VAT in percent */ // @ApiMember(Description="The price VAT in percent") public var vat:Double? /** * The price text to display */ // @ApiMember(Description="The price text to display") public var priceText:String /** * 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(){} }