Exemplo n.º 1
0
        /// <summary>
        /// Adds the GroupMember to the Group. If a matching 'Archived' GroupMember is found with same role and person, it'll be recovered instead of adding a new record
        /// </summary>
        /// <param name="group">The group.</param>
        /// <param name="personId">The person identifier.</param>
        /// <param name="groupRoleId">The group role identifier.</param>
        /// <returns>
        /// Either a new GroupMember or a restored GroupMember record
        /// </returns>
        public GroupMember AddOrRestoreGroupMember(Group group, int personId, int groupRoleId)
        {
            var         rockContext  = this.Context as RockContext;
            var         groupService = new GroupService(rockContext);
            GroupMember archivedGroupMember;

            if (groupService.ExistsAsArchived(group, personId, groupRoleId, out archivedGroupMember))
            {
                this.Restore(archivedGroupMember);
                return(archivedGroupMember);
            }
            else
            {
                var groupMember = new GroupMember {
                    Group = group, GroupId = group.Id, PersonId = personId, GroupRoleId = groupRoleId
                };
                base.Add(groupMember);
                return(groupMember);
            }
        }