/* Options:
Date: 2025-10-31 22:27:29
Version: 8.51
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://blazor-gallery.servicestack.net
//GlobalNamespace: 
//MakePartial: True
//MakeVirtual: True
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: False
//ExportValueTypes: False
IncludeTypes: UpdateBooking.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using MyApp.ServiceModel;
namespace MyApp.ServiceModel
{
    ///
    ///Booking Details
    ///
    public partial class Booking
        : AuditBase
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual RoomType RoomType { get; set; }
        public virtual int RoomNumber { get; set; }
        public virtual DateTime BookingStartDate { get; set; }
        public virtual DateTime? BookingEndDate { get; set; }
        public virtual decimal Cost { get; set; }
        [References(typeof(MyApp.ServiceModel.Coupon))]
        public virtual string CouponId { get; set; }
        public virtual Coupon Discount { get; set; }
        public virtual string Notes { get; set; }
        public virtual bool? Cancelled { get; set; }
    }
    public enum RoomType
    {
        Single,
        Double,
        Queen,
        Twin,
        Suite,
    }
    ///
    ///Update an existing Booking
    ///
    [Route("/booking/{Id}", "PATCH")]
    [ValidateRequest("HasRole(`Employee`)")]
    public partial class UpdateBooking
        : IReturn, IPatchDb
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual RoomType? RoomType { get; set; }
        [Validate("GreaterThan(0)")]
        public virtual int? RoomNumber { get; set; }
        [Validate("GreaterThan(0)")]
        public virtual decimal? Cost { get; set; }
        public virtual DateTime? BookingStartDate { get; set; }
        public virtual DateTime? BookingEndDate { get; set; }
        public virtual string Notes { get; set; }
        public virtual string CouponId { get; set; }
        public virtual bool? Cancelled { get; set; }
    }
}