示例#1
0
        protected virtual List <RatingViewModel> CreateRatings(string examSheetId)
        {
            var ratings = RatingManager.FindAll(examSheetId);

            if (ratings?.Any() ?? false)
            {
                return(ratings.Select(CreateRatingViewModel).OrderBy(x => x.Student.Surname).ToList());
            }

            return(new List <RatingViewModel>());
        }
        protected virtual List <RatingViewModel> CreateRatings(string groupId, string examSheetId)
        {
            var ratings = RatingManager.FindAll(examSheetId);

            if (ratings?.Any() ?? false)
            {
                return(ratings.Select(CreateRatingViewModel).OrderBy(x => x.Student.Surname).ToList());
            }

            var students = StudentManager.FindGroup(groupId);

            return(students.Select(student => CreateRatingViewModel(student, examSheetId)).OrderBy(x => x.Student.Surname).ToList());
        }
        public IActionResult GetChartData(string group, string subject, short year, short semester, string teacher)
        {
            var sheet = ExamSheetManager.Get(group, teacher, subject, year, semester, true);
            var model = new GroupChartJsonModel();

            if (sheet == null)
            {
                return(Json(model));
            }
            var semesterMarks = new Dictionary <string, short>();
            var rangeMarks    = new Dictionary <string, short>();
            var ratings       = RatingManager.FindAll(sheet.Id);

            model.StudentsRating = new List <StudentRating>();
            foreach (var rating in ratings)
            {
                var stringRepresentation = RatingMapper.MapRatingToString(rating.Mark);
                var rangeRepresentation  = RatingMapper.MapRatingToRange(rating.Mark);
                if (semesterMarks.ContainsKey(stringRepresentation))
                {
                    semesterMarks[stringRepresentation] = (short)(semesterMarks[stringRepresentation] + 1);
                }
                else
                {
                    semesterMarks[stringRepresentation] = 1;
                }
                if (rangeMarks.ContainsKey(rangeRepresentation))
                {
                    rangeMarks[rangeRepresentation] = (short)(rangeMarks[rangeRepresentation] + 1);
                }
                else
                {
                    rangeMarks[rangeRepresentation] = 1;
                }

                var student = StudentManager.GetById(rating.StudentId);
                model.StudentsRating.Add(new StudentRating()
                {
                    Surname = student.Surname, Name = student.Name, Rating = rating.Mark, StringRepresentation = stringRepresentation
                });
            }
            var sorted = semesterMarks.OrderBy(key => key.Key);

            model.SemesterMarks = sorted.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
            sorted               = rangeMarks.OrderBy(key => key.Key);
            model.RangeMarks     = sorted.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
            model.StudentsRating = model.StudentsRating.OrderByDescending(x => x.Rating).ToList();
            return(Json(model));
        }