//**OTHER SECTIONS OF COURSES** public ActionResult Grades() { var userId = User.Identity.GetUserId(); var context = HttpContext.GetOwinContext().Get <ApplicationDbContext>(); //var courseAssignments = context.Assignments.Where(x => x.Course.CourseId == selectedCourseId).ToList(); var courseIds = currentEnrollments.Where(x => x.User.Id == userId).Select(x => x.Course).Select(y => y.CourseId).ToList(); foreach (var courseId in courseIds) { //get a list of all submission for courseId var studentGrades = context.SubmissionGrades.Include(x => x.User).Include(x => x.Assignment).Include("Assignment.Course") .Where(x => x.User.Id == userId && x.Assignment.Course.CourseId == courseId && x.Grade != null).ToList(); //get a total points for courseId where assignments are graded var pointsTotal = studentGrades.Sum(x => x.Assignment.Points); //get user grade var gradeTotal = studentGrades.Sum(x => x.Grade); // set Percentage of user using usergrade currentEnrollments.Where(x => x.Course.CourseId == courseId).FirstOrDefault().Course.Percentage = Convert.ToDecimal(gradeTotal / pointsTotal); } var ListOfEnrollments = new ListOfEnrollmentsViewModel() { Enrollments = currentEnrollments }; return(View(ListOfEnrollments)); }
public ActionResult FinalGradeStatisticsInstructor(int id) { var context = HttpContext.GetOwinContext().Get <ApplicationDbContext>(); //Get instructor Id var instructorUserId = User.Identity.GetUserId(); //Get course based on course Id var selectedCourseId = id; var selectedCourse = context.Courses.Where(x => x.CourseId == selectedCourseId).FirstOrDefault(); //get list of student enrollments for class var courseEnrollments = context.Enrollments.Where(x => x.Course.CourseId == selectedCourseId).Include(x => x.User).ToList(); //get list of assignments for course var courseAssignments = context.Assignments.Where(x => x.Course.CourseId == selectedCourseId).ToList(); //List of All student grades var studentGrades = context.SubmissionGrades.Include(x => x.User).Include(x => x.Assignment).Include("Assignment.Course") .Where(x => x.Assignment.Course.CourseId == selectedCourseId).ToList(); //filter the instructor out of the class roll var courseEnrollmentsStudents = courseEnrollments.Where(x => x.User.Id != instructorUserId).OrderBy(x => x.User.LastName).ToList(); //get the total points for assignments for the selectedCourseId var courseAssignmentPointsTotal = courseAssignments.Where(x => x.Course.CourseId == selectedCourseId).Sum(x => x.Points); //get all userId's to use for foreach loop var userIds = courseEnrollmentsStudents.Select(x => x.User).Select(y => y.Id).ToList(); // set percentages per user foreach (var userId in userIds) { // get user's grade based off userId var userGradesTotal = studentGrades.Where(x => x.User.Id == userId).Sum(x => x.Grade); // set Percentage of user using usergrade courseEnrollmentsStudents.Where(x => x.User.Id == userId).FirstOrDefault().User.Percentage = Convert.ToDecimal(userGradesTotal) / courseAssignmentPointsTotal; } // list of all scores using courseEnrollmentsStudents including count of student that received scored 0-59, 60-69, etc. var zeroToSixty = courseEnrollmentsStudents.Where(x => x.User.Percentage < Convert.ToDecimal(.6)).Count(); var sixtyToSeventy = courseEnrollmentsStudents.Where(x => x.User.Percentage >= Convert.ToDecimal(.6) && x.User.Percentage < Convert.ToDecimal(.7)).Count(); var seventyToEighty = courseEnrollmentsStudents.Where(x => x.User.Percentage >= Convert.ToDecimal(.7) && x.User.Percentage < Convert.ToDecimal(.8)).Count(); var eightyToNinety = courseEnrollmentsStudents.Where(x => x.User.Percentage >= Convert.ToDecimal(.8) && x.User.Percentage < Convert.ToDecimal(.9)).Count(); var ninetyToOneHundred = courseEnrollmentsStudents.Where(x => x.User.Percentage >= Convert.ToDecimal(.9)).Count(); // save object for x and y values of chart/graph List <DataPoint> dataPoints = new List <DataPoint> { //(range, count of students within range) new DataPoint("0-59%", zeroToSixty), new DataPoint("60-69%", sixtyToSeventy), new DataPoint("70-79%", seventyToEighty), new DataPoint("80-89%", eightyToNinety), new DataPoint("90-100%", ninetyToOneHundred) }; // pass the data to canvasJS via Json ViewBag.DataPoints = JsonConvert.SerializeObject(dataPoints); //set ViewModel list to defined list above var ListOfEnrollmentsViewModel = new ListOfEnrollmentsViewModel() { Enrollments = courseEnrollmentsStudents }; return(View(ListOfEnrollmentsViewModel)); }