/// <summary> /// Splits the over multple days. /// </summary> /// <param name = "appObj">The app obj.</param> /// <returns></returns> private static IEnumerable <AppointmentTemporaryObj> SplitOverMultpleDays(AppointmentTemporaryObj appObj) { var list = new List <AppointmentTemporaryObj>(); //If Enddate is null or start date matches endate if (appObj.EndDate == null || appObj.StartDate == appObj.EndDate) { list.Add(appObj); return(list); } var dayList = RoomAvailabilityUtilities.ParseDayString(appObj.Days); //Iterate over each date in range for (var date = appObj.StartDate; date.Date < appObj.EndDate; date = date.AddDays(1)) { //If the current day doesn't exist in the current list of days then continue. if (dayList.Count > 0 && !dayList.Contains(date.DayOfWeek)) { continue; } //Create new Appoint Temp Obj list.Add(new AppointmentTemporaryObj { AllDay = appObj.AllDay, Days = appObj.Days, EndDate = date, StartDate = date, StartTime = appObj.StartTime, EndTime = appObj.EndTime }); } return(list); }
/// <summary> /// Overlapses the with no end dates. /// </summary> /// <param name = "a">A.</param> /// <param name = "b">The b.</param> /// <returns></returns> private static bool OverlapsWithNoEndDates(AppointmentTemporaryObj a, AppointmentTemporaryObj b) { var aDays = RoomAvailabilityUtilities.ParseDayString(a.Days); var bDays = RoomAvailabilityUtilities.ParseDayString(b.Days); var overLapList = aDays.Where(bDays.Contains).ToList(); if (overLapList.Count == 0) { return(false); } //Compare start time vs end time return(!(b.EndTime <= a.StartTime || a.EndTime <= b.StartTime)); }