public async Task <IActionResult> StudentProfile(string returnUrl) { var sanitizer = new HtmlSanitizer(); var user = await Manager.FindByNameAsync(this.User.Identity.Name); var model = new StudentProgressViewModel(); model.User = user; model.returnUrl = returnUrl; model.Tasks = Docs.GetStudentTasks(user.Id) ?? new List <StTask>(); model.Group = Groups.GetGroupById(((StudentUser)user).GroupID); model.UnvisitedLectures = Groups.Lectures.Where(x => x.Date < DateTime.Now && !x.Visits.Any(y => y.VisitorID == user.Id) && x.GroupID == model.Group.GroupID).AsNoTracking().ToList() ?? new List <Lecture>(); model.VisitedLectures = Groups.Lectures.Where(x => x.Date < DateTime.Now && x.Visits.Any(y => y.VisitorID == user.Id) && x.GroupID == model.Group.GroupID).AsNoTracking().ToList() ?? new List <Lecture>(); model.HtmlData = sanitizer.Sanitize(CommonMark.CommonMarkConverter.Convert(user.Description ?? "### No description")); return(View(model)); }
public IList <StudentProgressViewModel> TrackProgress(int contentId) { List <StudentProgressViewModel> list = new List <StudentProgressViewModel>(); var students = _repos.Contents.GetWith(contentId, "Unit", "Unit.UnitStudents", "Unit.UnitStudents.Student", "Unit.UnitStudents.Student.Profile") .Unit .UnitStudents .Select(x => x.Student) .ToList(); foreach (var item in students) { var model = new StudentProgressViewModel() { FullNames = item.Profile.FullNames }; var progress = _repos.CourseworkProgress .Get(x => x.StudentId == item.Id && x.ContentId == contentId); if (progress == null) { model.Progress = 0; } else { model.Progress = progress.PercentageComplete; } list.Add(model); } return(list.OrderByDescending(x => x.Progress) .ToList()); }