private void unSubscribeEvents() { // unsubscribe events DiscussionViewModel.removeObserver(onChatRoomChange); DiscussionViewModel.removeObserver(onUpdateUsersStatusChange); _main.Startup.Dal.DALAgent.PropertyChanged -= onAgentDataDownloadingStatusChange; }
private async Task signOutFromServerAsync(List <DiscussionModel> discussionList) { try { // disconnect the authenticated user Agent authenticatedUser = _main.Startup.Bl.BlSecurity.GetAuthenticatedUser(); authenticatedUser.IsOnline = false; await _main.Startup.Bl.BlAgent.UpdateAgentAsync(new List <Agent> { _main.Startup.Bl.BlSecurity.GetAuthenticatedUser() }); // ending the discussions DiscussionViewModel.SelectedAgentModel = (AgentModel)_main.ModelCreator.createModel(QOBDModels.Enums.EModel.AGENT); await DiscussionViewModel.broadcastMessageAsync(DiscussionViewModel.ByeMessage); foreach (var ClientElement in DiscussionViewModel.ServerClientsDictionary) { ClientElement.Value.Item2.Close(); } } catch (System.IO.IOException) { } catch (System.Net.Sockets.SocketException) { } catch (Exception ex) { Log.error("<[" + _main.Startup.Bl.BlSecurity.GetAuthenticatedUser().UserName + "]Localhost =" + _main.Startup.Bl.BlSecurity.GetAuthenticatedUser().IPAddress + "> " + ex.Message, QOBDCommon.Enum.EErrorFrom.CHATROOM); } }
public ActionResult Discussion(Guid?id) { var course = db.Courses.Include("Discussion") .Include("Creator") .Include("Discussion.Messages") .Include("Discussion.Messages.Sender") .Include("Discussion.Readings") .FirstOrDefault(i => i.Id == id); if (course == null) { return(HttpNotFound()); } if (!isMember(course) && !isCourseCreator(course)) { return(RedirectToAction("Index", "Course", new { id = id })); } var model = new DiscussionViewModel { CId = course.Id, CurrentUserId = User.Identity?.GetUserId(), Role = isCourseCreator(course) ? "Creator" : "Member", Discussion = course.Discussion.ToList(), IsActive = course.IsCourseActive }; return(View(model)); }
public ActionResult Discussion(Guid?id) { var community = db.Communities .Include("Discussions") .Include("Discussions.Messages") .Include("Discussions.Messages.Sender") .Include("Discussions.Readings") .FirstOrDefault(i => i.Id == id); if (community == null) { return(HttpNotFound()); } if (Status(community) != Enums.StatusType.Creator && Status(community) != Enums.StatusType.Member) { return(RedirectToAction("Index", "Community", new { id = id })); } var model = new DiscussionViewModel { CId = community.Id, CurrentUserId = User.Identity?.GetUserId(), Role = Status(community) == Enums.StatusType.Creator ? "Creator" : "Member", Discussion = community.Discussions.ToList() }; return(View(model)); }
public DiscussionViewModel CreateDiscussion(DiscussionViewModel discussion, int? currentClientId, int? currentProviderId, string loggedUserId) { var newDiscussion = new Discussion { Date = discussion.Date, SubjectOfDiscussion = discussion.SubjectOfDiscussion, Summary = discussion.Summary, Type = discussion.Type, NextDiscussionDate = discussion.NextDiscussionDate, NextDiscussionNote = discussion.NextDiscussionNote, NextDiscussionType = discussion.NextDiscussionType, UserId = loggedUserId, Comments = discussion.Comments, IsFinished = false, IsVisible = discussion.IsVisible }; if (currentClientId != null) { newDiscussion.ClientId = currentClientId; newDiscussion.ProviderId = null; newDiscussion.Provider = null; } else if (currentProviderId != null) { newDiscussion.ProviderId = currentProviderId; newDiscussion.ClientId = null; newDiscussion.Client = null; } this.Data.Discussions.Add(newDiscussion); var user = this.Data.Users .GetById(loggedUserId); var schedulerTask = new SchedulerTask() { Title = discussion.SubjectOfDiscussion, Start = discussion.Date, End = discussion.Date, Description = discussion.Summary, IsAllDay = true, StartTimezone = null, EndTimezone = null, RecurrenceRule = null, RecurrenceException = null, RecurrenceId = null, UserId = loggedUserId, IsFinished = false }; user.SchedulerTasks.Add(schedulerTask); this.Data.SaveChanges(); discussion.Id = newDiscussion.Id; return discussion; }
public JsonResult DestroyDiscussion([DataSourceRequest] DataSourceRequest request, DiscussionViewModel discussion) { var deletedDiscussion = this.discussions.DestroyDiscussion(discussion); var loggedUserId = this.User.Identity.GetUserId(); Base.CreateActivity(ActivityType.Delete, discussion.Id.ToString(), ActivityTargetType.Discussion, loggedUserId); return Json(new[] { discussion }, JsonRequestBehavior.AllowGet); }
public DiscussionPage() { InitializeComponent(); // Make sure the page is not up in status bar and not in swipe-up area On <iOS>().SetUseSafeArea(true); BindingContext = new DiscussionViewModel(new DiscussionService()); }
public bool AddDiscussion(DiscussionViewModel objData) { bool status = false; var userDetails = (CustomerLoginDetail)Session["UserSession"]; objData.objDiscussion.AddedDate = DateTime.Now; objData.objDiscussion.UpdatedDate = DateTime.Now; objData.objDiscussion.AddedBy = userDetails.LoginId; status = DR.AddDiscussions(objData.objDiscussion); return(status); }
public ActionResult Discussions(string categoryUrl, string subcategoryUrl, string goodUrl) { using (GoodContext db = new GoodContext()) { ViewBag.CategoriesData = GetCategoriesData(); if (db.GoodCategories.Where(x => x.CategoryUrl == categoryUrl).Any() && db.GoodSubcategories.Where(x => x.SubcategoryUrl == subcategoryUrl).Any() && db.Goods.Where(x => x.GoodUrl == goodUrl).Any()) { string goodBrand = db.Goods.Where(x => x.GoodUrl == goodUrl).First().GoodBrand; string goodName = db.Goods.Where(x => x.GoodUrl == goodUrl).First().GoodName; string goodColor = db.Goods.Where(x => x.GoodUrl == goodUrl).First().GoodColor; string fullGoodName = goodBrand + " " + goodName + ", " + goodColor; string subcategoryName = db.GoodSubcategories.Where(x => x.SubcategoryUrl == subcategoryUrl).First().SubcategoryName; string categoryName = db.GoodCategories.Where(x => x.CategoryUrl == categoryUrl).First().CategoryName; ViewBag.PageHeader = db.Goods.Where(x => x.GoodUrl == goodUrl).First().GoodBrand + " " + db.Goods.Where(x => x.GoodUrl == goodUrl).First().GoodName + " Discussions"; ViewBag.CategoryUrl = categoryUrl; ViewBag.SubcategoryUrl = subcategoryUrl; ViewBag.GoodUrl = goodUrl; ViewBag.InitiallyShowedDiscussionsNumber = 2; int currentGoodId = db.Goods.Where(x => x.GoodUrl == goodUrl).First().Id; ViewBag.GoodId = currentGoodId; ViewBag.GoodName = db.Goods.Find(currentGoodId).GoodName; DateTime currentDate = DateTime.Now.Date; var viewModel = new DiscussionViewModel() { todayReviewsNumber = db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.Where(c => c.Date >= currentDate && c.Date <= currentDate.AddDays(1)).Count(), lastWeekReviewsNumber = db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.Where(c => c.Date >= currentDate.AddDays(-7) && c.Date <= currentDate.AddDays(1)).Count(), lastMonthReviewsNumber = db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.Where(c => c.Date >= currentDate.AddMonths(-1) && c.Date <= currentDate.AddDays(1)).Count(), lastYearReviewsNumber = db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.Where(c => c.Date >= currentDate.AddYears(-1) && c.Date <= currentDate.AddDays(1)).Count(), allReviewsNumber = db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.Count(), discussions = db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.GroupBy(p => p.DiscussionGroup).ToList().Count() <= 2 ? db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.GroupBy(p => p.DiscussionGroup).ToList() : db.Goods.Where(x => x.Id == currentGoodId).First().Discussions.GroupBy(p => p.DiscussionGroup).ToList().GetRange(0, 2) }; List <string> breadcrumbList = new List <string>() { "Discussions", fullGoodName, subcategoryName, categoryName, "Catalog", "Main" }; ViewBag.breadCrumbList = breadcrumbList; return(View(viewModel)); } else { return(Redirect("/")); } } }
public DiscussionViewModel GetDiscussion(int topicId) { var topic = _topicRepository.Get(topicId); var posts = _topicRepository.GetPostsFromTopic(topicId); var discussion = new DiscussionViewModel { TopicViewModel = _mapper.Map <TopicViewModel>(topic), PostsViewModel = _mapper.Map <List <PostViewModel> >(posts), ReplyViewModel = new PostViewModel { TopicId = topicId } }; return(discussion); }
public JsonResult CreateDiscussion([DataSourceRequest] DataSourceRequest request, DiscussionViewModel discussion, int? currentClientId, int? currentProviderId) { if (discussion == null || !ModelState.IsValid) { return Json(new[] { discussion }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet); } var loggedUserId = this.User.Identity.GetUserId(); var createdDiscussion = this.discussions.CreateDiscussion(discussion, currentClientId, currentProviderId, loggedUserId); Base.CreateActivity(ActivityType.Create, createdDiscussion.Id.ToString(), ActivityTargetType.Discussion, loggedUserId); discussion.Id = createdDiscussion.Id; return Json(new[] { discussion }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet); }
public void cleanUp() { if (UdpClient != null) { UdpClient.Close(); } DiscussionViewModel.Dispose(); MessageViewModel.Dispose(); _main.Startup.Dal.Dispose(); if (_main.Startup.ProxyClient.State == System.ServiceModel.CommunicationState.Opened) { _main.Startup.ProxyClient.Close(); } }
private void addNewDiscussionToFirebase(UserDiscussionViewModel data) { //fillDiscussionsListFromFireBase(); FirebaseDB firebaseDB = new FirebaseDB(pathFireBase); FirebaseDB firebaseDBTeams = firebaseDB.Node("discussions"); firebaseDBTeams.NodePath("discussions"); DiscussionViewModel dis = new DiscussionViewModel(data); string json = js.Serialize(dis); LuckyWithYouForum.Database.FirebaseResponse postResponse = firebaseDBTeams.Post(json); //updateDiscussionsToFireBase(); }
/// <summary> /// /// </summary> /// <param name="discussionViewModel"></param> /// <returns></returns> public DiscussionViewModel CreateDiscussion(DiscussionViewModel discussionViewModel) { DiscussionViewModel model = new DiscussionViewModel(); try { Discussion discussion = ObjectMapper.Map <DiscussionViewModel, Discussion>(discussionViewModel); discussion = DiscussionManager.Add(discussion); model = ObjectMapper.Map <Discussion, DiscussionViewModel>(discussion); } catch (Exception ex) { ExceptionManager.HandleException(ex, PolicyNameType.ExceptionReplacing); } return(model); }
/// <summary> /// broadcast /// </summary> private async Task receiverAsync() { try { // updating the user status AuthenticatedAgent.IsOnline = true; var updatedUserList = await _main.Startup.Bl.BlAgent.UpdateAgentAsync(new List <Agent> { AuthenticatedAgent.Agent }); if (updatedUserList.Count > 0) { int port = Utility.intTryParse(updatedUserList[0].IPAddress.Split(':')[1]); IPAddress ipAddress = default(IPAddress); IPAddress.TryParse(updatedUserList[0].IPAddress.Split(':')[0], out ipAddress); EndPoint = new IPEndPoint(ipAddress, port); UdpClient = new UdpClient(port); // updating authenticated user online status DiscussionViewModel.SelectedAgentModel = (AgentModel)_main.ModelCreator.createModel(QOBDModels.Enums.EModel.AGENT); await DiscussionViewModel.broadcastMessageAsync(DiscussionViewModel.WelcomeMessage); // create discussion thread Thread ctThread = new Thread(DiscussionViewModel.getMessage); ctThread.SetApartmentState(ApartmentState.STA); ctThread.IsBackground = true; ctThread.Start(); } else { new ApplicationException("Error while updating the user[" + AuthenticatedAgent.TxtID + "|" + AuthenticatedAgent.TxtIPAddress + "] network information"); } } catch (Exception ex) { _isServerConnectionError = true; CurrentViewModel = DiscussionViewModel; Log.error("<[" + _main.Startup.Bl.BlSecurity.GetAuthenticatedUser().UserName + "]Localhost =" + _main.Startup.Bl.BlSecurity.GetAuthenticatedUser().IPAddress + "> " + ex.Message, QOBDCommon.Enum.EErrorFrom.CHATROOM); // updating the user status AuthenticatedAgent.IsOnline = false; var updatedUserList = await _main.Startup.Bl.BlAgent.UpdateAgentAsync(new List <Agent> { AuthenticatedAgent.Agent }); } }
public async Task <IActionResult> CreateContribution(DiscussionViewModel model) { model.Discussion = await discussionsRepository.FindByIdAsync(model.DiscussionId); if (string.IsNullOrWhiteSpace(model.Contribution.Content)) { ModelState.AddModelError <TopicViewModel>(m => m.Contribution.Content, "Zadejte příspěvek."); return(View("Discussion", model)); } model.Contribution.Discussion = model.Discussion; model.Contribution.Created = DateTime.Now; model.Contribution.User = await userManager.GetUserAsync(User); await contributionsRepository.CreateAsync(model.Contribution); return(RedirectToAction("Discussion", new { id = model.DiscussionId })); }
public ActionResult AllDiscussions(string groupId, string isOnboarding) { CommonFunctions common = new CommonFunctions(); groupId = common.DecryptString(groupId); var userDetails = (CustomerLoginDetail)Session["UserSession"]; userDetails.CustomerName = CR.GetCustomerName(groupId); Session["UserSession"] = userDetails; DiscussionViewModel objData = new DiscussionViewModel(); BOTS_TblDiscussion objDiscussion = new BOTS_TblDiscussion(); string GroupName = string.Empty; if (string.IsNullOrEmpty(isOnboarding)) { var objGroup = CR.GetGroupDetails(Convert.ToInt32(groupId)); GroupName = objGroup.GroupName; } else { var objGroup = CR.GetOnboardingGroupDetails(groupId); GroupName = objGroup.GroupName; } objDiscussion.GroupId = groupId; objDiscussion.GroupName = GroupName; objData.objDiscussion = objDiscussion; objData.lstDiscussions = DR.GetDiscussions(groupId); objData.lstCallTypes = DR.GetCallTypes(); List <SelectListItem> callSubType = new List <SelectListItem>(); SelectListItem item = new SelectListItem(); item.Value = "0"; item.Text = "Please Select"; callSubType.Add(item); objData.lstCallSubTypes = callSubType; return(View(objData)); }
public IActionResult Discussion(int id = 0) { if (id != 0) { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); TempData["DiscussionId"] = id; TempData["Url"] = $"/Discussions/Discussion/{id}"; Discussion discussion = dataManager.discussionsRepository.GetDiscussionById(id); if (dataManager.usersRepository.GetUserById(discussion.UserId) != null) { discussion.User = dataManager.usersRepository.GetUserById(discussion.UserId); } DiscussionViewModel discussionViewModel = new DiscussionViewModel(discussion, userId); return(View(discussionViewModel)); } else { return(View()); } }
public IActionResult Discussion(DiscussionViewModel discussionViewModel) { var replyViewModel = discussionViewModel.ReplyViewModel; replyViewModel.UserId = UserId; discussionViewModel = _applicationService.GetDiscussion(discussionViewModel.ReplyViewModel.TopicId); discussionViewModel.ReplyViewModel = replyViewModel; if (replyViewModel.TopicId == 0) { return(NotFound()); } if (!ModelState.IsValid) { return(View(discussionViewModel)); } _applicationService.AddPost(discussionViewModel.ReplyViewModel); TempData["ServerResult"] = IsValidOperation() ? "success;Post created successfully!" : "error;Post was not created. See the notifications for details."; return(IsValidOperation() ? (IActionResult)RedirectToAction("Discussion", new { id = discussionViewModel.TopicViewModel.Id }) : View("Discussion", discussionViewModel)); }
public ActionResult Discussions(int?gid, int?did) { CheckCr(); var uid = User.Identity.GetUserId(); var viewModel = new DiscussionViewModel(); viewModel.Gp = db.GroupPersons .Include(i => i.Group) .Include(i => i.User); ViewBag.UserId = uid; List <GroupPerson> gpr = viewModel.Gp.Where(u => u.User.Id == uid && u.Status == "Confirmed").ToList(); List <Group> gro = new List <Group>(); for (var i = 0; i < gpr.Count; i++) { gro.Add(gpr[i].Group); } viewModel.Groups = gro; //ask about connection IMPORTANT!!!!!! viewModel.groups //var userProfiles = _dataContext.UserProfile // .Where(t => idList.Contains(t.Id)); if (gid != null) { List <Discussion> fil; fil = db.Discussions.Where(f => f.Group.GId == gid).ToList(); ViewBag.GroupId = gid; viewModel.Discussions = fil; } if (did != null) { ViewBag.DiscId = did; ViewBag.DiscName = db.Discussions.Where(d => d.DiscId == did).Single().Name; } return(View(viewModel)); }
public async Task <IActionResult> Discussion(CancellationToken cancellationToken = default) { bool isLoggedIn = _signInManager.IsSignedIn(User); ApplicationUser user = await _userManager.GetUserAsync(User); Comment[] comments = await _commentService.List(cancellationToken); CommentViewModel[] commentViewModels = comments .Select(x => new CommentViewModel(x) { CanEdit = isLoggedIn && x.ByUserId == user.Id, CanRemove = isLoggedIn && (x.ByUserId == user.Id || user.Role == ApplicationRole.Administrator), }) .ToArray(); var model = new DiscussionViewModel { Comments = commentViewModels, UserId = user?.Id, }; return(View(model)); }
private void setInitEvents() { DiscussionViewModel.addObserver(onChatRoomChange); DiscussionViewModel.addObserver(onUpdateUsersStatusChange); _main.Startup.Dal.DALAgent.PropertyChanged += onAgentDataDownloadingStatusChange; }
public ActionResult TeacherIndex(int assignmentId, int discussionTeamID, int courseUserId = 0, string highlightValueString = "None", bool anonymous = false) { HighlightValue highlightValue; Enum.TryParse(highlightValueString, out highlightValue); Assignment assignment = db.Assignments.Find(assignmentId); if (assignment.CourseID == ActiveCourseUser.AbstractCourseID && ActiveCourseUser.AbstractRole.CanGrade) { List <DiscussionPost> posts = null; CourseUser student; DiscussionTeam discussionTeam = (from dt in assignment.DiscussionTeams where dt.ID == discussionTeamID select dt).FirstOrDefault(); DiscussionViewModel dvm = new DiscussionViewModel(discussionTeam, ActiveCourseUser); //anonymize if requested if (anonymous == true) { foreach (DiscussionPostViewModel vm in dvm.DiscussionPostViewModels) { vm.poster.Anonymize = true; foreach (ReplyViewModel rvm in vm.Replies) { rvm.poster.Anonymize = true; } } } if (highlightValue == HighlightValue.None || courseUserId <= 0) //If hightlightValue == None, we want no selections - so setting student to null. { student = null; } else { student = db.CourseUsers.Find(courseUserId); } if (assignment.HasDiscussionTeams) { ViewBag.DiscussionHeader = assignment.AssignmentName + " - " + discussionTeam.TeamName; } else { ViewBag.DiscussionHeader = assignment.AssignmentName; } bool canPost = true; //If the user is a TA and TAs can only participate in some discussions, then we must confirm the TA //is in the team before we give them permission to post if (ActiveCourseUser.AbstractRoleID == (int)CourseRole.CourseRoles.TA && !assignment.DiscussionSettings.TAsCanPostToAllDiscussions && discussionTeam.Team.TeamMembers.Where(tm => tm.CourseUserID == ActiveCourseUser.ID).ToList().Count == 0) { canPost = false; } //for CRD assignment types we need a list of all discussions they can participate in for navigation. //additionally for CRD assignments we want to display all teammates invovled in the discussion if (assignment.HasDiscussionTeams) { ViewBag.DiscussionTeamList = assignment.DiscussionTeams; } ViewBag.LastVisit = GetAndUpdateLastVisit(discussionTeamID); ViewBag.CanPost = canPost; ViewBag.DiscussionPostViewModelList = dvm.DiscussionPostViewModels; ViewBag.HighlightValue = highlightValue; ViewBag.Posts = posts; ViewBag.Student = student; ViewBag.Assignment = assignment; ViewBag.IsFirstPost = false; ViewBag.ActiveCourse = ActiveCourseUser; ViewBag.DiscussionTeamID = discussionTeam.ID; ViewBag.IsAnonymous = anonymous; ViewBag.DiscussionTeam = discussionTeam; return(View("Index")); } return(RedirectToAction("Index", "Home", new { area = "AssignmentDetails", assignmentId = assignmentId })); }
/// <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 })); } }
public override DynamicDictionary BuildHeader(Assignment assignment) { dynamic header = Builder.BuildHeader(assignment); header.DiscussionTeam = new DynamicDictionary(); //create list of lists to store all the posters. A list of stringsfor team names, and a list of ints for all the team's ids List <List <Poster> > ListOfListOfPosters = new List <List <Poster> >(); List <string> ListOfTeamNames = new List <string>(); List <int> ListOfTeamIDs = new List <int>(); List <bool> ListOfHideMailIcon = new List <bool>(); List <int> ListOfNewPostCounts = new List <int>(); //AC: Quick hack to get author IDs into the view. Not sure if this is the best way to go about. Dictionary <int, int> TeamsToAuthors = new Dictionary <int, int>(); //Finding "Client's" Discussion Team(s). In some assignment types (CRD) users can be part of multiple DiscussionTeams foreach (DiscussionTeam dt in assignment.DiscussionTeams.OrderBy(dt => dt.TeamName).ToList()) { foreach (TeamMember tm in dt.GetAllTeamMembers()) { if (tm.CourseUserID == Client.ID || Client.AbstractRoleID == (int)CourseRole.CourseRoles.Observer) //Checking if Client is a member within the DiscussionTeam { //generating a list of "Posters" which is a view model used to display courseusers with proper anonmization. bool hideMail = false; List <Poster> posters = new List <Poster>(); if (assignment.Type == AssignmentTypes.CriticalReviewDiscussion) { List <int> AuthorCourseUserIds = dt.AuthorTeam.TeamMembers.Select(teamMem => teamMem.CourseUserID).ToList(); List <int> ReviewerCourseUserIds = dt.Team.TeamMembers.Where(teamMem => teamMem.CourseUser.AbstractRoleID == (int)CourseRole.CourseRoles.Student).Select(teamMem => teamMem.CourseUserID).ToList(); bool clientIsAuthor = AuthorCourseUserIds.Contains(Client.ID); bool clientIsReviewer = ReviewerCourseUserIds.Contains(Client.ID); foreach (CourseUser cu in dt.GetAllTeamMembers().Select(teamMem => teamMem.CourseUser).ToList()) { bool isAuthor = AuthorCourseUserIds.Contains(cu.ID); bool isReviewer = ReviewerCourseUserIds.Contains(cu.ID); string RoleName = ""; if (isAuthor && isReviewer) { RoleName = "Author/Reviewer"; } else if (isReviewer) { RoleName = "Reviewer"; } else if (isAuthor) { RoleName = "Author"; } Poster poster = new Poster() { Anonymize = DiscussionViewModel.AnonymizeNameForCriticalReviewDiscussion(cu, Client, assignment, isAuthor, isReviewer, clientIsAuthor, clientIsReviewer), CourseUser = cu, HideRole = assignment.DiscussionSettings.HasHiddenRoles, RoleName = RoleName, UserProfile = cu.UserProfile }; hideMail = hideMail || poster.Anonymize; //If any poster is Anonymized, then hideMail should true. posters.Add(poster); } } else { foreach (CourseUser cu in dt.GetAllTeamMembers().Select(teamMem => teamMem.CourseUser).ToList()) { Poster poster = new Poster() { Anonymize = DiscussionViewModel.AnonymizeNameForDiscussion(cu, Client, assignment.DiscussionSettings), CourseUser = cu, HideRole = assignment.DiscussionSettings.HasHiddenRoles, RoleName = "", UserProfile = cu.UserProfile }; hideMail = hideMail || poster.Anonymize; //If any poster is Anonymized, then hideMail should true. posters.Add(poster); } } ListOfNewPostCounts.Add(dt.GetNewPostsCount(Client.ID)); ListOfHideMailIcon.Add(hideMail); ListOfListOfPosters.Add(posters); ListOfTeamNames.Add(dt.TeamName); ListOfTeamIDs.Add(dt.ID); if (dt.AuthorTeamID != null) { TeamsToAuthors[dt.ID] = (int)dt.AuthorTeamID; } break; } } } header.DiscussionTeam.ListOfNewPostCounts = ListOfNewPostCounts; header.DiscussionTeam.ListOfHideMailIcon = ListOfHideMailIcon; header.DiscussionTeam.Assignment = assignment; header.DiscussionTeam.ListOfListOfPosters = ListOfListOfPosters; header.DiscussionTeam.ListOfTeamNames = ListOfTeamNames; header.DiscussionTeam.ListOfTeamIDs = ListOfTeamIDs; header.DiscussionTeam.TeamsToAuthors = TeamsToAuthors; return(header); }
public DiscussionViewModel DestroyDiscussion(DiscussionViewModel discussion) { this.Data.Discussions.Delete(discussion.Id); this.Data.SaveChanges(); return discussion; }
public DiscussionViewModel UpdateDiscussion(DiscussionViewModel discussion) { var discussionFromDb = this.Data.Discussions .All() .FirstOrDefault(d => d.Id == discussion.Id); discussionFromDb.Date = discussion.Date; discussionFromDb.SubjectOfDiscussion = discussion.SubjectOfDiscussion; discussionFromDb.Summary = discussion.Summary; discussionFromDb.Type = discussion.Type; discussionFromDb.NextDiscussionDate = discussion.NextDiscussionDate; discussionFromDb.NextDiscussionNote = discussion.NextDiscussionNote; discussionFromDb.NextDiscussionType = discussion.NextDiscussionType; discussionFromDb.Comments = discussion.Comments; discussionFromDb.IsVisible = discussion.IsVisible; this.Data.SaveChanges(); return discussion; }
public JsonResult UpdateDiscussion([DataSourceRequest] DataSourceRequest request, DiscussionViewModel discussion) { foreach (var propertyName in ModelState.Select(modelError => modelError.Key)) { if (propertyName.Contains("Client")) { ModelState[propertyName].Errors.Clear(); } else if (propertyName.Contains("Provider")) { ModelState[propertyName].Errors.Clear(); } } if (discussion == null || !ModelState.IsValid) { return Json(new[] { discussion }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet); } var updatedDiscussion = this.discussions.UpdateDiscussion(discussion); var loggedUserId = this.User.Identity.GetUserId(); Base.CreateActivity(ActivityType.Edit, updatedDiscussion.Id.ToString(), ActivityTargetType.Discussion, loggedUserId); return Json((new[] { discussion }.ToDataSourceResult(request, ModelState)), JsonRequestBehavior.AllowGet); }