/// <summary> /// Binds the grid to a list of Prayer Requests. /// </summary> private void BindGrid() { PrayerRequestService prayerRequestService = new PrayerRequestService( new RockContext() ); SortProperty sortProperty = gPrayerRequests.SortProperty; var prayerRequests = prayerRequestService.Queryable().Select( a => new { a.Id, FullName = a.FirstName + " " + a.LastName, CategoryName = a.Category.Name, EnteredDate = a.EnteredDateTime, a.ExpirationDate, a.Text, a.FlagCount, a.IsApproved, a.CategoryId, CategoryParentCategoryId = a.Category.ParentCategoryId, a.IsUrgent, a.IsPublic, a.IsActive, a.AllowComments } ); // Filter by prayer category if one is selected... int selectedPrayerCategoryID = catpPrayerCategoryFilter.SelectedValue.AsIntegerOrNull() ?? All.Id; if ( selectedPrayerCategoryID != All.Id && selectedPrayerCategoryID != None.Id ) { prayerRequests = prayerRequests.Where( c => c.CategoryId == selectedPrayerCategoryID || c.CategoryParentCategoryId == selectedPrayerCategoryID ); } // Filter by approved/unapproved if ( ddlApprovedFilter.SelectedIndex > -1 ) { if ( ddlApprovedFilter.SelectedValue == "unapproved" ) { prayerRequests = prayerRequests.Where( a => a.IsApproved == false || !a.IsApproved.HasValue ); } else if ( ddlApprovedFilter.SelectedValue == "approved" ) { prayerRequests = prayerRequests.Where( a => a.IsApproved == true ); } } // Filter by urgent/non-urgent if ( ddlUrgentFilter.SelectedIndex > -1 ) { if ( ddlUrgentFilter.SelectedValue == "non-urgent" ) { prayerRequests = prayerRequests.Where( a => a.IsUrgent == false || !a.IsUrgent.HasValue ); } else if ( ddlUrgentFilter.SelectedValue == "urgent" ) { prayerRequests = prayerRequests.Where( a => a.IsUrgent == true ); } } // Filter by public/non-public if ( ddlPublicFilter.SelectedIndex > -1 ) { if ( ddlPublicFilter.SelectedValue == "non-public" ) { prayerRequests = prayerRequests.Where( a => a.IsPublic == false || !a.IsPublic.HasValue ); } else if ( ddlPublicFilter.SelectedValue == "public" ) { prayerRequests = prayerRequests.Where( a => a.IsPublic == true ); } } // Filter by active/inactive if ( ddlActiveFilter.SelectedIndex > -1 ) { if ( ddlActiveFilter.SelectedValue == "inactive" ) { prayerRequests = prayerRequests.Where( a => a.IsActive == false || !a.IsActive.HasValue ); } else if ( ddlActiveFilter.SelectedValue == "active" ) { prayerRequests = prayerRequests.Where( a => a.IsActive == true ); } } // Filter by active/inactive if ( ddlAllowCommentsFilter.SelectedIndex > -1 ) { if ( ddlAllowCommentsFilter.SelectedValue == "unallow" ) { prayerRequests = prayerRequests.Where( a => a.AllowComments == false || !a.AllowComments.HasValue ); } else if ( ddlAllowCommentsFilter.SelectedValue == "allow" ) { prayerRequests = prayerRequests.Where( a => a.AllowComments == true ); } } // Filter by Date Range if ( drpDateRange.LowerValue.HasValue ) { DateTime startDate = drpDateRange.LowerValue.Value.Date; prayerRequests = prayerRequests.Where( a => a.EnteredDate >= startDate ); } if ( drpDateRange.UpperValue.HasValue ) { // Add one day in order to include everything up to the end of the selected datetime. var endDate = drpDateRange.UpperValue.Value.AddDays( 1 ); prayerRequests = prayerRequests.Where( a => a.EnteredDate < endDate ); } // Don't show expired prayer requests. // TODO save users filter setting? if ( !cbShowExpired.Checked ) { prayerRequests = prayerRequests.Where( a => RockDateTime.Today <= a.ExpirationDate ); } // Sort by the given property otherwise sort by the EnteredDate (and Id) // (this is a hack because the Date field alone doesn't sort in the descending direction well) if ( sortProperty != null ) { gPrayerRequests.DataSource = prayerRequests.Sort( sortProperty ).ToList(); } else { // TODO Figure out how to tell Grid what Direction and Property it's sorting on //sortProperty.Direction = SortDirection.Ascending; //sortProperty.Property = "EnteredDate"; gPrayerRequests.DataSource = prayerRequests.OrderByDescending( p => p.EnteredDate ).ThenByDescending( p => p.Id ).ToList(); } gPrayerRequests.DataBind(); }
/// <summary> /// Loads the content. /// </summary> protected void LoadContent() { var mergeFields = new Dictionary<string, object>(); mergeFields.Add( "CurrentPerson", CurrentPerson ); var globalAttributeFields = Rock.Web.Cache.GlobalAttributesCache.GetMergeFields( CurrentPerson ); globalAttributeFields.ToList().ForEach( d => mergeFields.Add( d.Key, d.Value ) ); RockContext rockContext = new RockContext(); var prayerRequestService = new PrayerRequestService( rockContext ); var qryPrayerRequests = prayerRequestService.Queryable(); // filter out expired if ( !GetAttributeValue( "Show Expired" ).AsBoolean() ) { qryPrayerRequests = qryPrayerRequests.Where( r => r.ExpirationDate >= RockDateTime.Now ); } // filter by date range var requestDateRange = SlidingDateRangePicker.CalculateDateRangeFromDelimitedValues( GetAttributeValue( "DateRange" ) ?? "-1||" ); if ( requestDateRange.Start != null && requestDateRange.End != null ) { qryPrayerRequests = qryPrayerRequests.Where( r => r.EnteredDateTime >= requestDateRange.Start && r.EnteredDateTime <= requestDateRange.End ); } var categoryGuids = ( GetAttributeValue( "Category" ) ?? string.Empty ).SplitDelimitedValues().AsGuidList(); if ( categoryGuids.Any() ) { qryPrayerRequests = qryPrayerRequests.Where( a => a.CategoryId.HasValue && ( categoryGuids.Contains( a.Category.Guid ) || ( a.Category.ParentCategoryId.HasValue && categoryGuids.Contains( a.Category.ParentCategory.Guid ) ) ) ); } // filter by status int? statusFilterType = GetAttributeValue( "ApprovalStatus" ).AsIntegerOrNull(); if ( statusFilterType.HasValue ) { switch ( statusFilterType.Value ) { case 1: { qryPrayerRequests = qryPrayerRequests.Where( a => a.IsApproved == true ); break; } case 2: { qryPrayerRequests = qryPrayerRequests.Where( a => a.IsApproved == false ); break; } } } int sortBy = GetAttributeValue( "Sortby" ).AsInteger(); switch ( sortBy ) { case 0: qryPrayerRequests = qryPrayerRequests.OrderBy( a => a.EnteredDateTime ); break; case 1: qryPrayerRequests = qryPrayerRequests.OrderByDescending( a => a.EnteredDateTime ); break; case 2: qryPrayerRequests = qryPrayerRequests.OrderBy( a => a.Text ); break; default: qryPrayerRequests = qryPrayerRequests.OrderBy( a => a.EnteredDateTime ); break; } int? maxResults = GetAttributeValue( "MaxResults" ).AsIntegerOrNull(); if ( maxResults.HasValue && maxResults > 0 ) { qryPrayerRequests = qryPrayerRequests.Take( maxResults.Value ); } mergeFields.Add( "PrayerRequestItems", qryPrayerRequests ); var queryParams = new Dictionary<string, string>(); queryParams.Add( "PrayerRequestId", "_PrayerRequestIdParam_" ); string url = LinkedPageUrl( "PrayerRequestDetailPage", queryParams ); if ( !string.IsNullOrWhiteSpace( url ) ) { url = url.Replace( "_PrayerRequestIdParam_", "[Id]" ); } mergeFields.Add( "LinkUrl", url ); string template = GetAttributeValue( "LavaTemplate" ); lContent.Text = template.ResolveMergeFields( mergeFields ); // show debug info if ( GetAttributeValue( "EnableDebug" ).AsBoolean() && IsUserAuthorized( Authorization.EDIT ) ) { lDebug.Visible = true; lDebug.Text = mergeFields.lavaDebugInfo(); } }
/// <summary> /// Handles the Click event of the lbPrevious 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 lbBack_Click( object sender, EventArgs e ) { int index = hfPrayerIndex.ValueAsInt(); index--; List<int> prayerRequestIds = this.PrayerRequestIds; int currentNumber = index + 1; if ( ( prayerRequestIds != null ) && ( currentNumber > 0 ) ) { UpdateSessionCountLabel( currentNumber, prayerRequestIds.Count ); hfPrayerIndex.Value = index.ToString(); var rockContext = new RockContext(); PrayerRequestService service = new PrayerRequestService( rockContext ); int prayerRequestId = prayerRequestIds[index]; PrayerRequest request = service.Queryable( "RequestedByPersonAlias.Person" ).FirstOrDefault( p => p.Id == prayerRequestId ); ShowPrayerRequest( request, rockContext ); } else { lbBack.Visible = false; } }
/// <summary> /// Handler that gets the next prayer request and updates its prayer count. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void lbNext_Click( object sender, EventArgs e ) { int index = hfPrayerIndex.ValueAsInt(); index++; List<int> prayerRequestIds = (List<int>)Session[_sessionKey]; int currentNumber = index + 1; if ( currentNumber <= prayerRequestIds.Count ) { UpdateSessionCountLabel( currentNumber, prayerRequestIds.Count ); hfPrayerIndex.Value = index.ToString(); var rockContext = new RockContext(); PrayerRequestService service = new PrayerRequestService( rockContext ); int prayerRequestId = prayerRequestIds[index]; PrayerRequest request = service.Queryable( "RequestedByPersonAlias.Person" ).FirstOrDefault( p => p.Id == prayerRequestId ); ShowPrayerRequest( request, rockContext ); } else { pnlFinished.Visible = true; pnlPrayer.Visible = false; lbStartAgain.Focus(); } }
/// <summary> /// Binds the grid to a list of Prayer Requests. /// </summary> private void BindGrid() { PrayerRequestService prayerRequestService = new PrayerRequestService( new RockContext() ); SortProperty sortProperty = gPrayerRequests.SortProperty; var prayerRequests = prayerRequestService.Queryable().Select( a => new { a.Id, FullName = a.FirstName + " " + a.LastName, CategoryName = a.CategoryId.HasValue ? a.Category.Name : null, EnteredDate = a.EnteredDateTime, a.ExpirationDate, a.Text, a.FlagCount, PrayerCount = a.PrayerCount.HasValue ? a.PrayerCount : 0, a.IsApproved, a.CategoryId, CategoryParentCategoryId = a.CategoryId.HasValue ? a.Category.ParentCategoryId : null, a.IsUrgent, a.IsPublic, a.IsActive, a.AllowComments } ); // Filter by prayer category if one is selected... int selectedPrayerCategoryID = catpPrayerCategoryFilter.SelectedValue.AsIntegerOrNull() ?? All.Id; if ( selectedPrayerCategoryID != All.Id && selectedPrayerCategoryID != None.Id ) { prayerRequests = prayerRequests.Where( c => c.CategoryId == selectedPrayerCategoryID || c.CategoryParentCategoryId == selectedPrayerCategoryID ); } // Filter by approved/unapproved if ( ddlApprovedFilter.SelectedIndex > -1 ) { if ( ddlApprovedFilter.SelectedValue == "unapproved" ) { prayerRequests = prayerRequests.Where( a => a.IsApproved == false || !a.IsApproved.HasValue ); } else if ( ddlApprovedFilter.SelectedValue == "approved" ) { prayerRequests = prayerRequests.Where( a => a.IsApproved == true ); } } // Filter by urgent/non-urgent if ( ddlUrgentFilter.SelectedIndex > -1 ) { if ( ddlUrgentFilter.SelectedValue == "non-urgent" ) { prayerRequests = prayerRequests.Where( a => a.IsUrgent == false || !a.IsUrgent.HasValue ); } else if ( ddlUrgentFilter.SelectedValue == "urgent" ) { prayerRequests = prayerRequests.Where( a => a.IsUrgent == true ); } } // Filter by public/non-public if ( ddlPublicFilter.SelectedIndex > -1 ) { if ( ddlPublicFilter.SelectedValue == "non-public" ) { prayerRequests = prayerRequests.Where( a => a.IsPublic == false || !a.IsPublic.HasValue ); } else if ( ddlPublicFilter.SelectedValue == "public" ) { prayerRequests = prayerRequests.Where( a => a.IsPublic == true ); } } // Filter by active/inactive if ( ddlActiveFilter.SelectedIndex > -1 ) { if ( ddlActiveFilter.SelectedValue == "inactive" ) { prayerRequests = prayerRequests.Where( a => a.IsActive == false || !a.IsActive.HasValue ); } else if ( ddlActiveFilter.SelectedValue == "active" ) { prayerRequests = prayerRequests.Where( a => a.IsActive == true ); } } // Filter by active/inactive if ( ddlAllowCommentsFilter.SelectedIndex > -1 ) { if ( ddlAllowCommentsFilter.SelectedValue == "unallow" ) { prayerRequests = prayerRequests.Where( a => a.AllowComments == false || !a.AllowComments.HasValue ); } else if ( ddlAllowCommentsFilter.SelectedValue == "allow" ) { prayerRequests = prayerRequests.Where( a => a.AllowComments == true ); } } // Filter by Date Range if ( drpDateRange.LowerValue.HasValue ) { DateTime startDate = drpDateRange.LowerValue.Value.Date; prayerRequests = prayerRequests.Where( a => a.EnteredDate >= startDate ); } if ( drpDateRange.UpperValue.HasValue ) { // Add one day in order to include everything up to the end of the selected datetime. var endDate = drpDateRange.UpperValue.Value.AddDays( 1 ); prayerRequests = prayerRequests.Where( a => a.EnteredDate < endDate ); } // Don't show expired prayer requests. if ( !cbShowExpired.Checked ) { prayerRequests = prayerRequests.Where( a => a.ExpirationDate == null || RockDateTime.Today <= a.ExpirationDate ); } if ( sortProperty != null ) { gPrayerRequests.DataSource = prayerRequests.Sort( sortProperty ).ToList(); } else { gPrayerRequests.DataSource = prayerRequests.OrderByDescending( p => p.EnteredDate ).ThenByDescending( p => p.Id ).ToList(); } gPrayerRequests.EntityTypeId = EntityTypeCache.Read<PrayerRequest>().Id; gPrayerRequests.DataBind(); }