public static List <ClassWithSuccessCountDTO> SuccessReport(IEnumerable <ClassWithGradeDTO> classesWithGrades) { List <ClassWithSuccessCountDTO> coursesWithSuccessCount = new List <ClassWithSuccessCountDTO>(); foreach (var course in classesWithGrades) { ClassWithSuccessCountDTO successCount = null; if (coursesWithSuccessCount.Any(x => x.CRN == course.CRN)) { successCount = coursesWithSuccessCount.Where(x => x.CRN == course.CRN).First(); } if (successCount != null) { DetermineSuccess(course.FinalGrade, successCount); } else { var successCourse = new ClassWithSuccessCountDTO() { ClassName = course.CourseName, CRN = course.CRN, DepartmentName = course.DepartmentName }; DetermineSuccess(course.FinalGrade, successCourse); coursesWithSuccessCount.Add(successCourse); } } return(coursesWithSuccessCount); }
private static void DetermineSuccess(Grade grade, ClassWithSuccessCountDTO vm) { if (grade <= Grade.I) { vm.PassedSuccessfullyCount++; vm.CompletedCourseCount++; } else if (grade <= Grade.F) { vm.CompletedCourseCount++; } else { vm.DroppedStudentCount++; } vm.UniqueStudentCount++; }