//**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));
        }
Exemplo n.º 2
0
        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));
        }