Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
        /// <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);
                    }
                }
            }
        }