public IActionResult Enroll(string courseId) { ActionResult result = null; int _studentId = CurrentUser.Id; try { if (!ModelState.IsValid) { throw new Exception(); } try { List <Course> courses = (List <Course>)_coursedb.GetStudentCourses(_studentId); StudentCourse studentCourse = new StudentCourse() { courseId = Convert.ToInt32(courseId), userId = _studentId }; foreach (Course course in courses) { if (course.Id == studentCourse.courseId) { throw new Exception("Course has already been enrolled."); } } _coursedb.EnrollStudent(studentCourse); } catch (EnrollmentFailedException) { ModelState.AddModelError("enrollment-failed", "Enrollment in this course failed."); throw; } result = RedirectToAction("Dashboard", "Student", new { studentId = CurrentUser.Id }); } catch (Exception ex) { result = RedirectToAction("Browse", "Student"); TempData["error"] = ex.Message; } return(result); }