public ActionResult List() { InstructorListViewModel viewModel = new InstructorListViewModel(); List <CourseRating> courseRatings = CourseRatingRepositorySQL.Instance.listByCategoryAndSemesters( Convert.ToInt32(GlobalVariables.CurrentCategory), (GlobalVariables.CurrentSemester == "-1" ? StaticData.semesters.Take(3).Select(y => y.semester).ToArray() : new[] { GlobalVariables.CurrentSemester })) .Where(p => p.classSize >= p.responses) .ToList(); List <int> instructorIDs = courseRatings.Select(y => y.instructorID).Distinct().ToList(); var instructorList = StaticData.instructorList.Where(p => instructorIDs.Contains(p.instructorID)); int totalResponses = 0; int totalStudents = 0; double averageRating = 0.0; List <InstructorDomain> instructors = instructorList.Select(p => { var courseRatingsList = courseRatings.Where(x => x.instructorID == p.instructorID); var responses = courseRatingsList.Select(y => y.responses).Sum(z => z); var students = courseRatingsList.Select(y => y.classSize).Sum(z => z); var semesters = courseRatingsList.Select(v => v.semester).Distinct() .OrderByDescending(t => t, new SemesterComparer()); totalResponses += responses; totalStudents += students; averageRating += courseRatingsList .Sum(z => z.responses * z.ratings[0].averageRating); return(new InstructorDomain { instructorID = p.instructorID, firstName = p.firstName, lastName = p.lastName, lastSemester = (semesters.Count() > 0 ? semesters.FirstOrDefault() : ""), rating = courseRatingsList .Sum(z => ((double)z.responses / (double)responses) * z.ratings[0].averageRating).ToString("#.##"), responses = responses.ToString(), students = students.ToString(), responseRate = ((double)responses / (double)students).ToString("p1") }); }).Where(t => Convert.ToInt32(t.students) > 0).ToList(); viewModel.instructors = instructors; viewModel.totalResponses = totalResponses.ToString("N0"); viewModel.totalStudents = totalStudents.ToString("N0"); viewModel.averageResponseRate = ((double)totalResponses / (double)totalStudents).ToString("p1"); viewModel.averageRating = (averageRating / (double)totalResponses).ToString("#.##"); viewModel.currentSemester = (GlobalVariables.CurrentSemester == "-1" ? "the past three semesters" : GlobalVariables.CurrentSemester.Split(' ')[1] + " " + GlobalVariables.CurrentSemester.Split(' ')[0]); return(View(viewModel)); }
// GET: Instructor public ViewResult List(int page = 1) { InstructorListViewModel model = new InstructorListViewModel { Instructors = repository.Instructors .OrderBy(p => p.Ins_id) .Skip((page - 1) * PageSize) .Take(PageSize), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = repository.Instructors.Count() } }; return(View(model)); }