static IList <TimetableRow> GetTimeTableRows(Course course) { var start = course.StartFacultyLocal; int scenarioCount = 0; var csps = course.CourseSlotPresenters.ToLookup(c => c.CourseSlotId); //var csfrs = course.CourseScenarioFacultyRoles.ToLookup(c => c.CourseSlotId); var csas = course.CourseSlotActivities.ToDictionary(c => c.CourseSlotId); var emptyStringArray = new string[0]; var returnVar = course.CourseFormat.CourseSlots.Where(cs => cs.IsActive) .OrderBy(cs => cs.Order).Select(cs => { var ttr = new TimetableRow { LocalStart = start, IsFacultyOnly = cs.FacultyOnly }; CourseSlotActivity activity; csas.TryGetValue(cs.Id, out activity); if (cs.ActivityId.HasValue) { ttr.IsScenario = false; ttr.SlotName = cs.Activity.Name; ttr.SlotActivity = activity?.Activity?.Description; ttr.Faculty = csps[cs.Id]?.Select(csp => csp.Participant.FullName) ?? emptyStringArray; } else { ttr.IsScenario = true; ttr.SlotName = "Scenario " + (++scenarioCount).ToString(); ttr.SlotActivity = activity?.Scenario?.BriefDescription; ttr.Faculty = emptyStringArray;//csfrs[cs.Id]?.Select(csfr => csfr.Participant.FullName) // ?? emptyStringArray; } start += TimeSpan.FromMinutes(cs.MinutesDuration); return(ttr); }).ToList(); returnVar.Add(new TimetableRow { LocalStart = start, SlotName = "Finish", Faculty = new string[0] }); return(returnVar); }
static IList<TimetableRow> GetTimeTableRows(Course course) { var start = course.StartLocal; int scenarioCount = 0; var csps = course.CourseSlotPresenters.ToLookup(c=>c.CourseSlotId); //var csfrs = course.CourseScenarioFacultyRoles.ToLookup(c => c.CourseSlotId); var csas = course.CourseSlotActivities.ToDictionary(c => c.CourseSlotId); var emptyStringArray = new string[0]; var returnVar = course.CourseFormat.CourseSlots.Where(cs=>cs.IsActive) .OrderBy(cs=>cs.Order).Select(cs=> { var ttr = new TimetableRow { LocalStart = start, }; CourseSlotActivity activity; csas.TryGetValue(cs.Id, out activity); if (cs.ActivityId.HasValue) { ttr.IsScenario = false; ttr.SlotName = cs.Activity.Name; ttr.SlotActivity = activity?.Activity?.Description; ttr.Faculty = csps[cs.Id]?.Select(csp => csp.Participant.FullName) ?? emptyStringArray; } else { ttr.IsScenario = false; ttr.SlotName = "Scenario " + (++scenarioCount).ToString(); ttr.SlotActivity = activity?.Scenario?.BriefDescription; ttr.Faculty = emptyStringArray;//csfrs[cs.Id]?.Select(csfr => csfr.Participant.FullName) // ?? emptyStringArray; } start += TimeSpan.FromMinutes(cs.MinutesDuration); return ttr; }).ToList(); returnVar.Add(new TimetableRow { LocalStart = start, SlotName = "Finish", Faculty=new string[0]}); return returnVar; }