# frozen_string_literal: true # encoding: utf-8 # Options: =begin Date: 2026-09-01 21:25:17 Version: 10.09 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://blazor-gallery.servicestack.net #MakePartial: True #MakeVirtual: True #MakeInternal: False #MakeDataContractsExtensible: False #AddReturnMarker: True #AddDescriptionAsComments: True #AddDataContractAttributes: False #AddIndexesToDataMembers: False #AddGeneratedCodeAttributes: False #AddResponseStatus: False #AddImplicitVersion: #InitializeCollections: False #ExportValueTypes: False IncludeTypes: QueryBookings.* #ExcludeTypes: #AddNamespaces: #AddDefaultXmlNamespace: http://schemas.servicestack.net/types =end require 'json' require 'servicestack' module RoomType SINGLE = 'Single' DOUBLE = 'Double' QUEEN = 'Queen' TWIN = 'Twin' SUITE = 'Suite' end module IReturn def response_type() = T def get_type_name() = 'IReturn' end # # Discount Coupons # class Coupon include ServiceStack::DTO # @return [String] attr_accessor :id # @return [String] attr_accessor :description # @return [Integer] attr_accessor :discount # @return [DateTime] attr_accessor :expiry_date def self.properties { id: { name: 'id' }, description: { name: 'description' }, discount: { name: 'discount' }, expiry_date: { name: 'expiryDate', type: DateTime }, } end end # # Booking Details # class Booking < ServiceStack::AuditBase # @return [Integer] attr_accessor :id # @return [String] attr_accessor :name # @return [RoomType] attr_accessor :room_type # @return [Integer] attr_accessor :room_number # @return [DateTime] attr_accessor :booking_start_date # @return [DateTime] attr_accessor :booking_end_date # @return [BigDecimal] attr_accessor :cost # @References('Coupon') # @return [String] attr_accessor :coupon_id # @return [Coupon] attr_accessor :discount # @return [String] attr_accessor :notes # @return [TrueClass] attr_accessor :cancelled def self.properties { id: { name: 'id' }, name: { name: 'name' }, room_type: { name: 'roomType' }, room_number: { name: 'roomNumber' }, booking_start_date: { name: 'bookingStartDate', type: DateTime }, booking_end_date: { name: 'bookingEndDate', type: DateTime }, cost: { name: 'cost' }, coupon_id: { name: 'couponId' }, discount: { name: 'discount', type: Coupon }, notes: { name: 'notes' }, cancelled: { name: 'cancelled' }, } end end # # Find Bookings # # @Route("/bookings", "GET") class QueryBookings < ServiceStack::QueryDb # @return [Integer] attr_accessor :id def self.properties { id: { name: 'id' }, } end def response_type() = ServiceStack::QueryResponse.of(Booking) def get_type_name() = 'QueryBookings' def get_method() = 'GET' end