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));
        }
Esempio n. 2
0
        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());
        }