public static List <StringMeeting> CalendarMatchingSolution( List <StringMeeting> calendar1, StringMeeting dailyBounds1, List <StringMeeting> calendar2, StringMeeting dailyBounds2, int meetingDuration ) { List <Meeting> updatedCalendar1 = updateCalendar(calendar1, dailyBounds1); List <Meeting> updatedCalendar2 = updateCalendar(calendar2, dailyBounds2); List <Meeting> mergedCalendar = mergeCalendars(updatedCalendar1, updatedCalendar2); List <Meeting> flattenedCalendar = flattenCalendar(mergedCalendar); return(getMatchingAvailabilities(flattenedCalendar, meetingDuration)); }
public static List <Meeting> updateCalendar(List <StringMeeting> calendar, StringMeeting dailyBounds) { List <StringMeeting> updatedCalendar = new List <StringMeeting>(); updatedCalendar.Add(new StringMeeting("0:00", dailyBounds.start)); updatedCalendar.AddRange(calendar); updatedCalendar.Add(new StringMeeting(dailyBounds.end, "23:59")); List <Meeting> calendarInMinutes = new List <Meeting>(); for (int i = 0; i < updatedCalendar.Count; i++) { calendarInMinutes.Add(new Meeting(timeToMinutes(updatedCalendar[i].start), timeToMinutes(updatedCalendar[i].end))); } return(calendarInMinutes); }