/// <summary> /// Binds the comments grid. /// </summary> private void BindCommentsGrid() { var rockContext = new RockContext(); var noteTypeService = new NoteTypeService(rockContext); var noteType = noteTypeService.Get(Rock.SystemGuid.NoteType.PRAYER_COMMENT.AsGuid()); var noteService = new NoteService(rockContext); var prayerComments = noteService.GetByNoteTypeId(noteType.Id); SortProperty sortProperty = gPrayerComments.SortProperty; // Filter by Category. First see if there is a Block Setting, otherwise use the Grid Filter CategoryCache categoryFilter = null; var blockCategoryGuid = GetAttributeValue("PrayerRequestCategory").AsGuidOrNull(); if (blockCategoryGuid.HasValue) { categoryFilter = CategoryCache.Read(blockCategoryGuid.Value); } if (categoryFilter == null && catpPrayerCategoryFilter.Visible) { int?filterCategoryId = catpPrayerCategoryFilter.SelectedValue.AsIntegerOrNull(); if (filterCategoryId.HasValue) { categoryFilter = CategoryCache.Read(filterCategoryId.Value); } } if (categoryFilter != null) { // if filtered by category, only show comments for prayer requests in that category or any of its decendent categories var categoryService = new CategoryService(rockContext); var categories = new CategoryService(rockContext).GetAllDescendents(categoryFilter.Guid).Select(a => a.Id).ToList(); var prayerRequestQry = new PrayerRequestService(rockContext).Queryable().Where(a => a.CategoryId.HasValue && (a.Category.Guid == categoryFilter.Guid || categories.Contains(a.CategoryId.Value))) .Select(a => a.Id); prayerComments = prayerComments.Where(a => a.EntityId.HasValue && prayerRequestQry.Contains(a.EntityId.Value)); } // Filter by Date Range if (drpDateRange.LowerValue.HasValue) { DateTime startDate = drpDateRange.LowerValue.Value.Date; prayerComments = prayerComments.Where(a => a.CreatedDateTime.HasValue && a.CreatedDateTime.Value >= 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); prayerComments = prayerComments.Where(a => a.CreatedDateTime.HasValue && a.CreatedDateTime.Value < endDate); } // Sort by the given property otherwise sort by the EnteredDate if (sortProperty != null) { gPrayerComments.DataSource = prayerComments.Sort(sortProperty).ToList(); } else { gPrayerComments.DataSource = prayerComments.OrderByDescending(n => n.CreatedDateTime).ToList(); } gPrayerComments.DataBind(); }
/// <summary> /// Binds the comments grid. /// </summary> private void BindCommentsGrid() { var rockContext = new RockContext(); var noteTypeService = new NoteTypeService(rockContext); var noteType = noteTypeService.Get(Rock.SystemGuid.NoteType.PRAYER_COMMENT.AsGuid()); // TODO log exception if noteType is null var noteService = new NoteService(rockContext); var prayerComments = noteService.GetByNoteTypeId(noteType.Id); SortProperty sortProperty = gPrayerComments.SortProperty; if (_blockInstancePrayerRequestCategoryGuid.HasValue) { // if filtered by category, only show comments for prayer requests in that category or any of its decendent categories var categoryService = new CategoryService(rockContext); if (_blockInstancePrayerRequestCategoryGuid.HasValue) { var categories = new CategoryService(rockContext).GetAllDescendents(_blockInstancePrayerRequestCategoryGuid.Value).Select(a => a.Id).ToList(); var prayerRequestQry = new PrayerRequestService(rockContext).Queryable().Where(a => a.CategoryId.HasValue && (a.Category.Guid == _blockInstancePrayerRequestCategoryGuid.Value || categories.Contains(a.CategoryId.Value))) .Select(a => a.Id); prayerComments = prayerComments.Where(a => a.EntityId.HasValue && prayerRequestQry.Contains(a.EntityId.Value)); } } // Filter by Date Range if (drpDateRange.LowerValue.HasValue) { DateTime startDate = drpDateRange.LowerValue.Value.Date; prayerComments = prayerComments.Where(a => a.CreatedDateTime.HasValue && a.CreatedDateTime.Value >= 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); prayerComments = prayerComments.Where(a => a.CreatedDateTime.HasValue && a.CreatedDateTime.Value < endDate); } // Sort by the given property otherwise sort by the EnteredDate if (sortProperty != null) { gPrayerComments.DataSource = prayerComments.Sort(sortProperty).ToList(); } else { gPrayerComments.DataSource = prayerComments.OrderBy(n => n.CreatedDateTime).ToList(); } gPrayerComments.DataBind(); }