예제 #1
0
        // 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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        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;
        }
예제 #4
0
        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;
        }
예제 #5
0
 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();
 }
예제 #6
0
 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();
 }
예제 #7
0
 public static List<Course> GetUsersCourses(CourseUserRole roleID)
 {
     return GetUsersCourses(Users.GetLoggedInUser().UserID, roleID);
 }
예제 #8
0
        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();
        }
예제 #9
0
        /// <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;

            }
        }