예제 #1
0
        /// <summary>
        /// Helper function to prevent GetPersonForEdit from getting crazy long. Given a list of Rock.Client.GroupMember,
        /// this gets the all families (as Rock.Client.Group) for each GroupMember.
        /// </summary>
        static void GroupMembersToFamilyGroups(Rock.Client.Person refreshedPerson, List <Rock.Client.GroupMember> groupMembers, PersonEditResponseDelegate response)
        {
            // first, we need to get the families for each group member
            int groupMembersResolved = 0;
            List <Rock.Client.Group> groupFamilies = new List <Rock.Client.Group>( );

            foreach (Rock.Client.GroupMember member in groupMembers)
            {
                RockApi.Get_FamiliesOfPerson(member.PersonId, string.Empty,
                                             delegate(HttpStatusCode statusCode, string statusDescription, List <Rock.Client.Group> groups)
                {
                    if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode))
                    {
                        // serialize the responses on the UI thread so we can be sure it's all thread safe
                        Rock.Mobile.Threading.Util.PerformOnUIThread(
                            delegate
                        {
                            // first, add the returned groups to our global list.
                            foreach (Rock.Client.Group group in groups)
                            {
                                // make sure we don't already have this group in our list
                                Rock.Client.Group resultGroup = groupFamilies.Where(g => g.Id == group.Id).FirstOrDefault( );
                                if (resultGroup == null)
                                {
                                    groupFamilies.Add(group);
                                }
                            }

                            // now see if we're done waiting for all responses.
                            groupMembersResolved++;
                            if (groupMembersResolved == groupMembers.Count)
                            {
                                GroupsToFamilies(groupFamilies, refreshedPerson, response);
                            }
                        });
                    }
                    // if any of them fail, then fail.
                    else
                    {
                        response(null, null);
                    }
                });
            }
        }
예제 #2
0
        public static void GetFamiliesOfPerson(Rock.Client.Person person, HttpRequest.RequestResult <List <Rock.Client.Group> > resultHandler)
        {
            string oDataFilter = "?$expand=GroupType,Campus,Members/GroupRole,GroupLocations/Location,GroupLocations/GroupLocationTypeValue,GroupLocations/Location/LocationTypeValue";

            RockApi.Get_FamiliesOfPerson(person.Id, oDataFilter, resultHandler);
        }