Пример #1
0
        public ActionResult StudentsStatisticsStudent(int id)
        {
            var currentUserId        = User.Identity.GetUserId();
            var selectedAssignmentId = id;
            var context = HttpContext.GetOwinContext().Get <ApplicationDbContext>();

            //Get a list of submitted assignments from the SubmissionGrades Table based on the specific assignment
            var allSubmissionGradesOfAssignment = context.SubmissionGrades.Include(x => x.Assignment).Include(x => x.User).Include(x => x.User).Where(x => x.Assignment.AssignmentId == selectedAssignmentId).ToList();

            double currentUserScore = 0.0;

            //user score
            if (allSubmissionGradesOfAssignment.Any(x => x.User.Id == currentUserId && x.Assignment.AssignmentId == selectedAssignmentId))
            {
                currentUserScore = Convert.ToDouble(allSubmissionGradesOfAssignment.Where(x => x.User.Id == currentUserId && x.Assignment.AssignmentId == selectedAssignmentId).FirstOrDefault().Grade);
            }
            else
            {
                currentUserScore = Convert.ToDouble(0);
            }

            //average score
            double averageScore = Convert.ToDouble(allSubmissionGradesOfAssignment.Average(x => x.Grade));

            //low score
            var lowScore = Convert.ToDouble(allSubmissionGradesOfAssignment.Min(x => x.Grade));

            //high score
            var highScore = Convert.ToDouble(allSubmissionGradesOfAssignment.Max(x => x.Grade));

            // save object for x and y values of chart/graph
            List <DataPoint> dataPoints = new List <DataPoint>
            {
                //(range, count of students within range)
                new DataPoint("Average", averageScore),
                new DataPoint("Low", lowScore),
                new DataPoint("High", highScore),
                new DataPoint("Your Grade", currentUserScore)
            };

            // pass the data to canvasJS via Json
            ViewBag.DataPoints = JsonConvert.SerializeObject(dataPoints);

            //set ViewModel list to defined list above
            var gradeSubmittedAssignmentsViewModel = new gradeSubmittedAssignmentsViewModel()
            {
                SubmittedAssignments = allSubmissionGradesOfAssignment
            };

            return(View(gradeSubmittedAssignmentsViewModel));
        }
Пример #2
0
        public ActionResult GradeAssignment(int id)
        {
            var selectedAssignmentId = id;
            var context = HttpContext.GetOwinContext().Get <ApplicationDbContext>();

            //Select the specific assignment from assignments Table
            var selectedAssignment = context.Assignments.Where(x => x.AssignmentId == selectedAssignmentId).Include(x => x.Course).FirstOrDefault();

            //Get a list of submitted assignments from the SubmissionGrades Table based on the specific assignment
            //List<SubmissionGrades> submittedAssignments = context.SubmissionGrades.Where(x => x.Assignment == selectedAssignment).Include(x => x.User.Id).ToList();
            var allSubmissionGrades = context.SubmissionGrades.Include(x => x.Assignment).Include(x => x.User).Include(x => x.User).ToList();

            var allSubmissionsOfSelected = allSubmissionGrades.Where(x => x.Assignment == selectedAssignment).ToList();

            //set ViewModel list to defined list above
            var gradeSubmittedAssignmentsViewModel = new gradeSubmittedAssignmentsViewModel()
            {
                SubmittedAssignments = allSubmissionsOfSelected
            };

            return(View(gradeSubmittedAssignmentsViewModel));
        }
Пример #3
0
        public ActionResult StudentsStatisticsInstructor(int id)
        {
            var selectedAssignmentId = id;
            var context = HttpContext.GetOwinContext().Get <ApplicationDbContext>();

            //Select the specific assignment from assignments Table
            var selectedAssignment = context.Assignments.Where(x => x.AssignmentId == selectedAssignmentId).Include(x => x.Course).FirstOrDefault();

            //Get a list of submitted assignments from the SubmissionGrades Table based on the specific assignment
            var allSubmissionGrades = context.SubmissionGrades.Include(x => x.Assignment).Include(x => x.User).Include(x => x.User).ToList();

            var allSubmissionsOfSelected = allSubmissionGrades.Where(x => x.Assignment == selectedAssignment && x.Grade != null).ToList();

            if (allSubmissionsOfSelected.Count() != 0)
            {
                // used for calculating percentages
                var assignmentPointTotal = allSubmissionsOfSelected.FirstOrDefault().Assignment.Points;
                var userIds = allSubmissionsOfSelected.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 userGrade = allSubmissionsOfSelected.Where(x => x.User.Id == userId).FirstOrDefault().Grade;

                    // set Percentage of user using usergrade
                    allSubmissionsOfSelected.Where(x => x.User.Id == userId).FirstOrDefault().Percentage = Convert.ToDecimal(userGrade) / assignmentPointTotal;
                }

                // list of all scores using allSubmissionsOfSelected including count of student that received scored 0-59, 60-69, etc.
                var zeroToSixty        = allSubmissionsOfSelected.Where(x => x.Percentage < Convert.ToDecimal(.6)).Count();
                var sixtyToSeventy     = allSubmissionsOfSelected.Where(x => x.Percentage >= Convert.ToDecimal(.6) && x.Percentage < Convert.ToDecimal(.7)).Count();
                var seventyToEighty    = allSubmissionsOfSelected.Where(x => x.Percentage >= Convert.ToDecimal(.7) && x.Percentage < Convert.ToDecimal(.8)).Count();
                var eightyToNinety     = allSubmissionsOfSelected.Where(x => x.Percentage >= Convert.ToDecimal(.8) && x.Percentage < Convert.ToDecimal(.9)).Count();
                var ninetyToOneHundred = allSubmissionsOfSelected.Where(x => x.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 gradeSubmittedAssignmentsViewModel = new gradeSubmittedAssignmentsViewModel()
                {
                    SubmittedAssignments = allSubmissionsOfSelected
                };

                return(View(gradeSubmittedAssignmentsViewModel));
            }

            else
            {
                TempData["ErrorMessage"] = "Error: Assignments not yet graded!";
                return(RedirectToAction("GradeAssignment", new { id = selectedAssignmentId }));
            }
        }