Я делаю систему бронирования, где пользователи могут назначать встречи друг с другом.
Что мне нужно сделать, так это убедиться, что встречи не расходятся по времени.
Например:
Встреча 1 с 13:00 до 14:00.
Заседание 2 с 13:30 до 14:30.
Эти встречи противоречат друг другу, и поэтому бронирование не должно производиться.
Теперь, когда я пытаюсь сделать это, я не получаю желаемого результата, иногда он думает, что бронь не должна быть сделана, когда это действительно необходимо, и наоборот.
Вот мой код:
if (OldBookingDate.Equals(NewBookingDate))
{
// Check if (OldBookingTime -> OldEndTime) clashes with (NewBookingTime -> NewEndTime)
// For Example (10:00 -> 12:00), (09:00 -> 11:00)
// So this Clashes!
DateTime OldBookingTime_End = OldBookingTime_Start.AddHours(OldDurationInt);
DateTime NewBookingTime_End = NewBookingTime_Start.AddHours(NewDurationInt);
int Clash1 = OldBookingTime_Start.CompareTo(NewBookingTime_Start);
int Clash2 = OldBookingTime_End.CompareTo(NewBookingTime_End);
if ((Clash1 < 0) || (Clash2 > 0))
{
// If Clash1 -> Finishes before Meeting
// If Clash2 -> Finishes after Meeting
Available = true;
}
if ((Clash1 == 0) || (Clash2 == 0))
{
// Start and end is the same
Available = false;
}
if ((Clash1 > 0) || (Clash2 < 0))
{
// Intersects/Clashes with already booked meeting
Available = false;
}
}
Основная проблема, по-видимому, связана с оператором ((Clash1 > 0) || (Clash2 < 0))
if, например, когда резервирование должно быть выполнено первым, если оператор устанавливает значение true (как и должно быть), но затем этот оператор if затем устанавливает его в значение false.
Как я могу правильно выполнить эти проверки, чтобы убедиться, что время не совпадает?