public async Task <JsonResult> GetCourses() { SetRoles(); JsonResponse <CourseDataOut> response = new JsonResponse <CourseDataOut>(); if (this.isAdmin) { // Show all courses List <CourseDataOut> courseDataOuts = new List <CourseDataOut>(); this.courseRepository.GetAll().ToList <Course>().ForEach(course => { CourseDataOut dataOut = new CourseDataOut { ID = course.ID, Name = course.Name, IsActive = course.IsActive, FK_INSTRUCTOR_NAME = course.FK_INSTRUCTOR.FirstName + " " + course.FK_INSTRUCTOR.LastName }; courseDataOuts.Add(dataOut); }); response.Data = courseDataOuts; } else if (this.isInstructor) { var currentUser = await usrMgr.GetUserAsync(HttpContext.User); // Lookup the course the instructor is teaching this.courseRepository.GetAll().ToList <Course>() .ForEach(course => { if (course.FK_INSTRUCTOR.Id == currentUser.Id) { CourseDataOut dataOut = new CourseDataOut { ID = course.ID, Name = course.Name, IsActive = course.IsActive, // FK_INSTRUCTOR_NAME = course.FK_INSTRUCTOR.FirstName + " " + course.FK_INSTRUCTOR.LastName }; response.Data.Add(dataOut); } }); } else if (this.isStudent) { List <CourseDataOut> courseDataOuts = new List <CourseDataOut>(); AppUser currentUser = await usrMgr.GetUserAsync(HttpContext.User); // Look at Course Groups and add courses that the student is in this.courseGroupRepository.GetAll().ToList <CourseGroup>().ForEach( courseGroup => { if (courseGroup.FK_AppUser == currentUser) { //AppUser instructor = courseGroup.FK_Course.FK_INSTRUCTOR; courseDataOuts.Add(new CourseDataOut { ID = courseGroup.FK_Course.ID, Name = courseGroup.FK_Course.Name, IsActive = courseGroup.FK_Course.IsActive, // FK_INSTRUCTOR_NAME = instructor.FirstName + " " + instructor.LastName }); } }); response.Data = courseDataOuts; } else { response.Error.Add(new Error() { Name = "Courses", Description = "Your in a role that cannot view courses" }); } return(Json(response)); }
public async Task <JsonResult> GetCourse(int courseID = -1) { SetRoles(); JsonResponse <Course> response = new JsonResponse <Course>(); JsonResponse <CourseDataOut> responseStudent = new JsonResponse <CourseDataOut>(); if (this.isAdmin) { //If they are admin we don't need to check if they are in the course response.Data.Add(this.courseRepository.FindByID(courseID)); } else if (isInstructor) { //Lookup the course Course courseLookup = this.courseRepository.FindByID(courseID); /// Lets see if that course exists if (courseLookup == null) { response.Error.Add(new Error() { Description = "The course does not exist", Name = "Course" }); return(Json(response)); } //Lets see if the instructor is teacing the course if (courseLookup.FK_INSTRUCTOR == await usrMgr.GetUserAsync(HttpContext.User)) { response.Data.Add(courseLookup); } } else if (this.isStudent) { //Lets see if the student is in the course] AppUser curentUser = await usrMgr.GetUserAsync(HttpContext.User); Course course = this.courseGroupRepository.GetAll().ToList <CourseGroup>().Find( // Look for the user x => { if ((x.FK_AppUser == curentUser) && (x.FK_Course == this.courseRepository.FindByID(courseID))) { return(true); } else { return(false); } } ).FK_Course; AppUser instructor = course.FK_INSTRUCTOR; CourseDataOut dataOut = new CourseDataOut { ID = course.ID, Name = course.Name, IsActive = course.IsActive, FK_INSTRUCTOR_NAME = instructor.FirstName + " " + instructor.LastName }; if (responseStudent.Data.Count > 0) { responseStudent.Data.Add(dataOut); return(Json(responseStudent)); } } // If we didn't find the course show error if (response.Data.Count == 0) { response.Error.Add(new Error() { Name = "GetCourse", Description = "You have not been added to any courses" }); } return(Json(response)); }