/* Options: Date: 2026-08-15 00:55:20 Version: 10.09 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://blazor-gallery.servicestack.net //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: CreateBooking.* //ExcludeTypes: //DefaultImports: serde::{Deserialize, Serialize},serde_json::Value,std::collections::HashMap */ #![allow( dead_code, non_camel_case_types, non_snake_case, clippy::upper_case_acronyms )] use serde::{Deserialize, Serialize}; use serde_json::Value; use servicestack::*; use std::collections::HashMap; #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] pub enum RoomType { #[default] #[serde(rename = "Single")] Single, #[serde(rename = "Double")] Double, #[serde(rename = "Queen")] Queen, #[serde(rename = "Twin")] Twin, #[serde(rename = "Suite")] Suite, } /// Booking Details #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct Booking { #[serde(flatten)] pub audit_base: AuditBase, pub id: i32, pub name: String, #[serde(rename = "roomType")] pub room_type: RoomType, #[serde(rename = "roomNumber")] pub room_number: i32, #[serde(rename = "bookingStartDate")] pub booking_start_date: String, #[serde(rename = "bookingEndDate")] #[serde(default, skip_serializing_if = "Option::is_none")] pub booking_end_date: Option, pub cost: f64, // References(typeof(Coupon)) #[serde(rename = "couponId")] #[serde(default, skip_serializing_if = "Option::is_none")] pub coupon_id: Option, pub discount: Coupon, #[serde(default, skip_serializing_if = "Option::is_none")] pub notes: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub cancelled: Option, } /// Create a new Booking // Route("/bookings", "POST") // ValidateRequest(Validator="HasRole(`Employee`)") #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct CreateBooking { /// Name this Booking is for // Validate(Validator="NotEmpty") pub name: String, #[serde(default, skip_serializing_if = "Option::is_none")] pub photo: Option, #[serde(rename = "roomType")] pub room_type: RoomType, // Validate(Validator="GreaterThan(0)") #[serde(rename = "roomNumber")] pub room_number: i32, // Validate(Validator="GreaterThan(0)") pub cost: f64, // Required #[serde(rename = "bookingStartDate")] pub booking_start_date: String, #[serde(rename = "bookingEndDate")] #[serde(default, skip_serializing_if = "Option::is_none")] pub booking_end_date: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub notes: Option, #[serde(rename = "couponId")] #[serde(default, skip_serializing_if = "Option::is_none")] pub coupon_id: Option, } impl IRequest for CreateBooking { const NAME: &'static str = "CreateBooking"; const VERB: &'static str = "POST"; } impl IReturn for CreateBooking { type Response = IdResponse; }