private void ManageSharingWithDefinedActivities(IDefinedActivity activity, List <Activity> activities) { if (activity.Repeat == null || activity.Repeat.RepeatPeriod == RepeatPeriod.Single) { return; } var days = (int)activity.Repeat.RepeatPeriod; var currentDay = activity.Start.Value.Date.AddDays(days); if (activity is FixedActivity) { var fixedActivity = activity as FixedActivity; while (currentDay <= fixedActivity.Repeat.EndDate && currentDay <= _rangeEnd) { var item = new FixedActivity(fixedActivity.Name, fixedActivity.Description, fixedActivity.Color, CreationType.ManuallyCreated, fixedActivity.Labels, fixedActivity.Category, fixedActivity.UserId, fixedActivity.Priority, currentDay + fixedActivity.Start.Value.TimeOfDay, currentDay + fixedActivity.End.TimeOfDay, false); currentDay = currentDay.AddDays(days); activities.Add(item); } } else { var unfixedActivity = activity as UnfixedActivity; while (currentDay <= unfixedActivity.Repeat.EndDate && currentDay <= _rangeEnd) { var item = new FixedActivity(unfixedActivity.Name, unfixedActivity.Description, unfixedActivity.Color, CreationType.ManuallyCreated, unfixedActivity.Labels, unfixedActivity.Category, unfixedActivity.UserId, unfixedActivity.Priority, currentDay + unfixedActivity.Start.Value.TimeOfDay, currentDay + unfixedActivity.End.Value.TimeOfDay, false); currentDay = currentDay.AddDays(days); activities.Add(item); } } }
private bool InsertItem(IDefinedActivity activity, FreeSlot freeSlot) { var isFixed = activity is FixedActivity; if (isFixed) { freeSlot.tmpActivitiesFirst.Add(activity); } else { activity.Start = freeSlot.Start + GetTimeSpanOfItems(freeSlot.tmpActivitiesFirst); freeSlot.tmpActivitiesFirst.Add(activity); } return(isFixed); }
private bool Fit(IDefinedActivity activity, FreeSlot frame, List <IDefinedActivity> temporaryStorage) { //Check if the FixActivity is insertable because of the ufas are in the tmpStorage var totalTimeSpan = GetTimeSpanOfItems(temporaryStorage); if (activity is FixedActivity) { var fixedActivity = activity as FixedActivity; return(fixedActivity.Start >= frame.Start && fixedActivity.End <= frame.End && fixedActivity.Start.Value.TimeOfDay > totalTimeSpan); } else { UnfixedActivity unfixedActivity = activity as UnfixedActivity; return(frame.RemainingTimeSpan >= unfixedActivity.TimeSpan); } }