Как отключить забронированные временные интервалы из списка временных интервалов рабочего времени

Друзья,

Я работаю над проектом по бронированию встреч, детали: рабочий час начинается с 9:00 до 7:00 с продолжительностью по умолчанию 30 минут. Итак, слоты начинаются как (9:00, 9:30, 10:00.... 7:00).

Здесь, чтобы показать доступные слоты, я использую следующую логику.

  1. Сохранение всех слотов продолжительностью 30 минут в списке (СПИСОК А), например [9:00, 9:30, 10:00, 10:30,... 7:00]
  2. Цикл по зарегистрированным встречам (содержит время начала и окончания), и если время начала совпадает с любым из элементов LIST A, я ', удаляя этот элемент из этого списка. и цикл продолжается.

Здесь проблема в том, рассмотрим, если встреча забронирована 9: 30-10: 00. Исходя из моей логики, 9:30 соответствует элементу LIST A, и он удалит 9:30 из этого списка.

Таким образом, доступные слоты будут отображаться как [9:00, X,10:00, 10:30, .... 7:00]. На самом деле это должно быть [9:00, 9:30, 10:30, 11:00... 7:00]

Вместо отображения доступных слотов 9:00-9:30, 10:30-11:00 он показывает 9:00-10:00, 10:30-11 с 9:30 удаляется из списка.,

Пожалуйста, помогите решить эту проблему или предложите мне несколько альтернативных подходов к этой проблеме. Сильно нужен.

2 ответа

То, что вы путаете, это то, что вы берете время начала второго слота как время окончания первого слота. Поэтому вместо того, чтобы делать это, вы можете сохранить время и продолжительность запуска.

И чтобы просто вычислить время окончания, вы делаете

StartTime.AddMinutes(30);

И добавить еще один комментарий в конце; Вы пытаетесь построить очень жесткую структуру. И возникнут проблемы, если вы попытаетесь расширить приложение, ИМХО.

Я предлагаю вместо использования одномерного массива использовать многомерный массив как

[[9:00][9:30],[9:30][10:00],[10:00][10:30], .... nth Item] 

Здесь логика должна быть такой

var start=[start time]
var end=[end time]
var duration=[duration]

for (i=start;i<end;i+=duration)
{
   if(start==A[i][0])
   remove(A[i][0]);
}
A.sort();
return A; 
Другие вопросы по тегам