/// <summary> /// Restores the view-state information from a previous user control request that was saved by the <see cref="M:System.Web.UI.UserControl.SaveViewState" /> method. /// </summary> /// <param name="savedState">An <see cref="T:System.Object" /> that represents the user control state to be restored.</param> protected override void LoadViewState(object savedState) { base.LoadViewState(savedState); if (CurrentCheckInState == null) { return; } EditFamilyState = (this.ViewState["EditFamilyState"] as string).FromJsonOrNull <FamilyRegistrationState>(); CreateDynamicFamilyControls(FamilyRegistrationState.FromGroup(new Group() { GroupTypeId = GroupTypeCache.GetFamilyGroupType().Id }), false); CreateDynamicPersonControls(FamilyRegistrationState.FamilyPersonState.FromTemporaryPerson(), false); }
/// <summary> /// Shows edit UI fo the family (or null adding a new family) /// </summary> /// <param name="checkInFamily">The check in family.</param> private void ShowFamilyDetail(CheckInFamily checkInFamily) { if (checkInFamily != null && checkInFamily.Group != null) { this.EditFamilyState = FamilyRegistrationState.FromGroup(checkInFamily.Group); hfGroupId.Value = checkInFamily.Group.Id.ToString(); mdEditFamily.Title = checkInFamily.Group.Name; int groupId = hfGroupId.Value.AsInteger(); var rockContext = new RockContext(); var groupMemberService = new GroupMemberService(rockContext); var groupMembersQuery = groupMemberService.Queryable(false) .Include(a => a.Person) .Where(a => a.GroupId == groupId) .OrderBy(m => m.GroupRole.Order) .ThenBy(m => m.Person.BirthYear) .ThenBy(m => m.Person.BirthMonth) .ThenBy(m => m.Person.BirthDay) .ThenBy(m => m.Person.Gender); var groupMemberList = groupMembersQuery.ToList(); foreach (var groupMember in groupMemberList) { var familyPersonState = FamilyRegistrationState.FamilyPersonState.FromPerson(groupMember.Person, 0, true); familyPersonState.GroupMemberGuid = groupMember.Guid; familyPersonState.GroupId = groupMember.GroupId; familyPersonState.IsAdult = groupMember.GroupRoleId == _groupTypeRoleAdultId; this.EditFamilyState.FamilyPersonListState.Add(familyPersonState); } var adultIds = this.EditFamilyState.FamilyPersonListState.Where(a => a.IsAdult && a.PersonId.HasValue).Select(a => a.PersonId.Value).ToList(); var roleIds = CurrentCheckInState.CheckInType.Registration.KnownRelationships.Where(a => a.Key != 0).Select(a => a.Key).ToList(); IEnumerable <GroupMember> personRelationships = new PersonService(rockContext).GetRelatedPeople(adultIds, roleIds); foreach (GroupMember personRelationship in personRelationships) { if (!this.EditFamilyState.FamilyPersonListState.Any(a => a.PersonId == personRelationship.Person.Id)) { var familyPersonState = FamilyRegistrationState.FamilyPersonState.FromPerson(personRelationship.Person, personRelationship.GroupRoleId, false); familyPersonState.GroupMemberGuid = Guid.NewGuid(); var relatedFamily = personRelationship.Person.GetFamily(); if (relatedFamily != null) { familyPersonState.GroupId = relatedFamily.Id; } familyPersonState.IsAdult = false; familyPersonState.ChildRelationshipToAdult = personRelationship.GroupRoleId; familyPersonState.CanCheckIn = CurrentCheckInState.CheckInType.Registration.KnownRelationshipsCanCheckin.Any(k => k.Key == familyPersonState.ChildRelationshipToAdult); this.EditFamilyState.FamilyPersonListState.Add(familyPersonState); } } BindFamilyMembersGrid(); CreateDynamicFamilyControls(EditFamilyState); ShowFamilyView(); } else { this.EditFamilyState = FamilyRegistrationState.FromGroup(new Group() { GroupTypeId = GroupTypeCache.GetFamilyGroupType().Id }); CreateDynamicFamilyControls(EditFamilyState); hfGroupId.Value = "0"; mdEditFamily.Title = "Add Family"; EditGroupMember(null); } _initialEditFamilyStateHash = this.EditFamilyState.GetStateHash(); // disable any idle redirect blocks that are on the page when the mdEditFamily modal is open DisableIdleRedirectBlocks(true); upContent.Update(); mdEditFamily.Show(); }