DateTime sessionStart = new DateTime(2025, 1, 25, 11, 30, 0);
DateTime currentTime = new DateTime(2025, 1, 24, 11, 20, 0);
string bookingLeadTimeUnit = "24HourDays";
bool isAvailable = IsSessionAvailable(sessionStart, currentTime, bookingLeadTimeUnit, bookingLeadTime);
Console.WriteLine($"Session is {(isAvailable ? "available" : "not available")} for booking.");
static bool IsSessionAvailable(DateTime sessionStart, DateTime currentTime, string leadTimeUnit, int leadTime)
if (leadTimeUnit == "CalendarDays")
DateTime calendarDeadline = sessionStart.Date.AddDays(-leadTime);
return currentTime.Date <= calendarDeadline;
else if (leadTimeUnit == "24HourDays")
TimeSpan timeDifference = sessionStart - currentTime;
return timeDifference.TotalHours >= leadTime * 24;
throw new ArgumentException("Invalid lead time unit. Use 'CalendarDays' or '24HourDays'.");