namespace Fitness_core_BE.DTOs.Facility { public class FacilityDto { public Guid FacilityId { get; set; } public string Name { get; set; } = string.Empty; /// "Scheduled" | "AdHoc". public string BookingMode { get; set; } = "Scheduled"; public string? Description { get; set; } public int DefaultCapacity { get; set; } public int NumberOfUnits { get; set; } public decimal PricePerHour { get; set; } public bool IsActive { get; set; } public DateTime CreatedAt { get; set; } // Absorbed from the old PlaceDto -- at most one for now, see AccessDevice.FKFacilityId. public Guid? DeviceId { get; set; } public string? DeviceName { get; set; } } public class FacilitySessionDto { public Guid FacilitySessionId { get; set; } public Guid FacilityId { get; set; } public string? FacilityName { get; set; } public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } public int Capacity { get; set; } public int BookedCount { get; set; } public bool IsCancelled { get; set; } } /// GET api/client/facilities/availability -- how much room is left for a requested /// window, uniformly across both booking modes (TotalUnits/UnitsFree mean NumberOfUnits/ /// overlap-count for AdHoc, DefaultCapacity/free-session-spots for Scheduled). public class FacilityAvailabilityDto { public Guid FacilityId { get; set; } public string FacilityName { get; set; } = string.Empty; public string BookingMode { get; set; } = string.Empty; public int TotalUnits { get; set; } public int UnitsFree { get; set; } public decimal PricePerHour { get; set; } } }