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)); }