public ActionResult MyProgress()
        {
            var userId      = this.User.Identity.GetUserId();
            var driveEvents = this.driveEvents
                              .GetEventsByUser(userId)
                              .ToList();

            double totalHours = 0;

            foreach (var driveEvent in driveEvents)
            {
                totalHours += (driveEvent.End - driveEvent.Start).TotalHours;
            }

            double percentage = 0;

            if (totalHours != 0)
            {
                percentage = totalHours / 32;
            }

            var model = new MyProgressViewModel()
            {
                CurrentProgress = percentage,
                DrivedHours     = (int)totalHours,
                HoursLeft       = 32 - (int)totalHours
            };

            return(this.View(model));
        }
        public ActionResult MyProgress()
        {
            var userId = this.User.Identity.GetUserId();
            var driveEvents = this.driveEvents
                .GetEventsByUser(userId)
                .ToList();

            double totalHours = 0;

            foreach (var driveEvent in driveEvents)
            {
                totalHours += (driveEvent.End - driveEvent.Start).TotalHours;
            }

            double percentage = 0;

            if (totalHours != 0)
            {
                percentage = totalHours / 32;
            }

            var model = new MyProgressViewModel()
            {
                CurrentProgress = percentage,
                DrivedHours = (int)totalHours,
                HoursLeft = 32 - (int)totalHours
            };

            return this.View(model);
        }
Example #3
0
        public IActionResult UserProgress(string id, string userId)
        {
            ViewData["Id"] = id;

            AppUser user = userManager.Users.FirstOrDefault(u => u.Id == userId);

            MyProgressViewModel myProgress = new MyProgressViewModel
            {
                User = user
            };
            double myRating = 0;
            double myCompletedPresentations = 0;
            int    myViews           = 0;
            int    myRepresentations = 0;

            List <MyProgressCourseInfo> Courses = new List <MyProgressCourseInfo>();

            foreach (Course course in repository.Courses)
            {
                if (repository.CourseUsers
                    .Any(cu => cu.AppUserId == user.Id && cu.CourseId == course.CourseId))
                {
                    MyProgressCourseInfo courseProgress = new MyProgressCourseInfo
                    {
                        Course = course
                    };
                    double courseRating           = 0;
                    double completedPresentations = 0;

                    List <MyProgressPresentationsInfo> presentationsInfo = new List <MyProgressPresentationsInfo>();
                    foreach (Presentation presentation in course.Presentations)
                    {
                        MyProgressPresentationsInfo presentationProgress = new MyProgressPresentationsInfo
                        {
                            Presentation = presentation
                        };
                        Representation repres = UserRepresentation(user.Id, presentation.PresentationId);
                        if (repres != null)
                        {
                            presentationProgress.Rating = repres.Rating;
                            courseRating           += repres.Rating;
                            completedPresentations += (courseRating > 0) ? 1.0 : 0;

                            myRepresentations++;
                            myViews += repository.Videos.FirstOrDefault(v => v.Id == repres.VideoId).Views;
                        }
                        presentationsInfo.Add(presentationProgress);
                    }
                    courseProgress.Presentations = presentationsInfo.AsQueryable();
                    courseProgress.AvgRating     = (completedPresentations > 0) ?
                                                   courseRating / completedPresentations * 1.0 : 0;
                    courseProgress.CompletedPresentations = (int)completedPresentations;

                    myRating += courseRating;
                    myCompletedPresentations += completedPresentations;

                    Courses.Add(courseProgress);
                }
            }

            myProgress.Courses   = Courses.AsQueryable();
            myProgress.AvgRating = (myCompletedPresentations > 0) ?
                                   myRating / myCompletedPresentations * 1.0 : 0;
            myProgress.Representations = myRepresentations;
            myProgress.Views           = myViews;


            return(View(myProgress));
        }