private void ArrangeConferencePhase(ConferencePhase phase, List <Activity> activities) { if (phase == null) { return; } if (activities == null || !activities.Any()) { return; } while (phase.RemainedMinutes > 0) { var activity = activities.FirstOrDefault(); if (!phase.IsEnoughToAddActivity(activity)) { activity = activities.FirstOrDefault(x => x.GetDuration() < phase.RemainedMinutes); } if (activity != null) { phase.AddActivity(activity); activities.Remove(activity); } else { break; } } }
protected void RenderConferencePhase(ConferencePhase phase, int minutes, string timeSuffix) { if (phase == null) { return; } foreach (var slot in phase.Slots) { var hour = minutes / 60; var minute = minutes % 60; var timeSpan = new TimeSpan(hour, minute, 0); RenderSlot(slot, timeSpan, timeSuffix); minutes += (int)slot.Duration; } }