private void Subscribe(int groupId) { RockContext rockContext = new RockContext(); GroupMemberService groupMemberService = new GroupMemberService(rockContext); var groupMembers = groupMemberService.GetByGroupIdAndPersonId(groupId, Person.Id).ToList(); if (groupMembers.Any()) { foreach (var member in groupMembers) { member.GroupMemberStatus = GroupMemberStatus.Active; CommunicationMembership.Add(member); } } else { GroupService groupService = new GroupService(rockContext); var group = groupService.Get(groupId); var defaultGroupRoleId = group.GroupType.DefaultGroupRoleId; var newMember = new GroupMember { PersonId = Person.Id, GroupId = groupId, GroupRoleId = defaultGroupRoleId.Value, GroupMemberStatus = GroupMemberStatus.Active }; groupMemberService.Add(newMember); CommunicationMembership.Add(newMember); } rockContext.SaveChanges(); SaveViewState(); BindGroups(true); }
protected override object SaveViewState() { var obj = base.SaveViewState(); ViewState["CommunicationMembershipIds"] = CommunicationMembership.Select(m => m.Id).ToList(); ViewState["CommunicationGroupIds"] = CommunicationGroups.Select(g => g.Id).ToList(); return(obj); }
private void Unsubscribe(int groupId) { RockContext rockContext = new RockContext(); GroupMemberService groupMemberService = new GroupMemberService(rockContext); var groupMembers = groupMemberService.GetByGroupIdAndPersonId(groupId, Person.Id).ToList(); foreach (var member in groupMembers) { member.GroupMemberStatus = GroupMemberStatus.Inactive; CommunicationMembership.RemoveAll(m => m.GroupId == groupId); } rockContext.SaveChanges(); SaveViewState(); BindGroups(true); }
protected void btnSubscribe_Click(object sender, EventArgs e) { var groupId = ( int )ViewState["KeywordGroupId"]; RockContext rockContext = new RockContext(); GroupMemberService groupMemberService = new GroupMemberService(rockContext); GroupService groupService = new GroupService(rockContext); var group = groupService.Get(groupId); var defaultGroupRoleId = group.GroupType.DefaultGroupRoleId; var groupMembers = groupMemberService.GetByGroupIdAndPersonId(groupId, Person.Id).ToList(); if (!groupMembers.Any()) { var groupMember = new GroupMember { GroupId = groupId, PersonId = Person.Id, GroupRoleId = defaultGroupRoleId.Value }; groupMemberService.Add(groupMember); groupMembers.Add(groupMember); rockContext.SaveChanges(); } foreach (var member in groupMembers) { member.GroupMemberStatus = GroupMemberStatus.Active; rockContext.SaveChanges(); member.LoadAttributes(); Rock.Attribute.Helper.GetEditValues(phGroupAttributes, member); member.SaveAttributeValues(); CommunicationMembership.Add(member); } SaveViewState(); pnlKeyword.Visible = false; nbSuccess.Visible = true; nbSuccess.Text = "You have been successfully subscribed. We look forward to communicating with you soon!"; BindGroups(true); }
private void LoadGroups() { int communicationListGroupTypeId = GroupTypeCache.Get(Rock.SystemGuid.GroupType.GROUPTYPE_COMMUNICATIONLIST.AsGuid()).Id; RockContext rockContext = new RockContext(); GroupMemberService groupMemberService = new GroupMemberService(rockContext); GroupService groupService = new GroupService(rockContext); CommunicationMembership = groupMemberService.Queryable().AsNoTracking() .Where(gm => gm.Group.GroupTypeId == communicationListGroupTypeId) .Where(gm => gm.PersonId == Person.Id && !gm.IsArchived && gm.GroupMemberStatus == GroupMemberStatus.Active) .ToList(); var membershipGroupIds = CommunicationMembership.Select(m => m.GroupId).ToList(); var tempGroups = groupService.Queryable().AsNoTracking() .Where(g => g.IsPublic && (g.GroupTypeId == communicationListGroupTypeId || membershipGroupIds.Contains(g.Id) && g.GroupTypeId == communicationListGroupTypeId)) .OrderBy(g => g.Name) .ToList(); CommunicationGroups = new List <Group>(); //First add subscribed Ggroups foreach (var group in tempGroups) { if (membershipGroupIds.Contains(group.Id)) { CommunicationGroups.Add(group); } } //Then add the rest foreach (var group in tempGroups) { if (!membershipGroupIds.Contains(group.Id)) { CommunicationGroups.Add(group); } } SaveViewState(); }
private void BindGroups(bool insertValues) { GetExpandedPanels(); phGroups.Controls.Clear(); var membershipGroupIds = CommunicationMembership.Select(m => m.GroupId).ToList(); foreach (var group in CommunicationGroups) { var member = CommunicationMembership.Where(gm => gm.GroupId == group.Id).FirstOrDefault(); if (member == null) { member = new GroupMember { GroupId = group.Id }; } var pw = AddCommunicationPanel(group, member, insertValues); if (membershipGroupIds.Contains(group.Id)) { pw.TitleIconCssClass = "fa fa-check"; pw.CssClass = "subscribed"; } else { pw.CssClass = "unsubscribed"; } if (ExpandedPanels.Contains(pw.ID)) { pw.Expanded = true; } } }