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