/// <summary> /// Handles the SaveClick event of the dlgLocations control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void dlgLocations_SaveClick(object sender, EventArgs e) { Location location = null; int? memberPersonAliasId = null; RockContext rockContext = new RockContext(); if (LocationTypeTab.Equals(MEMBER_LOCATION_TAB_TITLE)) { if (ddlMember.SelectedValue != null) { var ids = ddlMember.SelectedValue.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries).AsIntegerList().ToArray(); if (ids.Length == 2) { int locationId = ids[0]; int primaryAliasId = ids[1]; var dbLocation = new LocationService(rockContext).Get(locationId); if (dbLocation != null) { location = new Location(); location.CopyPropertiesFrom(dbLocation); } memberPersonAliasId = new PersonAliasService(rockContext).GetPrimaryAliasId(primaryAliasId); } } } else { if (locpGroupLocation.Location != null) { location = new Location(); location.CopyPropertiesFrom(locpGroupLocation.Location); } } if (location != null) { GroupLocation groupLocation = null; Guid guid = hfAddLocationGroupGuid.Value.AsGuid(); if (!guid.IsEmpty()) { groupLocation = GroupLocationsState.FirstOrDefault(l => l.Guid.Equals(guid)); } if (groupLocation == null) { groupLocation = new GroupLocation(); GroupLocationsState.Add(groupLocation); } groupLocation.GroupMemberPersonAliasId = memberPersonAliasId; groupLocation.Location = location; groupLocation.LocationId = groupLocation.Location.Id; groupLocation.GroupLocationTypeValueId = ddlLocationType.SelectedValueAsId(); var selectedIds = spSchedules.SelectedValuesAsInt(); groupLocation.Schedules = new ScheduleService(rockContext).Queryable() .Where(s => selectedIds.Contains(s.Id)).ToList(); if (groupLocation.GroupLocationTypeValueId.HasValue) { groupLocation.GroupLocationTypeValue = new DefinedValue(); var definedValue = new DefinedValueService(rockContext).Get(groupLocation.GroupLocationTypeValueId.Value); if (definedValue != null) { groupLocation.GroupLocationTypeValue.CopyPropertiesFrom(definedValue); } } } BindLocationsGrid(); dlgLocations.Hide(); hfActiveDialog.Value = string.Empty; }
/// <summary> /// Gs the locations_ show edit. /// </summary> /// <param name="locationGuid">The location unique identifier.</param> protected void gLocations_ShowEdit(Guid locationGuid) { var rockContext = new RockContext(); ddlMember.Items.Clear(); int?groupTypeId = this.CurrentGroupTypeId; if (groupTypeId.HasValue) { var groupType = GroupTypeCache.Read(groupTypeId.Value); if (groupType != null) { GroupLocationPickerMode groupTypeModes = groupType.LocationSelectionMode; if (groupTypeModes != GroupLocationPickerMode.None) { // Set the location picker modes allowed based on the group type's allowed modes LocationPickerMode modes = LocationPickerMode.None; if ((groupTypeModes & GroupLocationPickerMode.Named) == GroupLocationPickerMode.Named) { modes = modes | LocationPickerMode.Named; } if ((groupTypeModes & GroupLocationPickerMode.Address) == GroupLocationPickerMode.Address) { modes = modes | LocationPickerMode.Address; } if ((groupTypeModes & GroupLocationPickerMode.Point) == GroupLocationPickerMode.Point) { modes = modes | LocationPickerMode.Point; } if ((groupTypeModes & GroupLocationPickerMode.Polygon) == GroupLocationPickerMode.Polygon) { modes = modes | LocationPickerMode.Polygon; } bool displayMemberTab = (groupTypeModes & GroupLocationPickerMode.GroupMember) == GroupLocationPickerMode.GroupMember; bool displayOtherTab = modes != LocationPickerMode.None; ulNav.Visible = displayOtherTab && displayMemberTab; pnlMemberSelect.Visible = displayMemberTab; pnlLocationSelect.Visible = displayOtherTab && !displayMemberTab; if (displayMemberTab) { int?leaderId = lppLeader.PersonId; if (leaderId != null) { var personService = new PersonService(rockContext); Guid previousLocationType = Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_PREVIOUS.AsGuid(); var leader = personService.Get(lppLeader.PersonId.Value); foreach (Group family in personService.GetFamilies(leaderId.Value)) { foreach (GroupLocation familyGroupLocation in family.GroupLocations .Where(l => l.IsMappedLocation && !l.GroupLocationTypeValue.Guid.Equals(previousLocationType))) { ListItem li = new ListItem( string.Format("{0} {1} ({2})", leader.FullName, familyGroupLocation.GroupLocationTypeValue.Value, familyGroupLocation.Location.ToString()), string.Format("{0}|{1}", familyGroupLocation.Location.Id, leader.Id)); ddlMember.Items.Add(li); } } } } if (displayOtherTab) { locpGroupLocation.AllowedPickerModes = modes; locpGroupLocation.CurrentPickerMode = locpGroupLocation.GetBestPickerModeForLocation(null); } ddlLocationType.DataSource = groupType.LocationTypeValues.ToList(); ddlLocationType.DataBind(); var groupLocation = GroupLocationsState.FirstOrDefault(l => l.Guid.Equals(locationGuid)); if (groupLocation != null && groupLocation.Location != null) { if (displayOtherTab) { locpGroupLocation.CurrentPickerMode = locpGroupLocation.GetBestPickerModeForLocation(groupLocation.Location); locpGroupLocation.MapStyleValueGuid = GetAttributeValue("MapStyle").AsGuid(); if (groupLocation.Location != null) { locpGroupLocation.Location = new LocationService(rockContext).Get(groupLocation.Location.Id); } } if (displayMemberTab && ddlMember.Items.Count > 0 && groupLocation.GroupMemberPersonAliasId.HasValue) { LocationTypeTab = MEMBER_LOCATION_TAB_TITLE; int?personId = new PersonAliasService(rockContext).GetPersonId(groupLocation.GroupMemberPersonAliasId.Value); if (personId.HasValue) { ddlMember.SetValue(string.Format("{0}|{1}", groupLocation.LocationId, personId.Value)); } } else if (displayOtherTab) { LocationTypeTab = OTHER_LOCATION_TAB_TITLE; } ddlLocationType.SetValue(groupLocation.GroupLocationTypeValueId); spSchedules.SetValues(groupLocation.Schedules); hfAddLocationGroupGuid.Value = locationGuid.ToString(); } else { hfAddLocationGroupGuid.Value = string.Empty; LocationTypeTab = (displayMemberTab && ddlMember.Items.Count > 0) ? MEMBER_LOCATION_TAB_TITLE : OTHER_LOCATION_TAB_TITLE; } rptLocationTypes.DataSource = _tabs; rptLocationTypes.DataBind(); ShowSelectedPane(); ShowDialog("Locations", true); } } } }