public ActionResult GetDocumentsForCriticalReviewDiscussion(int discussionTeamId) { DiscussionTeam dt = db.DiscussionTeams.Find(discussionTeamId); Assignment CRAssignment = dt.Assignment.PreceedingAssignment; Assignment CRDAssignment = dt.Assignment; Assignment BasicAssignment = CRAssignment.PreceedingAssignment; Team AuthorTeam = dt.AuthorTeam; //Permission checking: // assert that the activeCourseUser is a member of the discussion team of discussionTeamID bool belongsToDiscussionTeam = false; foreach (TeamMember tm in dt.GetAllTeamMembers()) { if (tm.CourseUserID == ActiveCourseUser.ID) { belongsToDiscussionTeam = true; break; } } //If user does not belong to DiscussionTeam and is not an instructor, do not let them get the documents if (belongsToDiscussionTeam || ActiveCourseUser.AbstractRole.CanModify || ActiveCourseUser.AbstractRoleID == (int)CourseRole.CourseRoles.Observer) { string zipFileName = "Critical Review Discussion Items for " + dt.TeamName + ".zip"; return(GetAllReviewedDocuments(CRAssignment, AuthorTeam, zipFileName, CRDAssignment.DiscussionSettings)); } return(RedirectToAction("Index", "Home")); }
public ActionResult CreateDiscussionTeam(int discussionTeamId) { List <UserProfile> recipientList = new List <UserProfile>(); DiscussionTeam discussionTeam = db.DiscussionTeams.Find(discussionTeamId); foreach (TeamMember tm in discussionTeam.GetAllTeamMembers()) { if (tm.CourseUserID != ActiveCourseUser.ID) { recipientList.Add(tm.CourseUser.UserProfile); } } setUpMailViewBags(recipientList); return(View("Create", new Mail())); }
/// <summary> /// This is the discussion view used by non-Instructor/non-TA users. It displays a discussion assignment for discussionTeamId. /// </summary> /// <param name="assignmentId"></param> /// <param name="discussionTeamId"></param> /// <param name="displayNewPosts">If true, any new posts made since the current users last visit will be highlighted.</param> /// <returns></returns> public ActionResult Index(int assignmentId, int discussionTeamId, bool?displayNewPosts = false) { ViewBag.HideMail = OSBLE.Utility.DBHelper.GetAbstractCourseHideMailValue(ActiveCourseUser.AbstractCourseID); Assignment assignment = null; DiscussionTeam discussionTeam = null; //checking if ids are good if (discussionTeamId > 0 && assignmentId > 0) { assignment = db.Assignments.Find(assignmentId); discussionTeam = (from dt in assignment.DiscussionTeams where dt.ID == discussionTeamId select dt).FirstOrDefault(); } //Make sure ActiveCourseUser is a valid discussion member //Valid discussion members are in the discussion team, or in the class of a classwide discussion assignment bool allowedInDiscussion = false; if (assignment != null && assignment.HasDiscussionTeams == false)//Classwide discussion { //make sure user is in course if (ActiveCourseUser.AbstractCourseID == assignment.CourseID) { allowedInDiscussion = true; } } else if (assignment != null && discussionTeam != null)//Assignment has discussion teams { //make sure user is part of team. foreach (TeamMember tm in discussionTeam.GetAllTeamMembers()) { if (tm.CourseUserID == ActiveCourseUser.ID) { allowedInDiscussion = true; break; } } } //if ActiveCourseUser belongs to the discussionTeam, continue. Otherwise kick them out. if (allowedInDiscussion || ActiveCourseUser.AbstractRoleID == (int)CourseRole.CourseRoles.Observer) { DiscussionViewModel dvm = new DiscussionViewModel(discussionTeam, ActiveCourseUser); //Checking if its users first post ViewBag.IsFirstPost = (from dpvm in dvm.DiscussionPostViewModels where dpvm.poster.CourseUser.ID == ActiveCourseUser.ID select dpvm).Count() == 0; //assigning a header value. if (assignment.HasDiscussionTeams) { ViewBag.DiscussionHeader = assignment.AssignmentName + "- " + discussionTeam.TeamName; } else { ViewBag.DiscussionHeader = assignment.AssignmentName; } //for CRD assignment types we need a list of all discussions they can participate in for navigation. if (assignment.Type == AssignmentTypes.CriticalReviewDiscussion) { List <DiscussionTeam> DiscussionTeamList = new List <DiscussionTeam>(); //Generating a list of discussion assignments that the current user belongs to foreach (DiscussionTeam dt in assignment.DiscussionTeams) { foreach (TeamMember tm in dt.GetAllTeamMembers()) { if (tm.CourseUserID == ActiveCourseUser.ID) { DiscussionTeamList.Add(dt); break; } } } ViewBag.DiscussionTeamList = DiscussionTeamList.OrderBy(dt => dt.TeamName).ToList(); } if (displayNewPosts.HasValue && displayNewPosts.Value) { ViewBag.HighlightValue = HighlightValue.NewPosts; } //Allow Moderators to post w/o word count restriction if (ActiveCourseUser.AbstractRoleID == (int)CourseRole.CourseRoles.Moderator) { ViewBag.IsFirstPost = false; } ViewBag.LastVisit = GetAndUpdateLastVisit(discussionTeamId); if (ActiveCourseUser.AbstractRoleID == (int)CourseRole.CourseRoles.Observer) { ViewBag.CanPost = false; } else { ViewBag.CanPost = assignment.DueDate > DateTime.UtcNow; } ViewBag.DiscussionPostViewModelList = dvm.DiscussionPostViewModels.OrderBy(dpvm => dpvm.Posted).ToList(); ViewBag.ActiveCourse = ActiveCourseUser; ViewBag.Assignment = assignment; ViewBag.DiscussionTeamID = discussionTeam.ID; ViewBag.DiscussionTeam = discussionTeam; return(View()); } else //User is not part of discussion, kick them to assignment details. { return(RedirectToAction("Index", "Home", new { area = "AssignmentDetails", assignmentId = assignmentId })); } }