/// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            RegisterScript();

            _rockContext = new RockContext();

            int groupId = PageParameter("GroupId").AsInteger();

            _group = new GroupService(_rockContext)
                     .Queryable("GroupType,Schedule").AsNoTracking()
                     .FirstOrDefault(g => g.Id == groupId);

            if (_group != null && _group.IsAuthorized(Authorization.EDIT, CurrentPerson))
            {
                lHeading.Text = _group.Name + " Attendance";
                _canEdit      = true;
            }

            _allowAdd = GetAttributeValue("AllowAdd").AsBoolean();

            _allowCampusFilter = GetAttributeValue("AllowCampusFilter").AsBoolean();
            bddlCampus.Visible = _allowCampusFilter;
            if (_allowCampusFilter)
            {
                bddlCampus.DataSource = CampusCache.All();
                bddlCampus.DataBind();
                bddlCampus.Items.Insert(0, new ListItem("All Campuses", "0"));
            }
        }
예제 #2
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (!Page.IsPostBack)
            {
                cpCampus.Campuses = CampusCache.All();
                ShowDetail(PageParameter("BenevolenceRequestId").AsInteger());
            }
            else
            {
                var rockContext         = new RockContext();
                BenevolenceRequest item = new BenevolenceRequestService(rockContext).Get(hfBenevolenceRequestId.ValueAsInt());
                if (item == null)
                {
                    item = new BenevolenceRequest();
                }
                item.LoadAttributes();

                phAttributes.Controls.Clear();
                Rock.Attribute.Helper.AddEditControls(item, phAttributes, false, BlockValidationGroup, 2);

                confirmExit.Enabled = true;
            }
        }
예제 #3
0
        /// <summary>
        /// Gets the list source.
        /// </summary>
        /// <value>
        /// The list source.
        /// </value>
        private Dictionary <string, string> GetListSource(Dictionary <string, string> configurationValues)
        {
            var allCampuses = CampusCache.All();

            if (configurationValues == null)
            {
                return(allCampuses.ToDictionary(c => c.Guid.ToString(), c => c.Name));
            }

            bool       includeInactive    = configurationValues.ContainsKey(INCLUDE_INACTIVE_KEY) && configurationValues[INCLUDE_INACTIVE_KEY].AsBoolean();
            List <int> campusTypesFilter  = configurationValues.ContainsKey(FILTER_CAMPUS_TYPES_KEY) ? configurationValues[FILTER_CAMPUS_TYPES_KEY].SplitDelimitedValues(false).AsIntegerList() : null;
            List <int> campusStatusFilter = configurationValues.ContainsKey(FILTER_CAMPUS_STATUS_KEY) ? configurationValues[FILTER_CAMPUS_STATUS_KEY].SplitDelimitedValues(false).AsIntegerList() : null;
            List <int> selectableCampuses = configurationValues.ContainsKey(SELECTABLE_CAMPUSES_KEY) && configurationValues[SELECTABLE_CAMPUSES_KEY].IsNotNullOrWhiteSpace()
                ? configurationValues[SELECTABLE_CAMPUSES_KEY].SplitDelimitedValues(false).AsIntegerList()
                : null;

            var campusList = allCampuses
                             .Where(c => (!c.IsActive.HasValue || c.IsActive.Value || includeInactive) &&
                                    campusTypesFilter.ContainsOrEmpty(c.CampusTypeValueId ?? -1) &&
                                    campusStatusFilter.ContainsOrEmpty(c.CampusStatusValueId ?? -1) &&
                                    selectableCampuses.ContainsOrEmpty(c.Id))
                             .ToList();

            return(campusList.ToDictionary(c => c.Guid.ToString(), c => c.Name));
        }
예제 #4
0
        /// <summary>
        /// Gets the filter value control.
        /// </summary>
        /// <param name="configurationValues">The configuration values.</param>
        /// <param name="id">The identifier.</param>
        /// <param name="required">if set to <c>true</c> [required].</param>
        /// <param name="filterMode">The filter mode.</param>
        /// <returns></returns>
        public override Control FilterValueControl(Dictionary <string, ConfigurationValue> configurationValues, string id, bool required, FilterMode filterMode)
        {
            var cbList = new RockCheckBoxList();

            cbList.ID = string.Format("{0}_cbList", id);
            cbList.AddCssClass("js-filter-control");
            cbList.RepeatDirection = RepeatDirection.Horizontal;

            bool includeInactive = configurationValues != null && configurationValues.ContainsKey(INCLUDE_INACTIVE_KEY) && configurationValues[INCLUDE_INACTIVE_KEY].Value.AsBoolean();

            var campusList = CampusCache.All(includeInactive);

            if (campusList.Any())
            {
                foreach (var campus in campusList)
                {
                    ListItem listItem = new ListItem(campus.Name, campus.Guid.ToString());
                    cbList.Items.Add(listItem);
                }

                return(cbList);
            }

            return(null);
        }
예제 #5
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            RegisterScript();

            _rockContext = new RockContext();

            int groupId = PageParameter("GroupId").AsInteger();

            _group = new GroupService(_rockContext)
                     .Queryable("GroupType,Schedule").AsNoTracking()
                     .FirstOrDefault(g => g.Id == groupId);

            if (_group != null && (_group.IsAuthorized(Authorization.MANAGE_MEMBERS, CurrentPerson) || _group.IsAuthorized(Authorization.EDIT, CurrentPerson)))
            {
                lHeading.Text     = _group.Name + " Attendance";
                _canManageMembers = true;
            }

            dpOccurrenceDate.AllowFutureDateSelection = !GetAttributeValue("RestrictFutureOccurrenceDate").AsBoolean();
            _allowAdd = GetAttributeValue("AllowAdd").AsBoolean();

            _allowCampusFilter = GetAttributeValue("AllowCampusFilter").AsBoolean();
            bddlCampus.Visible = _allowCampusFilter;
            if (_allowCampusFilter)
            {
                bddlCampus.DataSource = CampusCache.All();
                bddlCampus.DataBind();
                bddlCampus.Items.Insert(0, new ListItem("All Campuses", "0"));
            }

            dtNotes.Label   = GetAttributeValue("AttendanceNoteLabel");
            dtNotes.Visible = GetAttributeValue("ShowNotes").AsBooleanOrNull() ?? true;
        }
예제 #6
0
        /// <summary>
        /// Shows the edit details.
        /// </summary>
        /// <param name="batch">The financial batch.</param>
        protected void ShowEditDetails(FinancialBatch batch)
        {
            if (batch != null)
            {
                hfBatchId.Value = batch.Id.ToString();
                string title = batch.Id > 0 ?
                               ActionTitle.Edit(FinancialBatch.FriendlyTypeName) :
                               ActionTitle.Add(FinancialBatch.FriendlyTypeName);

                SetHeadingInfo(batch, title);

                SetEditMode(true);

                tbName.Text = batch.Name;

                ddlStatus.BindToEnum <BatchStatus>();
                ddlStatus.SelectedIndex = (int)(BatchStatus)batch.Status;

                campCampus.Campuses = CampusCache.All();
                if (batch.CampusId.HasValue)
                {
                    campCampus.SetValue(batch.CampusId.Value);
                }

                tbControlAmount.Text = batch.ControlAmount.ToString("N2");

                dtpStart.SelectedDateTime = batch.BatchStartDateTime;
                dtpEnd.SelectedDateTime   = batch.BatchEndDateTime;

                tbAccountingCode.Text = batch.AccountingSystemCode;
                tbNote.Text           = batch.Note;
            }
        }
예제 #7
0
        /// <summary>
        /// Loads the drop downs.
        /// </summary>
        private void LoadDropDowns()
        {
            ddlAccountType.BindToDefinedType(DefinedTypeCache.Read(Rock.SystemGuid.DefinedType.FINANCIAL_ACCOUNT_TYPE.AsGuid()));

            cpCampus.Campuses = CampusCache.All();
            cpCampus.Visible  = cpCampus.Items.Count > 0;
        }
예제 #8
0
        /// <summary>
        /// Binds the filter.
        /// </summary>
        private void SetFilter()
        {
            if (_group != null)
            {
                cblRole.DataSource = _group.GroupType.Roles.OrderBy(a => a.Order).ToList();
                cblRole.DataBind();
            }

            cblGroupMemberStatus.BindToEnum <GroupMemberStatus>();

            cpCampusFilter.Campuses = CampusCache.All();

            BindAttributes();
            AddDynamicControls();

            tbFirstName.Text = rFilter.GetUserPreference(MakeKeyUniqueToGroup("First Name"));
            tbLastName.Text  = rFilter.GetUserPreference(MakeKeyUniqueToGroup("Last Name"));
            cpCampusFilter.SelectedCampusId = rFilter.GetUserPreference(MakeKeyUniqueToGroup("Campus")).AsIntegerOrNull();

            string roleValue = rFilter.GetUserPreference(MakeKeyUniqueToGroup("Role"));

            if (!string.IsNullOrWhiteSpace(roleValue))
            {
                cblRole.SetValues(roleValue.Split(';').ToList());
            }

            string statusValue = rFilter.GetUserPreference(MakeKeyUniqueToGroup("Status"));

            if (!string.IsNullOrWhiteSpace(statusValue))
            {
                cblGroupMemberStatus.SetValues(statusValue.Split(';').ToList());
            }
        }
예제 #9
0
        /// <summary>
        /// Binds the filter.
        /// </summary>
        private void SetFilter()
        {
            drpDate.DelimitedValues = rFilter.GetUserPreference(MakeKeyUniqueToEventCalendar("DateRange"));

            cblCampus.DataSource = CampusCache.All();
            cblCampus.DataBind();
            string campusValue = rFilter.GetUserPreference(MakeKeyUniqueToEventCalendar("Campus"));

            if (!string.IsNullOrWhiteSpace(campusValue))
            {
                cblCampus.SetValues(campusValue.Split(';').ToList());
            }

            cblAudience.BindToDefinedType(DefinedTypeCache.Get(Rock.SystemGuid.DefinedType.MARKETING_CAMPAIGN_AUDIENCE_TYPE.AsGuid()));
            string audienceValue = rFilter.GetUserPreference(MakeKeyUniqueToEventCalendar("Audiences"));

            if (!string.IsNullOrWhiteSpace(audienceValue))
            {
                cblAudience.SetValues(audienceValue.Split(';').ToList());
            }

            ddlStatus.SetValue(rFilter.GetUserPreference(MakeKeyUniqueToEventCalendar("Status")));

            ddlApprovalStatus.SetValue(rFilter.GetUserPreference(MakeKeyUniqueToEventCalendar("ApprovalStatus")));

            BindAttributes();
            AddDynamicControls();
        }
예제 #10
0
        private static KioskDevice Create(int id)
        {
            using (var rockContext = new RockContext())
            {
                var campusLocations = new Dictionary <int, int>();
                CampusCache.All()
                .Where(c => c.LocationId.HasValue)
                .Select(c => new
                {
                    CampusId   = c.Id,
                    LocationId = c.LocationId.Value
                })
                .ToList()
                .ForEach(c => campusLocations.Add(c.CampusId, c.LocationId));

                var deviceModel = new DeviceService(rockContext)
                                  .Queryable().AsNoTracking()
                                  .Where(d => d.Id == id)
                                  .FirstOrDefault();

                if (deviceModel != null)
                {
                    var device = new KioskDevice(deviceModel);
                    foreach (Location location in deviceModel.Locations)
                    {
                        LoadKioskLocations(device, location, campusLocations, rockContext);
                    }

                    return(device);
                }
            }

            return(null);
        }
예제 #11
0
        /// <summary>
        /// Loads the items.
        /// </summary>
        /// <param name="selectedValue">The selected value.</param>
        private void LoadItems(int?selectedValue)
        {
            string firstItemText = Items.Count > 0 && Items[0].Value == string.Empty ? Items[0].Text : string.Empty;

            var selectedItems = Items.Cast <ListItem>()
                                .Where(i => i.Selected)
                                .Select(i => i.Value).AsIntegerList();

            Items.Clear();

            // add Empty option first
            Items.Add(new ListItem(firstItemText, string.Empty));

            var campuses = CampusCache.All()
                           .Where(c =>
                                  (CampusIds.Contains(c.Id) && (!c.IsActive.HasValue || c.IsActive.Value || IncludeInactive)) ||
                                  (selectedValue.HasValue && c.Id == selectedValue.Value))
                           .OrderBy(c => c.Name)
                           .ToList();

            foreach (CampusCache campus in campuses)
            {
                var li = new ListItem(campus.Name, campus.Id.ToString());
                li.Selected = selectedItems.Contains(campus.Id);
                Items.Add(li);
            }
        }
        /// <summary>
        /// Gets the default connector person alias.
        /// </summary>
        /// <param name="campusId">The campus identifier.</param>
        /// <returns></returns>
        private PersonAlias GetDefaultConnectorPersonAlias(int?campusId)
        {
            if (ConnectionOpportunityCampuses == null)
            {
                return(null);
            }

            if (!campusId.HasValue && CampusCache.All().Count == 1)
            {
                // Rock hides campus pickers if there is only one campus
                campusId = CampusCache.All().First().Id;
            }

            if (campusId.HasValue)
            {
                var connectionOpportunityCampus = ConnectionOpportunityCampuses
                                                  .Where(c => c.CampusId == campusId.Value)
                                                  .FirstOrDefault();

                if (connectionOpportunityCampus != null)
                {
                    return(connectionOpportunityCampus.DefaultConnectorPersonAlias);
                }
            }

            return(null);
        }
예제 #13
0
        private bool ValidateCampus()
        {
            var campusLocationType = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.LOCATION_TYPE_CAMPUS.AsGuid());

            if (campusLocationType.Id != lpLocation.Location.LocationTypeValueId)
            {
                nbEditModeMessage.NotificationBoxType = Rock.Web.UI.Controls.NotificationBoxType.Danger;
                nbEditModeMessage.Text = string.Format(@"The named location ""{0}"" is not a 'Campus' location type.", lpLocation.Location.Name);
                return(false);
            }

            int campusId = int.Parse(hfCampusId.Value);

            var existingCampus = campusId == 0 ?
                                 CampusCache.All(true).Where(c => c.Name == tbCampusName.Text).FirstOrDefault() :
                                 CampusCache.All(true).Where(c => c.Name == tbCampusName.Text && c.Id != campusId).FirstOrDefault();

            if (existingCampus != null)
            {
                string activeString = existingCampus.IsActive ?? false ? "active" : "inactive";
                nbEditModeMessage.NotificationBoxType = Rock.Web.UI.Controls.NotificationBoxType.Danger;
                nbEditModeMessage.Text = string.Format(@"The campus name ""{0}"" is already in use for an existing {1} campus.", tbCampusName.Text, activeString);
                return(false);
            }

            return(true);
        }
예제 #14
0
        private void BindFilters()
        {
            viewableConnectionOpportunities = conOppServ.Queryable().OrderBy(x => x.Name).ToList().Where(awt => awt.IsAuthorized("View", CurrentPerson));

            // Opportunities
            var conOppId = rddConnectionOpportunity.SelectedValueAsId();

            rddConnectionOpportunity.DataSource     = viewableConnectionOpportunities.ToList();
            rddConnectionOpportunity.DataTextField  = "Name";
            rddConnectionOpportunity.DataValueField = "Id";
            rddConnectionOpportunity.DataBind();
            rddConnectionOpportunity.Items.Insert(0, new ListItem("", "-1"));
            rddConnectionOpportunity.SetValue(conOppId);

            // Campuses
            var campId = campusPicker.SelectedValueAsId();

            campusPicker.Campuses = CampusCache.All();
            campusPicker.SetValue(campId);

            // Statuses
            List <string> statusIds = cblStatus.SelectedValues;
            var           typeIds   = viewableConnectionOpportunities.Select(o => o.ConnectionTypeId).ToList();

            cblStatus.DataSource = conStatServ.Queryable().Where(s => typeIds.Contains(s.ConnectionTypeId ?? -1)).Select(s => s.Name).Distinct().Select(x => new { Name = x, Id = x }).ToList();
            cblStatus.DataBind();
            cblStatus.SetValues(statusIds);
        }
예제 #15
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            bool canEdit = IsUserAuthorized(Authorization.EDIT);

            rAccountFilter.ApplyFilterClick   += rAccountFilter_ApplyFilterClick;
            rAccountFilter.DisplayFilterValue += rAccountFilter_DisplayFilterValue;

            var campusList = CampusCache.All();

            if (campusList.Count > 0)
            {
                ddlCampus.Visible = true;
                var isActiveColumn = rGridAccount.ColumnsOfType <BoolField>().FirstOrDefault(a => a.DataField == "IsActive");
                if (isActiveColumn != null)
                {
                    isActiveColumn.Visible = true;
                }
            }

            rGridAccount.DataKeyNames      = new string[] { "Id" };
            rGridAccount.Actions.ShowAdd   = canEdit;
            rGridAccount.Actions.AddClick += rGridAccount_Add;
            rGridAccount.GridReorder      += rGridAccount_GridReorder;
            rGridAccount.GridRebind       += rGridAccounts_GridRebind;
            rGridAccount.IsDeleteEnabled   = canEdit;

            AddAttributeColumns();

            var deleteField = new DeleteField();

            rGridAccount.Columns.Add(deleteField);
            deleteField.Click += rGridAccount_Delete;
        }
예제 #16
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>EventItem
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            ddlCampus.DataSource = CampusCache.All();
            ddlCampus.DataBind();
            ddlCampus.Items.Insert(0, new ListItem(All.Text, string.Empty));
        }
예제 #17
0
 // Flush any cached campus that uses location
 private void FlushCampus(int locationId)
 {
     foreach (var campus in CampusCache.All()
              .Where(c => c.LocationId == locationId))
     {
         CampusCache.Flush(campus.Id);
     }
 }
예제 #18
0
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="businessId">The business identifier.</param>
        public void ShowDetail(int businessId)
        {
            var rockContext = new RockContext();

            // Load the Campus drop down
            ddlCampus.Items.Clear();
            ddlCampus.Items.Add(new ListItem(string.Empty, string.Empty));
            foreach (var campus in CampusCache.All())
            {
                ListItem li = new ListItem(campus.Name, campus.Id.ToString());
                ddlCampus.Items.Add(li);
            }

            Person business = null;     // A business is a person

            if (!businessId.Equals(0))
            {
                business = new PersonService(rockContext).Get(businessId);
            }

            if (business == null)
            {
                business = new Person {
                    Id = 0, Guid = Guid.NewGuid()
                };
            }

            bool editAllowed = business.IsAuthorized(Authorization.EDIT, CurrentPerson);

            hfBusinessId.Value = business.Id.ToString();

            bool readOnly = false;

            nbEditModeMessage.Text = string.Empty;
            if (!editAllowed || !IsUserAuthorized(Authorization.EDIT))
            {
                readOnly = true;
                nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed(Person.FriendlyTypeName);
            }

            if (readOnly)
            {
                ShowSummary(businessId);
            }
            else
            {
                if (business.Id > 0)
                {
                    ShowSummary(business.Id);
                }
                else
                {
                    ShowEditDetails(business);
                }
            }

            BindContactListGrid(business);
        }
예제 #19
0
        /// <summary>
        /// Sets the configuration value.
        /// </summary>
        /// <param name="controls"></param>
        /// <param name="configurationValues"></param>
        public override void SetConfigurationValues(List <Control> controls, Dictionary <string, ConfigurationValue> configurationValues)
        {
            base.SetConfigurationValues(controls, configurationValues);

            if (controls != null && configurationValues != null)
            {
                CheckBox         cbIncludeInactive   = controls.Count > 2 ? controls[2] as CheckBox : null;
                RockCheckBoxList cblCampusTypes      = controls.Count > 3 ? controls[3] as RockCheckBoxList : null;
                RockCheckBoxList cblCampusStatuses   = controls.Count > 4 ? controls[4] as RockCheckBoxList : null;
                RockCheckBoxList cblSelectableValues = controls.Count > 5 ? controls[5] as RockCheckBoxList : null;

                if (cbIncludeInactive != null)
                {
                    cbIncludeInactive.Checked = configurationValues.GetValueOrNull(INCLUDE_INACTIVE_KEY).AsBooleanOrNull() ?? false;
                }

                if (cblCampusTypes != null)
                {
                    var selectedCampusTypes = configurationValues.GetValueOrNull(FILTER_CAMPUS_TYPES_KEY)?.SplitDelimitedValues(false);
                    if (selectedCampusTypes != null && selectedCampusTypes.Any())
                    {
                        foreach (ListItem listItem in cblCampusTypes.Items)
                        {
                            listItem.Selected = selectedCampusTypes.Contains(listItem.Value);
                        }
                    }
                }

                if (cblCampusStatuses != null)
                {
                    var selectedCampusStatuses = configurationValues.GetValueOrNull(FILTER_CAMPUS_STATUS_KEY)?.SplitDelimitedValues(false);
                    if (selectedCampusStatuses != null && selectedCampusStatuses.Any())
                    {
                        foreach (ListItem listItem in cblCampusStatuses.Items)
                        {
                            listItem.Selected = selectedCampusStatuses.Contains(listItem.Value);
                        }
                    }
                }

                if (cblSelectableValues != null)
                {
                    var selectableValues = configurationValues.GetValueOrNull(SELECTABLE_CAMPUSES_KEY)?.SplitDelimitedValues(false);

                    var activeCampuses = CampusCache.All(cbIncludeInactive.Checked).Select(v => new { Text = v.Name, Value = v.Id });
                    cblSelectableValues.DataSource = activeCampuses;
                    cblSelectableValues.DataBind();

                    if (selectableValues != null && selectableValues.Any())
                    {
                        foreach (ListItem listItem in cblSelectableValues.Items)
                        {
                            listItem.Selected = selectableValues.Contains(listItem.Value);
                        }
                    }
                }
            }
        }
예제 #20
0
        /// <summary>
        /// Displays the details for a single, given prayer request.
        /// </summary>
        /// <param name="prayerRequest">The prayer request.</param>
        /// <param name="rockContext">The rock context.</param>
        private void ShowPrayerRequest(PrayerRequest prayerRequest, RockContext rockContext)
        {
            pnlPrayer.Visible = true;

            prayerRequest.PrayerCount = (prayerRequest.PrayerCount ?? 0) + 1;
            hlblPrayerCountTotal.Text = prayerRequest.PrayerCount.ToString() + " team prayers";
            hlblUrgent.Visible        = prayerRequest.IsUrgent ?? false;

            if (CampusCache.All(false).Count() > 1)
            {
                hlblCampus.Text = prayerRequest.CampusId.HasValue ? prayerRequest.Campus.Name : string.Empty;
            }

            hlblCategory.Text = prayerRequest.Category.Name;
            var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(this.RockPage, this.CurrentPerson, new Rock.Lava.CommonMergeFieldsOptions {
                GetLegacyGlobalMergeFields = false
            });

            // need to load attributes so that lava can loop thru PrayerRequest.Attributes
            prayerRequest.LoadAttributes();

            // Filter to only show attribute / attribute values that the person is authorized to view.
            var excludeForView = prayerRequest.Attributes.Where(a => !a.Value.IsAuthorized(Authorization.VIEW, this.CurrentPerson)).Select(a => a.Key).ToList();

            prayerRequest.Attributes      = prayerRequest.Attributes.Where(a => !excludeForView.Contains(a.Key)).ToDictionary(k => k.Key, k => k.Value);
            prayerRequest.AttributeValues = prayerRequest.AttributeValues.Where(av => !excludeForView.Contains(av.Key)).ToDictionary(k => k.Key, k => k.Value);

            mergeFields.Add("PrayerRequest", prayerRequest);
            string prayerPersonLava  = this.GetAttributeValue(AttributeKey.PrayerPersonLava);
            string prayerDisplayLava = this.GetAttributeValue(AttributeKey.PrayerDisplayLava);

            lPersonLavaOutput.Text = prayerPersonLava.ResolveMergeFields(mergeFields);
            lPrayerLavaOutput.Text = prayerDisplayLava.ResolveMergeFields(mergeFields);

            pnlPrayerComments.Visible = prayerRequest.AllowComments ?? false;
            if (notesComments.Visible)
            {
                notesComments.NoteOptions.EntityId = prayerRequest.Id;
            }

            CurrentPrayerRequestId = prayerRequest.Id;

            if (GetAttributeValue(AttributeKey.CreateInteractionsForPrayers).AsBoolean())
            {
                PrayerRequestService.EnqueuePrayerInteraction(prayerRequest, CurrentPerson, PageCache.Layout.Site.Name, Request.UserAgent, RockPage.GetClientIpAddress(), RockPage.Session["RockSessionId"]?.ToString().AsGuidOrNull());
            }

            try
            {
                // save because the prayer count was just modified.
                rockContext.SaveChanges();
            }
            catch (Exception ex)
            {
                ExceptionLogService.LogException(ex, Context, this.RockPage.PageId, this.RockPage.Site.Id, CurrentPersonAlias);
            }
        }
예제 #21
0
        /// <summary>
        /// Loads the drop downs.
        /// </summary>
        private void LoadDropDowns()
        {
            dvpAccountType.DefinedTypeId = DefinedTypeCache.Get(Rock.SystemGuid.DefinedType.FINANCIAL_ACCOUNT_TYPE.AsGuid()).Id;

            cpCampus.Campuses = CampusCache.All();

            ddlAccountParticipantPurposeKey.Items.Clear();
            ddlAccountParticipantPurposeKey.Items.Add(new ListItem(RelatedEntityPurposeKey.GetPurposeKeyFriendlyName(RelatedEntityPurposeKey.FinancialAccountGivingAlert), RelatedEntityPurposeKey.FinancialAccountGivingAlert));
        }
예제 #22
0
 private void BuildCampusSelection()
 {
     foreach (var campus in CampusCache.All()
              .Where(c => c.IsActive.HasValue && c.IsActive.Value)
              .OrderBy(c => c.Name))
     {
         bddlCampus.Items.Add(new ListItem(campus.Name, campus.Id.ToString()));
     }
 }
예제 #23
0
        /// <summary>
        /// Loads the items.
        /// </summary>
        /// <param name="selectedValue">The selected value.</param>
        private void LoadItems(int?selectedValue)
        {
            // Get all the campi
            var campuses = CampusCache.All()
                           .Where(c =>
                                  (CampusIds.Contains(c.Id) && (!c.IsActive.HasValue || c.IsActive.Value || IncludeInactive)) ||
                                  (selectedValue.HasValue && c.Id == selectedValue.Value))
                           .OrderBy(c => c.Order)
                           .ToList();

            // Get the current text for the first item if its value is empty
            string firstItemText = Items.Count > 0 && Items[0].Value == string.Empty ? Items[0].Text : string.Empty;

            List <int> selectedItems = new List <int>();

            // If there is one campus then only show if ForceVisible is true.
            if (campuses.Count == 0)
            {
                this.Visible = false;
            }
            else if (campuses.Count == 1)
            {
                this.Visible = ForceVisible;

                // if this is required then auto-select the only campus
                if (this.Required)
                {
                    selectedItems.Add(campuses[0].Id);
                }
            }
            else
            {
                /*
                 * 2020-04-09 ETD
                 * Don't set the Visible property here. If a block setting or somthing else is hiding the control this will show it.
                 * Removed this to fix issue #4172.
                 * this.Visible = true;
                 */

                selectedItems = Items.Cast <ListItem>()
                                .Where(i => i.Selected)
                                .Select(i => i.Value).AsIntegerList();
            }

            Items.Clear();

            // Add a blank first item.
            Items.Add(new ListItem(firstItemText, string.Empty));

            foreach (CampusCache campus in campuses)
            {
                var li = new ListItem(campus.Name, campus.Id.ToString());
                li.Selected = selectedItems.Contains(campus.Id);
                Items.Add(li);
            }
        }
예제 #24
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            // this event gets fired after block settings are updated. it's nice to repaint the screen if these settings would alter it
            this.BlockUpdated += Block_BlockUpdated;
            this.AddConfigurationUpdateTrigger(upnlContent);

            _campuses = CampusCache.All();
        }
예제 #25
0
        /// <summary>
        /// Gets the campuses that can be sent to a client.
        /// </summary>
        /// <param name="options">The options that specify which campuses to include.</param>
        /// <returns>A list of <see cref="ListItemViewModel"/> that represent the campus values.</returns>
        public List <ListItemViewModel> GetCampusesAsListItems(CampusOptions options = null)
        {
            IEnumerable <CampusCache> source = CampusCache.All(RockContext);

            options = options ?? DefaultCampusOptions;

            // Exclude inactive campuses unless we were asked to include them.
            if (!options.IncludeInactive)
            {
                source = source.Where(c => c.IsActive == true);
            }

            // If they specified any campus types then limit the results to
            // only those campuses that fit the criteria.
            if (options.LimitCampusTypes != null && options.LimitCampusTypes.Count > 0)
            {
                source = source.Where(c =>
                {
                    if (!c.CampusTypeValueId.HasValue)
                    {
                        return(false);
                    }

                    var definedValueCache = DefinedValueCache.Get(c.CampusTypeValueId.Value);

                    return(definedValueCache != null && options.LimitCampusTypes.Contains(definedValueCache.Guid));
                });
            }

            // If they specified any campus status then limit the results to
            // only those campuses that fit the criteria.
            if (options.LimitCampusStatuses != null && options.LimitCampusStatuses.Count > 0)
            {
                source = source.Where(c =>
                {
                    if (!c.CampusStatusValueId.HasValue)
                    {
                        return(false);
                    }

                    var definedValueCache = DefinedValueCache.Get(c.CampusStatusValueId.Value);

                    return(definedValueCache != null && options.LimitCampusStatuses.Contains(definedValueCache.Guid));
                });
            }

            source = CheckSecurity(source);

            return(source.OrderBy(c => c.Order)
                   .Select(c => new ListItemViewModel()
            {
                Value = c.Guid.ToString(),
                Text = c.Name
            }).ToList());
        }
예제 #26
0
        /// <summary>
        /// Shows the edit details.
        /// </summary>
        /// <param name="batch">The financial batch.</param>
        protected void ShowEditDetails(FinancialBatch batch)
        {
            if (batch == null || batch.Id == 0)
            {
                // if the "BatchNames" configuration setting is set, and this is a new batch present a DropDown of BatchNames instead of a text box
                var batchNamesDefinedTypeGuid = this.GetAttributeValue("BatchNames").AsGuidOrNull();
                ddlBatchName.Visible = false;
                tbName.Visible       = true;

                if (batchNamesDefinedTypeGuid.HasValue)
                {
                    var batchNamesDefinedType = DefinedTypeCache.Read(batchNamesDefinedTypeGuid.Value);
                    if (batchNamesDefinedType != null)
                    {
                        ddlBatchName.BindToDefinedType(batchNamesDefinedType, true, false);
                        if (batchNamesDefinedType.DefinedValues.Any(a => !string.IsNullOrWhiteSpace(a.Value)))
                        {
                            ddlBatchName.Visible = true;
                            tbName.Visible       = false;
                        }
                    }
                }
            }

            if (batch != null)
            {
                hfBatchId.Value = batch.Id.ToString();
                string title = batch.Id > 0 ?
                               ActionTitle.Edit(FinancialBatch.FriendlyTypeName) :
                               ActionTitle.Add(FinancialBatch.FriendlyTypeName);

                SetHeadingInfo(batch, title);

                SetEditMode(true);

                tbName.Text = batch.Name;

                ddlStatus.BindToEnum <BatchStatus>();
                ddlStatus.SelectedIndex = (int)(BatchStatus)batch.Status;

                campCampus.Campuses = CampusCache.All();
                if (batch.CampusId.HasValue)
                {
                    campCampus.SetValue(batch.CampusId.Value);
                }

                tbControlAmount.Text = batch.ControlAmount.ToString("N2");

                dtpStart.SelectedDateTime = batch.BatchStartDateTime;
                dtpEnd.SelectedDateTime   = batch.BatchEndDateTime;

                tbAccountingCode.Text = batch.AccountingSystemCode;
                tbNote.Text           = batch.Note;
            }
        }
예제 #27
0
        /// <summary>
        /// Binds the filter.
        /// </summary>
        private void BindFilter()
        {
            // show campus filter
            var showCampusFilter = GetAttributeValue(AttributeKey.ShowCampusFilter).AsBoolean();
            var showCampus       = showCampusFilter;
            var qryCampusId      = PageParameter(PageParameterKey.CampusId).AsIntegerOrNull();

            if (qryCampusId.HasValue && showCampus)
            {
                var campus = CampusCache.Get(qryCampusId.Value);
                if (campus != null)
                {
                    showCampus = false;
                }
            }

            if (showCampus)
            {
                var selectedCampusTypeIds = GetAttributeValue(AttributeKey.CampusTypes)
                                            .SplitDelimitedValues(true)
                                            .AsGuidList()
                                            .Select(a => DefinedValueCache.Get(a))
                                            .Where(a => a != null)
                                            .Select(a => a.Id)
                                            .ToList();

                cpCampus.Campuses = CampusCache.All();

                if (selectedCampusTypeIds.Any())
                {
                    cpCampus.CampusTypesFilter = selectedCampusTypeIds;
                }

                var selectedCampusStatusIds = GetAttributeValue(AttributeKey.CampusStatuses)
                                              .SplitDelimitedValues(true)
                                              .AsGuidList()
                                              .Select(a => DefinedValueCache.Get(a))
                                              .Where(a => a != null)
                                              .Select(a => a.Id)
                                              .ToList();

                if (selectedCampusStatusIds.Any())
                {
                    cpCampus.CampusStatusFilter = selectedCampusStatusIds;
                }
            }

            var isCampusVisible = showCampus && cpCampus.Items.Count > 2;

            cpCampus.Visible = isCampusVisible;
            if (isCampusVisible)
            {
                cpCampus.SelectedCampusId = GetUserPreference(CAMPUS_SETTING).AsIntegerOrNull();
            }
        }
        /// <summary>
        /// Sets the filter.
        /// </summary>
        private void SetFilter()
        {
            using (var rockContext = new RockContext())
            {
                var personService = new PersonService(rockContext);
                int?personId      = rFilter.GetUserPreference("Requester").AsIntegerOrNull();
                if (personId.HasValue)
                {
                    ppRequester.SetValue(personService.Get(personId.Value));
                }

                rFilter.AdditionalFilterDisplay.Clear();
                if (tglMyOpportunities.Checked)
                {
                    ppConnector.Visible = false;
                    rFilter.AdditionalFilterDisplay.Add("Connector", CurrentPerson.FullName);

                    cblState.Visible = false;
                    rFilter.AdditionalFilterDisplay.Add("State", "Active, Future Follow Up (Past Due)");
                }
                else
                {
                    ppConnector.Visible = true;
                    personId            = rFilter.GetUserPreference("Connector").AsIntegerOrNull();
                    if (personId.HasValue)
                    {
                        ppConnector.SetValue(personService.Get(personId.Value));
                    }

                    cblState.Visible = true;
                    cblState.SetValues(rFilter.GetUserPreference("State").SplitDelimitedValues().AsIntegerList());
                }

                cblCampus.DataSource = CampusCache.All();
                cblCampus.DataBind();
                cblCampus.SetValues(rFilter.GetUserPreference("Campus").SplitDelimitedValues().AsIntegerList());

                cblStatus.Items.Clear();
                if (SelectedOpportunityId.HasValue)
                {
                    cblStatus.DataSource = new ConnectionOpportunityService(rockContext).Get(SelectedOpportunityId.Value).ConnectionType.ConnectionStatuses.ToList();
                    cblStatus.DataBind();
                    cblStatus.SetValues(rFilter.GetUserPreference(MakeKeyUniqueToOpportunity("Status")).SplitDelimitedValues().AsIntegerList());
                }

                cblLastActivity.Items.Clear();
                if (SelectedOpportunityId.HasValue)
                {
                    cblLastActivity.DataSource = new ConnectionOpportunityService(rockContext).Get(SelectedOpportunityId.Value).ConnectionType.ConnectionActivityTypes.ToList();
                    cblLastActivity.DataBind();
                    cblLastActivity.SetValues(rFilter.GetUserPreference(MakeKeyUniqueToOpportunity("LastActivity")).SplitDelimitedValues().AsIntegerList());
                }
            }
        }
예제 #29
0
        /// <summary>
        /// Creates the child controls.
        /// </summary>
        /// <returns></returns>
        public override Control[] CreateChildControls(Type entityType, FilterField filterControl)
        {
            CampusPicker campusPicker = new CampusPicker();

            campusPicker.ID       = filterControl.ID + "_campusPicker";
            campusPicker.Label    = "Campus";
            campusPicker.Campuses = CampusCache.All();
            filterControl.Controls.Add(campusPicker);

            return(new Control[] { campusPicker });
        }
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            var campuses = CampusCache.All();

            foreach (ListItem campus in cblCampus.Items)
            {
                var campusObj = campuses.Where(c => c.Id.ToString() == campus.Value).FirstOrDefault();
                campus.Text = "<strong><span class=\"" + campusObj.AttributeValues["Slug"] + " text\">" + campusObj.Name.ToUpper() + "</span></strong>";
            }
        }