Пример #1
0
        public IActionResult AddTestOrExam(int id)
        {
            var course      = _coursesRepository.FindById(id);
            var courseModel = _mapper.Map <CourseVM>(course);
            var model       = new TestAndExamVM
            {
                CourseId = id,
                Course   = courseModel
            };

            return(View(model));
        }
        // This method returns the get view for creating courses
        public async Task <IActionResult> EditCourse(int id)
        {
            var course       = _coursesRepository.FindById(id);
            var facilitators = await _userManager.GetUsersInRoleAsync("Facilitator");

            var selectFacilitators = facilitators.Select(p => new SelectListItem
            {
                Text  = $"{p.FirstName} {p.MiddleName} {p.LastName}",
                Value = p.Id
            });

            var model = new EditCourseVM
            {
                Id           = course.Id,
                CourseName   = course.CourseName,
                Facilitators = selectFacilitators
            };

            return(View(model));
        }
Пример #3
0
        public IActionResult Result()
        {
            var trainee        = _userManager.GetUserAsync(User).Result;
            var traineeScores  = _scoresRepository.GetScoresByTraineeId(trainee.Id).ToList();
            var traineeCourses = new List <int>();

            foreach (var item in traineeScores)
            {
                var testOrExam = _testsAndExamsRepository.FindById(item.TestOrExamId);
                var course     = _coursesRepository.FindById(testOrExam.CourseId);
                if (traineeCourses.Contains(course.Id))
                {
                    continue;
                }
                else
                {
                    traineeCourses.Add(course.Id);
                }
            }

            var traineeResult = new List <TotalCourseScoreVM>();

            foreach (var item in traineeCourses)
            {
                double totalScore  = 0;
                var    totalMark   = 0;
                var    testOrExams = _testsAndExamsRepository.GetTestsAndExamsByCourseId(item).ToList();
                for (int i = 0; i < testOrExams.Count; i++)
                {
                    totalMark += testOrExams[i].Total;
                    var score = _scoresRepository.GetScoreByTestAndExamIdAndTraineeId(testOrExams[i].Id, trainee.Id);
                    if (score != null)
                    {
                        totalScore += score.Score;
                    }
                }

                var averageScore = (totalScore / totalMark) * 100;
                var courseScore  = new TotalCourseScoreVM
                {
                    CoureId    = item,
                    TotalScore = Math.Round(averageScore, 2)
                };
                traineeResult.Add(courseScore);
            }
            var model = traineeResult;

            return(View(model));
        }
Пример #4
0
        public void Apply(Guid courseId, Guid userId)
        {
            //basic guard clauses
            if (!_coursesRepository.CourseExists(courseId))
            {
                throw new ArgumentException();
            }
            if (!_userRepository.UserExists(userId))
            {
                throw new ArgumentException();
            }

            var user   = _userRepository.FindById(userId);
            var course = _coursesRepository.FindById(courseId);

            //this prevents the user from applying multiple times
            //I could also consider throwing something like UserAlreadyAppliedException in this case
            if (!CheckIfUserHasAlreadyApplied(user, course))
            {
                course.AppliedUsers.Add(user);
            }
        }