// Nasty way to join two lists public static List<Course> GetUsersRunningCourses(int userID, CourseUserRole roleID, CourseUserRole roleID2) { List<Course> courses = GetUsersRunningCourses(userID, roleID); List<Course> courses2 = GetUsersRunningCourses(userID, roleID2); foreach (Course course in courses2) { if (courses.Count(c => c.CourseID == course.CourseID) == 0) { courses.Add(course); } } return courses; }
public static bool IsUserInCourseRole(int courseID, int userID, CourseUserRole courseUserRole) { string key = string.Format("courserole-{0}-{1}-{2}", courseID, userID, courseUserRole); bool isInRole = false; if (System.Web.HttpContext.Current.Cache[key] != null) { isInRole = (bool)System.Web.HttpContext.Current.Cache[key]; } else { isInRole = new DidacheDb().CourseUsers.Count(cu => cu.UserID == userID && cu.CourseID == courseID && cu.RoleID == (int)courseUserRole) > 0; System.Web.HttpContext.Current.Cache.Insert(key, isInRole, null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration); } return isInRole; }
public static List<Course> GetUsersRunningCourses(CourseUserRole roleID, CourseUserRole roleID2) { User profile = Users.GetLoggedInUser(); if (profile != null) return GetUsersRunningCourses(profile.UserID, roleID, roleID2); else return null; }
public static List<Course> GetUsersRunningCourses(int userID, CourseUserRole roleID) { string key = String.Format("courses-userrunning-{0}-{1}", userID, roleID); List<Course> courses = (HttpContext.Current != null) ? HttpContext.Current.Cache[key] as List<Course> : null; bool ignoreCache = true; if (courses == null || ignoreCache) { DateTime targetStartDate = DateTime.Now.AddDays(7); DateTime targetEndDate = DateTime.Now.AddDays(-7); var courseQuery = new DidacheDb().Courses.AsQueryable(); // all the roles if (roleID == CourseUserRole.All) { courseQuery = courseQuery.Where(c => c.CourseUsers.Any(cu => cu.UserID == userID) && c.StartDate <= targetStartDate && c.EndDate >= targetEndDate); } else { courseQuery = courseQuery.Where(c => c.CourseUsers.Any(cu => cu.UserID == userID && cu.RoleID == (int)roleID) && c.StartDate <= targetStartDate && c.EndDate >= targetEndDate); } courses = courseQuery .Distinct() .OrderByDescending(c => c.StartDate) .ToList(); if (roleID == CourseUserRole.Student) courses = courses.Where(c => c.IsActive).ToList(); HttpContext.Current.Cache.Add(key, courses, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 3, 0), CacheItemPriority.Default, null); } return courses; }
public static List<CourseUser> GetUsersInCourse(int courseID, CourseUserRole courseUserRole) { return new DidacheDb().CourseUsers .Include("User") .Where(cu => cu.CourseID == courseID && cu.RoleID == (int)courseUserRole) .OrderBy(cu => cu.RoleID) .ThenBy(cu => cu.GroupID) .ThenBy(cu => cu.User.LastName) .ToList(); }
public static List<Course> GetUsersCourses(int userID, CourseUserRole roleID) { return new DidacheDb().Courses .Where(c => c.CourseUsers.Any(cu => cu.UserID == userID && cu.RoleID == (int)roleID)) .OrderByDescending(c => c.Session.StartDate) .ToList(); }
public static List<Course> GetUsersCourses(CourseUserRole roleID) { return GetUsersCourses(Users.GetLoggedInUser().UserID, roleID); }
public static void RemoveUserFromCourse(int courseID, int userID, CourseUserRole userRole) { DidacheDb db = new DidacheDb(); CourseUser courseUser = db.CourseUsers.SingleOrDefault(cu => cu.UserID == userID && cu.CourseID == courseID && cu.RoleID == (int) userRole); if (courseUser != null) { db.CourseUsers.Remove(courseUser); } if (userRole == CourseUserRole.Student) { // don't delete assignments } db.SaveChanges(); }
/// <summary> /// /// </summary> /// <param name="courseID"></param> /// <param name="userID"></param> /// <param name="groupID"></param> /// <param name="userRole"></param> /// <returns>Whether or not the user was added (false = just updated)</returns> public static bool AddUserToCourse(int courseID, int userID, int groupID, CourseUserRole userRole) { DidacheDb db = new DidacheDb(); CourseUser courseUser = db.CourseUsers.SingleOrDefault(cu => cu.UserID == userID && cu.CourseID == courseID && cu.RoleID == (int) userRole); if (courseUser != null) { // update the group if (groupID > 0) { courseUser.GroupID = groupID; db.SaveChanges(); } return false; } else { courseUser = new CourseUser() { UserID = userID, CourseID = courseID, RoleID = (int) userRole, GroupID = groupID }; db.CourseUsers.Add(courseUser); if (userRole == CourseUserRole.Student) { // check for assignments bool hasTasks = db.UserTasks.Count(ut => ut.UserID == userID && ut.Task.CourseID == courseID) > 0; if (!hasTasks) { // create assignments List<Task> tasks = db.Tasks.Where(t => t.CourseID == courseID).ToList(); foreach (Task task in tasks) { UserTaskData utd = new UserTaskData() { TaskID = task.TaskID, CourseID = task.CourseID, UnitID = task.UnitID, GraderComments = "", GraderSubmitDate = null, GraderUserID = 0, GradeStatus = 0, LetterGrade = "", NumericGrade = null, StudentComments = "", StudentSubmitDate = null, TaskCompletionStatus = TaskCompletionStatus.NotStarted, TaskData = "", GraderFileID = 0, PostID = 0, StudentFileID = 0, UserID = userID }; db.UserTasks.Add(utd); } } } db.SaveChanges(); return true; } }