Esempio n. 1
0
        private void LoadControls()
        {
            if (_group != null)
            {
                ltTitle.Text = "Recommit To Lead Group";
                tbName.Text  = _group.Name;
                cpCampus.SetValue(_group.CampusId);
                _group.LoadAttributes();
            }
            else
            {
                _group = new Group()
                {
                    Id = 0, GroupTypeId = _groupType.Id
                };
                tbName.Text  = _person.LastName + " Home";
                ltTitle.Text = "Lead New Group";
            }

            //Load schedule control
            if (_groupType.AllowedScheduleTypes != ScheduleType.None)
            {
                rblSchedule.Items.Clear();

                ListItem liNone = new ListItem("None", "0");
                liNone.Selected = _group != null && (_group.Schedule == null || _group.Schedule.ScheduleType == ScheduleType.None);
                rblSchedule.Items.Add(liNone);

                if (_groupType != null && (_groupType.AllowedScheduleTypes & ScheduleType.Weekly) == ScheduleType.Weekly)
                {
                    ListItem li = new ListItem("Weekly", "1");
                    li.Selected = _group != null && _group.Schedule != null && _group.Schedule.ScheduleType == ScheduleType.Weekly;
                    rblSchedule.Items.Add(li);
                }

                if (_groupType != null && (_groupType.AllowedScheduleTypes & ScheduleType.Custom) == ScheduleType.Custom)
                {
                    ListItem li = new ListItem("Custom", "2");
                    li.Selected = _group != null && _group.Schedule != null && _group.Schedule.ScheduleType == ScheduleType.Custom;
                    rblSchedule.Items.Add(li);
                }

                if (_groupType != null && (_groupType.AllowedScheduleTypes & ScheduleType.Named) == ScheduleType.Named)
                {
                    ListItem li = new ListItem("Named", "4");
                    li.Selected = _group != null && _group.Schedule != null && _group.Schedule.ScheduleType == ScheduleType.Named;
                    rblSchedule.Items.Add(li);
                }
                if (_group.Schedule != null)
                {
                    //Load values into schedule controls
                    switch (_group.Schedule.ScheduleType)
                    {
                    case ScheduleType.None:
                        break;

                    case ScheduleType.Weekly:
                        dowWeekly.SelectedDayOfWeek = _group.Schedule.WeeklyDayOfWeek;
                        timeWeekly.Text             = _group.Schedule.WeeklyTimeOfDay.ToString();
                        rblSchedule.SelectedValue   = "1";
                        break;

                    case ScheduleType.Custom:
                        sbSchedule.iCalendarContent = _group.Schedule.iCalendarContent;
                        rblSchedule.SelectedValue   = "2";
                        break;

                    case ScheduleType.Named:
                        spSchedule.SetValue(_group.ScheduleId);
                        rblSchedule.SelectedValue = "4";
                        break;

                    default:
                        break;
                    }
                    UpdateScheduleDisplay();
                }
                BindGrid();
            }
            else
            {
                rblSchedule.Visible = false;
            }


            //Load location
            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.Address) == GroupLocationPickerMode.Address)
                {
                    modes = modes | LocationPickerMode.Address;
                }

                lopAddress.AllowedPickerModes = modes;
            }

            var meetingLocationDv = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_MEETING_LOCATION);
            var homeLocationDv    = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_HOME);

            var groupLocation = _group.GroupLocations.Where(gl => gl.GroupLocationTypeValueId == meetingLocationDv.Id || gl.GroupLocationTypeValueId == homeLocationDv.Id || gl.GroupLocationTypeValueId == null).FirstOrDefault();

            if (groupLocation != null)
            {
                lopAddress.Location = groupLocation.Location;
            }

            _group.LoadAttributes();

            if (_group.Attributes != null && _group.Attributes.Any())
            {
                Rock.Attribute.Helper.AddEditControls(_group, phAttributes, true, null, _group.Attributes.Where(a => !a.Value.IsGridColumn).Select(a => a.Key).ToList(), false);
            }
            else
            {
                pnlFilters.Visible = false;
            }

            tbDescription.Visible = GetAttributeValue("ShowDescription").AsBoolean();
            tbDescription.Text    = _group.Description;
            btnSave.Text          = GetAttributeValue("SaveText");

            SaveViewState();
        }
Esempio n. 2
0
        /// <summary>
        /// logic to setup the groups location entry panel
        /// </summary>
        /// <param name="group">The group.</param>
        private void ConfigureGroupLocationControls(Group group)
        {
            var rockContext = new RockContext();

            ddlMember.Items.Clear();

            var groupType = GroupTypeCache.Read(group.GroupTypeId);

            if (groupType != null)
            {
                // only allow editing groups with single locations
                if (!groupType.AllowMultipleLocations)
                {
                    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)
                        {
                            var  personService        = new PersonService(rockContext);
                            Guid previousLocationType = Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_PREVIOUS.AsGuid();

                            foreach (GroupMember member in new GroupMemberService(rockContext).GetByGroupId(group.Id))
                            {
                                foreach (Group family in personService.GetFamilies(member.PersonId))
                                {
                                    foreach (GroupLocation familyGroupLocation in family.GroupLocations
                                             .Where(l => l.IsMappedLocation && !l.GroupLocationTypeValue.Guid.Equals(previousLocationType)))
                                    {
                                        ListItem li = new ListItem(
                                            string.Format("{0} {1} ({2})", member.Person.FullName, familyGroupLocation.GroupLocationTypeValue.Value, familyGroupLocation.Location.ToString()),
                                            string.Format("{0}|{1}", familyGroupLocation.Location.Id, member.PersonId));

                                        ddlMember.Items.Add(li);
                                    }
                                }
                            }
                        }

                        if (displayOtherTab)
                        {
                            locpGroupLocation.AllowedPickerModes = modes;
                        }

                        ddlLocationType.DataSource = groupType.LocationTypeValues.ToList();
                        ddlLocationType.DataBind();

                        LocationTypeTab = (displayMemberTab && ddlMember.Items.Count > 0) ? MEMBER_LOCATION_TAB_TITLE : OTHER_LOCATION_TAB_TITLE;

                        var groupLocation = group.GroupLocations.FirstOrDefault();
                        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);
                        }
                        else
                        {
                            LocationTypeTab = (displayMemberTab && ddlMember.Items.Count > 0) ? MEMBER_LOCATION_TAB_TITLE : OTHER_LOCATION_TAB_TITLE;
                        }

                        rptLocationTypes.DataSource = _tabs;
                        rptLocationTypes.DataBind();

                        ShowSelectedPane();
                    }
                }
                else
                {
                    lContent.Text = "<div class='alert alert-warning'>This editor only allows editing groups with a single location.</div>";
                }
            }
        }
Esempio n. 3
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);
                    }
                }
            }
        }