private async Task CreateCertificate(int courseId, string trainerId, StudentCourseGradeFormModel model) { if (this.certificateService.IsGradeEligibleForCertificate(model.GradeBg)) { var success = await this.certificateService.CreateAsync(trainerId, courseId, model.StudentId, model.GradeBg.Value); if (success) { this.TempData.AddSuccessMessage(WebConstants.ExamAssessedMsg + Environment.NewLine + WebConstants.CertificateIssuedMsg); } } }
public async Task <IActionResult> EvaluateExam(int id, StudentCourseGradeFormModel model) { var courseExists = this.courseService.Exists(id); if (!courseExists) { this.TempData.AddErrorMessage(WebConstants.CourseNotFoundMsg); return(this.RedirectToAction(nameof(Courses))); } if (!this.ModelState.IsValid) { this.TempData.AddErrorMessage(WebConstants.GradeInvalidMsg); return(this.RedirectToTrainerStudentsForCourse(id)); } var userId = this.userManager.GetUserId(this.User); if (userId == null) { this.TempData.AddErrorMessage(WebConstants.InvalidUserMsg); return(this.RedirectToAction(nameof(Courses))); } var isTrainer = await this.trainerService.IsTrainerForCourseAsync(userId, id); if (!isTrainer) { this.TempData.AddErrorMessage(WebConstants.NotTrainerForCourseMsg); return(this.RedirectToAction(nameof(Courses))); } var courseHasEnded = await this.trainerService.CourseHasEndedAsync(id); if (!courseHasEnded) { this.TempData.AddErrorMessage(WebConstants.CourseHasNotEndedMsg); return(this.RedirectToTrainerStudentsForCourse(id)); } var isStudentInCourse = await this.courseService.IsUserEnrolledInCourseAsync(model.CourseId, model.StudentId); if (!isStudentInCourse) { this.TempData.AddErrorMessage(WebConstants.StudentNotEnrolledInCourseMsg); return(this.RedirectToTrainerStudentsForCourse(id)); } var gradeValue = model.GradeBg.Value; var success = await this.examService.EvaluateAsync(userId, id, model.StudentId, gradeValue); if (!success) { this.TempData.AddErrorMessage(WebConstants.ExamAssessmentErrorMsg); return(this.RedirectToTrainerStudentsForCourse(id)); } this.TempData.AddSuccessMessage(WebConstants.ExamAssessedMsg); await this.CreateCertificate(id, userId, model); return(this.RedirectToTrainerStudentsForCourse(id)); }