/// <summary> /// Given a groupType and groupRole, returns either -1 if they aren't the specified groupRole in the group, /// or the ID for the GROUP if they are. /// We can think about it like this because we know the user is SOME type of member for each Group in the list. /// </summary> public static int IsMemberTypeOfGroup(List <Rock.Client.Group> groups, int groupType, int groupRole) { // find all the groups of 'groupType' that List <Rock.Client.Group> groupList = groups.Where(g => g.GroupTypeId == groupType && g.IsActive == true).ToList( ); if (groupList != null) { // now for each group, find the groupMember for the person we're looking for. foreach (Rock.Client.Group targetGroup in groupList) { // there should really only be one result. How could the same member multiple times in a single group? // but, just check for any result, and if we get one, return the target groupID. Rock.Client.GroupMember groupMember = targetGroup.Members .Where(m => m.GroupRoleId == groupRole && m.GroupMemberStatus == Client.Enums.GroupMemberStatus.Active) .FirstOrDefault(); if (groupMember != null) { return(targetGroup.Id); } } } return(-1); }
public static void UpdatePersonRoleInFamily(Rock.Client.GroupMember groupMember, int childAdultGroupRoleId, HttpRequest.RequestResult resultHandler) { Rock.Client.GroupMember destGroupMember = new Rock.Client.GroupMember(); // copy over all the other data destGroupMember.GroupMemberStatus = groupMember.GroupMemberStatus; destGroupMember.PersonId = groupMember.PersonId; destGroupMember.Guid = groupMember.Guid; destGroupMember.GroupId = groupMember.GroupId; destGroupMember.GroupRoleId = childAdultGroupRoleId; destGroupMember.Id = groupMember.Id; destGroupMember.IsSystem = groupMember.IsSystem; RockApi.Put_GroupMembers(destGroupMember, Config.Instance.CurrentPersonAliasId, resultHandler); }
static void UpdatePersonImageGroup(Rock.Client.Person person, int modifiedById, HttpRequest.RequestResult resultHandler) { string oDataFilter = string.Format("?$filter=PersonId eq {0} and GroupId eq {1}", person.Id, ApplicationGroup_PhotoRequest_ValueId); RockApi.Get_GroupMembers(oDataFilter, delegate(HttpStatusCode statusCode, string statusDescription, List <Rock.Client.GroupMember> model) { if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) == true) { // if it's null, they are NOT in the group and we should POST. if it's valid, // we can simply update the existing. if (model.Count == 0) { Rock.Client.GroupMember groupMember = new Rock.Client.GroupMember(); groupMember.Guid = Guid.NewGuid( ); groupMember.PersonId = person.Id; groupMember.GroupMemberStatus = GroupMemberStatus_Pending_ValueId; groupMember.GroupId = ApplicationGroup_PhotoRequest_ValueId; groupMember.GroupRoleId = GroupMemberRole_Member_ValueId; RockApi.Post_GroupMembers(groupMember, modifiedById, resultHandler); } else { // otherwise, we'll do a PUT Rock.Client.GroupMember groupMember = new Rock.Client.GroupMember(); // set the status to pending groupMember.GroupMemberStatus = GroupMemberStatus_Pending_ValueId; // and copy over all the other data groupMember.PersonId = model[0].PersonId; groupMember.Guid = model[0].Guid; groupMember.GroupId = model[0].GroupId; groupMember.GroupRoleId = model[0].GroupRoleId; groupMember.Id = model[0].Id; groupMember.IsSystem = model[0].IsSystem; RockApi.Put_GroupMembers(groupMember, modifiedById, resultHandler); } } else { // fail... resultHandler(statusCode, statusDescription); } }); }
public static void Post_GroupMembers(Rock.Client.GroupMember groupMember, int modifiedById, HttpRequest.RequestResult requestHandler) { Rock.Client.GroupMemberEntity groupMemberEntity = new Rock.Client.GroupMemberEntity(); groupMemberEntity.CopyPropertiesFrom(groupMember); if (modifiedById > 0) { groupMemberEntity.ModifiedAuditValuesAlreadyUpdated = true; groupMemberEntity.CreatedByPersonAliasId = modifiedById; groupMemberEntity.ModifiedByPersonAliasId = modifiedById; } RestRequest request = GetRockRestRequest(Method.POST); request.AddBody(groupMemberEntity); string requestUrl = BaseUrl + EndPoint_GroupMembers; Request.ExecuteAsync(requestUrl, request, requestHandler); }
public static void GetPersonForEdit(Rock.Client.GroupMember groupMember, PersonEditResponseDelegate response) { // get their attributes before presenting. ApplicationApi.GetPersonById(groupMember.Person.Id, true, delegate(System.Net.HttpStatusCode statusCode, string statusDescription, Rock.Client.Person refreshedPerson) { if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) && refreshedPerson != null) { // get the people allowed to check them in string query = string.Format("?personId={0}&relationshipRoleId={1}", groupMember.Person.Id, Config.Instance.AllowedCheckInByRole.Id); RockApi.Get_GroupMembers_KnownRelationships(query, delegate(HttpStatusCode knownRelationshipCode, string knownRelationshipDesc, List <Rock.Client.GroupMember> groupMembers) { if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode)) { // and lastly, from that, get the families of these group members if (groupMembers.Count > 0) { GroupMembersToFamilyGroups(refreshedPerson, groupMembers, response); } else { response(refreshedPerson, null); } } else { response(null, null); } }); } else { response(null, null); } }); }
public static void UpdatePersonRoleInFamily( Rock.Client.GroupMember groupMember, int childAdultGroupRoleId, HttpRequest.RequestResult resultHandler ) { Rock.Client.GroupMember destGroupMember = new Rock.Client.GroupMember(); // copy over all the other data destGroupMember.GroupMemberStatus = groupMember.GroupMemberStatus; destGroupMember.PersonId = groupMember.PersonId; destGroupMember.Guid = groupMember.Guid; destGroupMember.GroupId = groupMember.GroupId; destGroupMember.GroupRoleId = childAdultGroupRoleId; destGroupMember.Id = groupMember.Id; destGroupMember.IsSystem = groupMember.IsSystem; RockApi.Put_GroupMembers( destGroupMember, Config.Instance.CurrentPersonAliasId, resultHandler ); }