private void AddFamilyMember()
        {
            var    rows                   = nfmMembers.FamilyMemberRows;
            var    familyMemberGuid       = Guid.NewGuid();
            string familyMemberGuidString = familyMemberGuid.ToString().Replace("-", "_");

            var familyMemberRow = new NewFamilyMembersRow();

            nfmMembers.Controls.Add(familyMemberRow);
            familyMemberRow.ID              = string.Format("row_{0}", familyMemberGuidString);
            familyMemberRow.RoleUpdated    += familyMemberRow_RoleUpdated;
            familyMemberRow.DeleteClick    += familyMemberRow_DeleteClick;
            familyMemberRow.PersonGuid      = familyMemberGuid;
            familyMemberRow.Gender          = Gender.Unknown;
            familyMemberRow.RequireGender   = nfmMembers.RequireGender;
            familyMemberRow.RequireGrade    = nfmMembers.RequireGrade;
            familyMemberRow.ValidationGroup = BlockValidationGroup;

            var familyGroupType = GroupTypeCache.GetFamilyGroupType();

            if (familyGroupType != null && familyGroupType.DefaultGroupRoleId.HasValue)
            {
                familyMemberRow.RoleId    = familyGroupType.DefaultGroupRoleId;
                familyMemberRow.ShowGrade = familyGroupType.DefaultGroupRoleId == _childRoleId;
            }
            else
            {
                familyMemberRow.ShowGrade = false;
            }

            var ConnectionStatusValue = DefinedValueCache.Read(GetAttributeValue("DefaultConnectionStatus").AsGuid());

            if (ConnectionStatusValue != null)
            {
                familyMemberRow.ConnectionStatusValueId = ConnectionStatusValue.Id;
            }

            if (rows.Count > 0)
            {
                familyMemberRow.LastName = rows[0].LastName;
            }

            var contactInfoRow = new NewFamilyContactInfoRow();

            nfciContactInfo.Controls.Add(contactInfoRow);
            contactInfoRow.ID         = string.Format("ci_row_{0}", familyMemberGuidString);
            contactInfoRow.PersonGuid = familyMemberGuid;

            foreach (var attributeControl in attributeControls)
            {
                var attributeRow = new NewFamilyAttributesRow();
                attributeControl.Controls.Add(attributeRow);
                attributeRow.ID            = string.Format("{0}_{1}", attributeControl.ID, familyMemberGuidString);
                attributeRow.AttributeList = attributeControl.AttributeList;
                attributeRow.PersonGuid    = familyMemberGuid;
            }
        }
示例#2
0
        private void GetControlData()
        {
            FamilyMembers = new List <GroupMember>();

            int?childMaritalStatusId = null;
            var childMaritalStatus   = DefinedValueCache.Read(GetAttributeValue("ChildMaritalStatus").AsGuid());

            if (childMaritalStatus != null)
            {
                childMaritalStatusId = childMaritalStatus.Id;
            }
            int?adultMaritalStatusId = ddlMaritalStatus.SelectedValueAsInt();

            int recordTypePersonId   = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_PERSON.AsGuid()).Id;
            int recordStatusActiveId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_ACTIVE.AsGuid()).Id;

            foreach (NewFamilyMembersRow row in nfmMembers.FamilyMemberRows)
            {
                var groupMember = new GroupMember();
                groupMember.GroupMemberStatus          = GroupMemberStatus.Active;
                groupMember.Person                     = new Person();
                groupMember.Person.Guid                = row.PersonGuid.Value;
                groupMember.Person.RecordTypeValueId   = recordTypePersonId;
                groupMember.Person.RecordStatusValueId = recordStatusActiveId;

                if (row.RoleId.HasValue)
                {
                    groupMember.GroupRoleId = row.RoleId.Value;

                    if (groupMember.GroupRoleId == _childRoleId)
                    {
                        groupMember.Person.MaritalStatusValueId = childMaritalStatusId;
                    }
                    else
                    {
                        groupMember.Person.MaritalStatusValueId = adultMaritalStatusId;
                    }
                }

                groupMember.Person.TitleValueId  = row.TitleValueId;
                groupMember.Person.FirstName     = row.FirstName;
                groupMember.Person.NickName      = groupMember.Person.FirstName;
                groupMember.Person.LastName      = row.LastName;
                groupMember.Person.SuffixValueId = row.SuffixValueId;
                groupMember.Person.Gender        = row.Gender;

                var birthday = row.BirthDate;
                if (birthday.HasValue)
                {
                    // If setting a future birthdate, subtract a century until birthdate is not greater than today.
                    var today = RockDateTime.Today;
                    while (birthday.Value.CompareTo(today) > 0)
                    {
                        birthday = birthday.Value.AddYears(-100);
                    }
                    groupMember.Person.BirthMonth = birthday.Value.Month;
                    groupMember.Person.BirthDay   = birthday.Value.Day;
                    if (birthday.Value.Year != DateTime.MinValue.Year)
                    {
                        groupMember.Person.BirthYear = birthday.Value.Year;
                    }
                    else
                    {
                        groupMember.Person.BirthYear = null;
                    }
                }
                else
                {
                    groupMember.Person.SetBirthDate(null);
                }

                groupMember.Person.ConnectionStatusValueId = row.ConnectionStatusValueId;
                groupMember.Person.GradeOffset             = row.GradeOffset;

                NewFamilyContactInfoRow contactInfoRow = nfciContactInfo.ContactInfoRows.FirstOrDefault(c => c.PersonGuid == row.PersonGuid);
                if (contactInfoRow != null)
                {
                    string homeNumber = PhoneNumber.CleanNumber(contactInfoRow.HomePhoneNumber);
                    if (_homePhone != null && !string.IsNullOrWhiteSpace(homeNumber))
                    {
                        var homePhoneNumber = new PhoneNumber();
                        homePhoneNumber.NumberTypeValueId = _homePhone.Id;
                        homePhoneNumber.Number            = homeNumber;
                        homePhoneNumber.CountryCode       = PhoneNumber.CleanNumber(contactInfoRow.HomePhoneCountryCode);
                        homePhoneNumber.NumberFormatted   = PhoneNumber.FormattedNumber(homePhoneNumber.CountryCode, homeNumber);
                        groupMember.Person.PhoneNumbers.Add(homePhoneNumber);
                    }

                    string cellNumber = PhoneNumber.CleanNumber(contactInfoRow.CellPhoneNumber);
                    if (_cellPhone != null && !string.IsNullOrWhiteSpace(cellNumber))
                    {
                        var cellPhoneNumber = new PhoneNumber();
                        cellPhoneNumber.NumberTypeValueId  = _cellPhone.Id;
                        cellPhoneNumber.Number             = cellNumber;
                        cellPhoneNumber.CountryCode        = PhoneNumber.CleanNumber(contactInfoRow.CellPhoneCountryCode);
                        cellPhoneNumber.NumberFormatted    = PhoneNumber.FormattedNumber(cellPhoneNumber.CountryCode, cellNumber);
                        cellPhoneNumber.IsMessagingEnabled = contactInfoRow.IsMessagingEnabled;
                        groupMember.Person.PhoneNumbers.Add(cellPhoneNumber);
                    }

                    groupMember.Person.Email = contactInfoRow.Email;
                }
                groupMember.Person.IsEmailActive   = true;
                groupMember.Person.EmailPreference = EmailPreference.EmailAllowed;

                groupMember.Person.LoadAttributes();

                foreach (var attributeControl in attributeControls)
                {
                    NewFamilyAttributesRow attributeRow = attributeControl.AttributesRows.FirstOrDefault(r => r.PersonGuid == row.PersonGuid);
                    if (attributeRow != null)
                    {
                        attributeRow.GetEditValues(groupMember.Person);
                    }
                }

                FamilyMembers.Add(groupMember);
            }
        }
示例#3
0
        private void CreateControls(bool setSelection)
        {
            // Load all the attribute controls
            attributeControls.Clear();
            pnlAttributes.Controls.Clear();
            phDuplicates.Controls.Clear();

            var rockContext      = new RockContext();
            var attributeService = new AttributeService(rockContext);
            var locationService  = new LocationService(rockContext);

            foreach (string categoryGuid in GetAttributeValue("AttributeCategories").SplitDelimitedValues(false))
            {
                Guid guid = Guid.Empty;
                if (Guid.TryParse(categoryGuid, out guid))
                {
                    var category = CategoryCache.Read(guid);
                    if (category != null)
                    {
                        var attributeControl = new NewFamilyAttributes();
                        attributeControl.ClearRows();
                        pnlAttributes.Controls.Add(attributeControl);
                        attributeControls.Add(attributeControl);
                        attributeControl.ID         = "familyAttributes_" + category.Id.ToString();
                        attributeControl.CategoryId = category.Id;

                        foreach (var attribute in attributeService.GetByCategoryId(category.Id))
                        {
                            if (attribute.IsAuthorized(Authorization.EDIT, CurrentPerson))
                            {
                                attributeControl.AttributeList.Add(AttributeCache.Read(attribute));
                            }
                        }
                    }
                }
            }

            nfmMembers.ClearRows();
            nfciContactInfo.ClearRows();

            var groupMemberService = new GroupMemberService(rockContext);
            var familyGroupType    = GroupTypeCache.GetFamilyGroupType();
            int adultRoleId        = familyGroupType.Roles.First(a => a.Guid == Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT.AsGuid()).Id;
            var homeLocationGuid   = Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_HOME.AsGuid();

            var location = locationService.Get(acAddress.Street1, acAddress.Street2, acAddress.City, acAddress.State, acAddress.PostalCode, acAddress.Country);

            foreach (var familyMember in FamilyMembers)
            {
                string familyMemberGuidString = familyMember.Person.Guid.ToString().Replace("-", "_");

                var familyMemberRow = new NewFamilyMembersRow();
                nfmMembers.Controls.Add(familyMemberRow);
                familyMemberRow.ID              = string.Format("row_{0}", familyMemberGuidString);
                familyMemberRow.RoleUpdated    += familyMemberRow_RoleUpdated;
                familyMemberRow.DeleteClick    += familyMemberRow_DeleteClick;
                familyMemberRow.PersonGuid      = familyMember.Person.Guid;
                familyMemberRow.RequireGender   = nfmMembers.RequireGender;
                familyMemberRow.RequireGrade    = nfmMembers.RequireGrade;
                familyMemberRow.RoleId          = familyMember.GroupRoleId;
                familyMemberRow.ShowGrade       = familyMember.GroupRoleId == _childRoleId;
                familyMemberRow.ValidationGroup = BlockValidationGroup;

                var contactInfoRow = new NewFamilyContactInfoRow();
                nfciContactInfo.Controls.Add(contactInfoRow);
                contactInfoRow.ID                 = string.Format("ci_row_{0}", familyMemberGuidString);
                contactInfoRow.PersonGuid         = familyMember.Person.Guid;
                contactInfoRow.IsMessagingEnabled = _SMSEnabled;
                contactInfoRow.PersonName         = familyMember.Person.FullName;

                if (_homePhone != null)
                {
                    var homePhoneNumber = familyMember.Person.PhoneNumbers.Where(p => p.NumberTypeValueId == _homePhone.Id).FirstOrDefault();
                    if (homePhoneNumber != null)
                    {
                        contactInfoRow.HomePhoneNumber      = PhoneNumber.FormattedNumber(homePhoneNumber.CountryCode, homePhoneNumber.Number);
                        contactInfoRow.HomePhoneCountryCode = homePhoneNumber.CountryCode;
                    }
                }

                if (_cellPhone != null)
                {
                    var cellPhoneNumber = familyMember.Person.PhoneNumbers.Where(p => p.NumberTypeValueId == _cellPhone.Id).FirstOrDefault();
                    if (cellPhoneNumber != null)
                    {
                        contactInfoRow.CellPhoneNumber      = PhoneNumber.FormattedNumber(cellPhoneNumber.CountryCode, cellPhoneNumber.Number);
                        contactInfoRow.CellPhoneCountryCode = cellPhoneNumber.CountryCode;
                    }
                }

                contactInfoRow.Email = familyMember.Person.Email;

                if (setSelection)
                {
                    if (familyMember.Person != null)
                    {
                        familyMemberRow.TitleValueId            = familyMember.Person.TitleValueId;
                        familyMemberRow.FirstName               = familyMember.Person.FirstName;
                        familyMemberRow.LastName                = familyMember.Person.LastName;
                        familyMemberRow.SuffixValueId           = familyMember.Person.SuffixValueId;
                        familyMemberRow.Gender                  = familyMember.Person.Gender;
                        familyMemberRow.BirthDate               = familyMember.Person.BirthDate;
                        familyMemberRow.ConnectionStatusValueId = familyMember.Person.ConnectionStatusValueId;
                        familyMemberRow.GradeOffset             = familyMember.Person.GradeOffset;
                    }
                }

                foreach (var attributeControl in attributeControls)
                {
                    var attributeRow = new NewFamilyAttributesRow();
                    attributeControl.Controls.Add(attributeRow);
                    attributeRow.ID            = string.Format("{0}_{1}", attributeControl.ID, familyMemberGuidString);
                    attributeRow.AttributeList = attributeControl.AttributeList;
                    attributeRow.PersonGuid    = familyMember.Person.Guid;
                    attributeRow.PersonName    = familyMember.Person.FullName;

                    if (setSelection)
                    {
                        attributeRow.SetEditValues(familyMember.Person);
                    }
                }

                if (Duplicates.ContainsKey(familyMember.Person.Guid))
                {
                    var dupRow = new HtmlGenericControl("div");
                    dupRow.AddCssClass("row");
                    dupRow.ID = string.Format("dupRow_{0}", familyMemberGuidString);
                    phDuplicates.Controls.Add(dupRow);

                    var newPersonCol = new HtmlGenericControl("div");
                    newPersonCol.AddCssClass("col-md-6");
                    newPersonCol.ID = string.Format("newPersonCol_{0}", familyMemberGuidString);
                    dupRow.Controls.Add(newPersonCol);

                    newPersonCol.Controls.Add(PersonHtmlPanel(
                                                  familyMemberGuidString,
                                                  familyMember.Person,
                                                  familyMember.GroupRole,
                                                  location,
                                                  rockContext));

                    LinkButton lbRemoveMember = new LinkButton();
                    lbRemoveMember.ID = string.Format("lbRemoveMember_{0}", familyMemberGuidString);
                    lbRemoveMember.AddCssClass("btn btn-danger btn-xs");
                    lbRemoveMember.Text   = "Remove";
                    lbRemoveMember.Click += lbRemoveMember_Click;
                    newPersonCol.Controls.Add(lbRemoveMember);

                    var dupPersonCol = new HtmlGenericControl("div");
                    dupPersonCol.AddCssClass("col-md-6");
                    dupPersonCol.ID = string.Format("dupPersonCol_{0}", familyMemberGuidString);
                    dupRow.Controls.Add(dupPersonCol);

                    var duplicateHeader = new HtmlGenericControl("h4");
                    duplicateHeader.InnerText = "Possible Duplicate Records";
                    dupPersonCol.Controls.Add(duplicateHeader);

                    foreach (var duplicate in Duplicates[familyMember.Person.Guid])
                    {
                        GroupTypeRole groupTypeRole = null;
                        Location      duplocation   = null;

                        var familyGroupMember = groupMemberService.Queryable()
                                                .Where(a => a.PersonId == duplicate.Id)
                                                .Where(a => a.Group.GroupTypeId == familyGroupType.Id)
                                                .Select(s => new
                        {
                            s.GroupRole,
                            GroupLocation = s.Group.GroupLocations.Where(a => a.GroupLocationTypeValue.Guid == homeLocationGuid).Select(a => a.Location).FirstOrDefault()
                        })
                                                .FirstOrDefault();
                        if (familyGroupMember != null)
                        {
                            groupTypeRole = familyGroupMember.GroupRole;
                            duplocation   = familyGroupMember.GroupLocation;
                        }

                        dupPersonCol.Controls.Add(PersonHtmlPanel(
                                                      familyMemberGuidString,
                                                      duplicate,
                                                      groupTypeRole,
                                                      duplocation,
                                                      rockContext));
                    }
                }
            }

            ShowPage();
        }
        private void CreateControls(List <GroupMember> familyMembers, bool setSelection)
        {
            // Load all the attribute controls
            attributeControls.Clear();
            pnlAttributes.Controls.Clear();

            foreach (string categoryGuid in GetAttributeValue("AttributeCategories").SplitDelimitedValues(false))
            {
                Guid guid = Guid.Empty;
                if (Guid.TryParse(categoryGuid, out guid))
                {
                    var category = CategoryCache.Read(guid);
                    if (category != null)
                    {
                        var attributeControl = new NewFamilyAttributes();
                        attributeControl.ClearRows();
                        pnlAttributes.Controls.Add(attributeControl);
                        attributeControls.Add(attributeControl);
                        attributeControl.ID         = "familyAttributes_" + category.Id.ToString();
                        attributeControl.CategoryId = category.Id;

                        foreach (var attribute in new AttributeService(new RockContext()).GetByCategoryId(category.Id))
                        {
                            if (attribute.IsAuthorized(Authorization.EDIT, CurrentPerson))
                            {
                                attributeControl.AttributeList.Add(AttributeCache.Read(attribute));
                            }
                        }
                    }
                }
            }

            nfmMembers.ClearRows();
            nfciContactInfo.ClearRows();

            foreach (var familyMember in familyMembers)
            {
                string familyMemberGuidString = familyMember.Person.Guid.ToString().Replace("-", "_");

                var familyMemberRow = new NewFamilyMembersRow();
                nfmMembers.Controls.Add(familyMemberRow);
                familyMemberRow.ID            = string.Format("row_{0}", familyMemberGuidString);
                familyMemberRow.RoleUpdated  += familyMemberRow_RoleUpdated;
                familyMemberRow.DeleteClick  += familyMemberRow_DeleteClick;
                familyMemberRow.PersonGuid    = familyMember.Person.Guid;
                familyMemberRow.RequireGender = nfmMembers.RequireGender;
                familyMemberRow.RequireGrade  = nfmMembers.RequireGrade;
                familyMemberRow.RoleId        = familyMember.GroupRoleId;
                familyMemberRow.ShowGrade     = familyMember.GroupRoleId == _childRoleId;

                var contactInfoRow = new NewFamilyContactInfoRow();
                nfciContactInfo.Controls.Add(contactInfoRow);
                contactInfoRow.ID         = string.Format("ci_row_{0}", familyMemberGuidString);
                contactInfoRow.PersonGuid = familyMember.Person.Guid;

                if (_homePhone != null)
                {
                    var homePhoneNumber = familyMember.Person.PhoneNumbers.Where(p => p.NumberTypeValueId == _homePhone.Id).FirstOrDefault();
                    if (homePhoneNumber != null)
                    {
                        contactInfoRow.HomePhoneNumber      = homePhoneNumber.NumberFormatted;
                        contactInfoRow.HomePhoneCountryCode = homePhoneNumber.CountryCode;
                    }
                }

                if (_cellPhone != null)
                {
                    var cellPhoneNumber = familyMember.Person.PhoneNumbers.Where(p => p.NumberTypeValueId == _cellPhone.Id).FirstOrDefault();
                    if (cellPhoneNumber != null)
                    {
                        contactInfoRow.CellPhoneNumber      = cellPhoneNumber.NumberFormatted;
                        contactInfoRow.CellPhoneCountryCode = cellPhoneNumber.CountryCode;
                    }
                }

                contactInfoRow.Email = familyMember.Person.Email;

                if (setSelection)
                {
                    if (familyMember.Person != null)
                    {
                        familyMemberRow.TitleValueId            = familyMember.Person.TitleValueId;
                        familyMemberRow.FirstName               = familyMember.Person.FirstName;
                        familyMemberRow.LastName                = familyMember.Person.LastName;
                        familyMemberRow.SuffixValueId           = familyMember.Person.SuffixValueId;
                        familyMemberRow.Gender                  = familyMember.Person.Gender;
                        familyMemberRow.BirthDate               = familyMember.Person.BirthDate;
                        familyMemberRow.ConnectionStatusValueId = familyMember.Person.ConnectionStatusValueId;
                        familyMemberRow.GradeOffset             = familyMember.Person.GradeOffset;
                    }
                }

                foreach (var attributeControl in attributeControls)
                {
                    var attributeRow = new NewFamilyAttributesRow();
                    attributeControl.Controls.Add(attributeRow);
                    attributeRow.ID            = string.Format("{0}_{1}", attributeControl.ID, familyMemberGuidString);
                    attributeRow.AttributeList = attributeControl.AttributeList;
                    attributeRow.PersonGuid    = familyMember.Person.Guid;

                    if (setSelection)
                    {
                        attributeRow.SetEditValues(familyMember.Person);
                    }
                }
            }

            ShowPage(CurrentPageIndex);
        }