/* Options: Date: 2024-06-17 01:33:44 SwiftVersion: 5.0 Version: 8.23 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://testapi.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: UpdateBooking.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/bookings/{Id}", "PUT") // @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) // @ValidateRequest(Validator="IsAuthenticated") public class UpdateBooking : IReturn, INullableInterval, 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", ParameterType="path") public var id:Int? public var from:Date? public var to:Date? public var status:BookingStatusEnum? public var paymentExpiration:Date? public var lastTimeToUnBook:Date? /** * If you want to add comments when canceling a booking you can add them here, this comments are send in the confirmation to the customer */ // @ApiMember(Description="If you want to add comments when canceling a booking you can add them here, this comments are send in the confirmation to the customer") public var unbookedComments:String /** * If you want to add comments to a booking you can add them here, this comments are never shared with the customer */ // @ApiMember(Description="If you want to add comments to a booking you can add them here, this comments are never shared with the customer") public var bookedComments:String /** * If you want to add comments to the booking that is sent to the customer, you can add them here. Comments will be sent in the booking confirmation */ // @ApiMember(Description="If you want to add comments to the booking that is sent to the customer, you can add them here. Comments will be sent in the booking confirmation") public var commentsToCustomer:String /** * If Custom Fields are added to the booking, here you will send the id and the value for each custom field to be updated */ // @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 updated") public var customFields:[AddCustomField] = [] /** * Resources you want to change, leave it empty if no changes to the booked resources */ // @ApiMember(Description="Resources you want to change, leave it empty if no changes to the booked resources") public var resources:ResourceToUpdate /** * If want to allow to book outside the service schedules. This means you can book a time after the schedule opening hours as long as the resource are available. This is only allowed by administrators */ // @ApiMember(Description="If want to allow to book outside the service schedules. This means you can book a time after the schedule opening hours as long as the resource are available. This is only allowed by administrators") public var allowBookingOutsideSchedules:Bool /** * Any comment to save to the log when changing the booking. */ // @ApiMember(Description="Any comment to save to the log when changing the booking.") public var comment:String /** * Any comment sent to user if SendSmsConfirmation or SendEmailConfirmation */ // @ApiMember(Description="Any comment sent to user if SendSmsConfirmation or SendEmailConfirmation") public var message:String /** * If you want to send SMS confirmation. If null, it will take the default value of the bookings SendSMSConfirmation. */ // @ApiMember(Description="If you want to send SMS confirmation. If null, it will take the default value of the bookings SendSMSConfirmation.") public var sendSmsConfirmation:Bool? /** * If you want to send Email confirmation. If null, it will take the default value of the bookings SendEmailConfirmation. */ // @ApiMember(Description="If you want to send Email confirmation. If null, it will take the default value of the bookings SendEmailConfirmation.") public var sendEmailConfirmation:Bool? 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 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 AddCustomField : Codable { public var id:Int public var value:String required public init(){} } public class ResourceToUpdate : Codable { /** * Set this property to true if you want to autoselected not provided resources. If false you will need to add all resources you want to have booked */ // @ApiMember(Description="Set this property to true if you want to autoselected not provided resources. If false you will need to add all resources you want to have booked") public var autoSelectNotDefinedResources:Bool /** * All resources to be booked, if AutoSelectNotDefinedResources is true you will only need to provide the one you want to select, rest will be auto selected if avaiable. */ // @ApiMember(Description="All resources to be booked, if AutoSelectNotDefinedResources is true you will only need to provide the one you want to select, rest will be auto selected if avaiable. ") public var resources:[ResourceToBook] = [] required public init(){} } public protocol INullableInterval { var from:Date? { get set } var to:Date? { get set } } public class ResourceToBook : Codable { public var resourceTypeId:Int public var resourceId:Int required public init(){} } 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 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(){} }