private void GetFamilyFromService(CACCCheckInDb.PeopleWithDepartmentAndClassView person)
        {
            try
            {
                List <CACCCheckInDb.PeopleWithDepartmentAndClassView> people = null;

                if (person != null)
                {
                    using (CACCCheckInServiceProxy proxy =
                               new CACCCheckInServiceProxy())
                    {
                        proxy.Open();

                        if (person.FamilyId.HasValue)
                        {
                            logger.DebugFormat("Retrieving GetFamilyMembersByFamilyId from CACCCheckInService for FamilyId=[{0}]",
                                               person.FamilyId.Value);
                            people = proxy.GetFamilyMembersByFamilyId(person.FamilyId.Value);
                        }
                        else
                        {
                            logger.DebugFormat("Retrieving GetFamilyMembersByFamilyId from CACCCheckInService for PersonId=[{0}]",
                                               person.PersonId);
                            people = proxy.GetFamilyMembersByFamilyId(person.PersonId);
                        }
                    }
                }

                Debug.Assert(View != null);
                View.ViewDispatcher.BeginInvoke(DispatcherPriority.DataBind,
                                                new DispatcherOperationCallback(
                                                    delegate(object arg)
                {
                    // We will filter to get ONLY Family members who are
                    // either in Adult or MOPS department. These are
                    // the only valid departments for MOPS check-in
                    // screen. Also, we make sure only records where
                    // ClassRole is Member are needed.
                    View.FamilyDataContext = people.FindAll(p =>
                                                            (p.DepartmentName.Equals(Departments.Adult) ||
                                                             p.DepartmentName.Equals(Departments.MOPS)) &&
                                                            p.ClassRole.Equals(ClassRoles.Member));
                    return(null);
                }), null);
            }
            catch (Exception ex)
            {
                Debug.Assert(View != null);
                View.ViewDispatcher.BeginInvoke(DispatcherPriority.DataBind,
                                                new DispatcherOperationCallback(
                                                    delegate(object arg)
                {
                    View.DisplayExceptionDetail(ex);
                    return(null);
                }), null);
            }
        }