/// <summary> /// Returns a single course with the specified ID /// If no course is found then a course not found exception is thrown /// </summary> /// <param name="courseModel"></param> /// <returns></returns> public CourseInstanceDTO GetCourseInstanceByID(int ID) { var course = _courseInstances.All().SingleOrDefault(x => x.ID == ID); var courseTemplate = _courseTemplates.All().SingleOrDefault(x => x.CourseID == course.CourseID); if (course == null || courseTemplate == null) { throw new AppObjectNotFoundException(); } var returnValue = new CourseInstanceDTO { Name = courseTemplate.Name, CourseInstanceID = course.ID, MainTeacher = "", TemplateID = courseTemplate.CourseID }; return returnValue; }
/// <summary> /// You should write tests for this function. You will also need to /// modify it, such that it will correctly return the name of the main /// teacher of each course. /// </summary> /// <param name="semester"></param> /// <returns></returns> public List<CourseInstanceDTO> GetCourseInstancesBySemester(string semester = null) { if (string.IsNullOrEmpty(semester)) { semester = "20153"; } var coursesLeftQuery = (from c in _courseInstances.All() join ct in _courseTemplates.All() on c.CourseID equals ct.CourseID where c.SemesterID == semester select new { ID = c.ID, CourseID = c.CourseID, SemesterID = c.SemesterID, Name = ct.Name }).ToList(); var teachersRightQuery = (from tr in _teacherRegistrations.All() join p in _persons.All() on tr.SSN equals p.SSN where tr.Type == TeacherType.MainTeacher select new { CourseInstanceID = tr.CourseInstanceID, SSN = tr.SSN, Type = tr.Type, Name = p.Name }).ToList(); List<CourseInstanceDTO> result = new List<CourseInstanceDTO>(); foreach(var c in coursesLeftQuery) { var dto = new CourseInstanceDTO { Name = c.Name, TemplateID = c.CourseID, CourseInstanceID = c.ID, MainTeacher = "" }; foreach (var tr in teachersRightQuery) { if(c.ID == tr.CourseInstanceID && tr.Type == TeacherType.MainTeacher) { dto.MainTeacher = tr.Name; } } result.Add(dto); } return result; }