/// <summary> /// Shows the list. /// </summary> public void ShowList(int componentId) { int pageSize = GetAttributeValue("PageSize").AsInteger(); int skipCount = pageNumber * pageSize; using (var rockContext = new RockContext()) { var component = new InteractionComponentService(rockContext).Get(componentId); if (component != null && (UserCanEdit || component.IsAuthorized(Authorization.VIEW, CurrentPerson))) { var interactions = new InteractionService(rockContext) .Queryable().AsNoTracking() .Where(a => a.InteractionComponentId == componentId) .OrderByDescending(a => a.InteractionDateTime) .Skip(skipCount) .Take(pageSize + 1); var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(this.RockPage, this.CurrentPerson); mergeFields.AddOrIgnore("Person", CurrentPerson); mergeFields.Add("InteractionDetailPage", LinkedPageRoute("InteractionDetailPage")); mergeFields.Add("InteractionChannel", component.Channel); mergeFields.Add("InteractionComponent", component); mergeFields.Add("Interactions", interactions.ToList().Take(pageSize)); // set next button if (interactions.Count() > pageSize) { Dictionary <string, string> queryStringNext = new Dictionary <string, string>(); queryStringNext.Add("ComponentId", componentId.ToString()); queryStringNext.Add("Page", (pageNumber + 1).ToString()); var pageReferenceNext = new Rock.Web.PageReference(CurrentPageReference.PageId, CurrentPageReference.RouteId, queryStringNext); mergeFields.Add("NextPageNavigateUrl", pageReferenceNext.BuildUrl()); } // set prev button if (pageNumber != 0) { Dictionary <string, string> queryStringPrev = new Dictionary <string, string>(); queryStringPrev.Add("ComponentId", componentId.ToString()); queryStringPrev.Add("Page", (pageNumber - 1).ToString()); var pageReferencePrev = new Rock.Web.PageReference(CurrentPageReference.PageId, CurrentPageReference.RouteId, queryStringPrev); mergeFields.Add("PreviousPageNavigateUrl", pageReferencePrev.BuildUrl()); } lContent.Text = component.Channel.InteractionListTemplate.IsNotNullOrWhitespace() ? component.Channel.InteractionListTemplate.ResolveMergeFields(mergeFields) : GetAttributeValue("DefaultTemplate").ResolveMergeFields(mergeFields); } } }
/// <summary> /// Shows the list. /// </summary> public void ShowList(int componentId) { int pageSize = GetAttributeValue("PageSize").AsInteger(); int skipCount = pageNumber * pageSize; using (var rockContext = new RockContext()) { var component = new InteractionComponentService(rockContext).Get(componentId); if (component != null && (UserCanEdit || component.IsAuthorized(Authorization.VIEW, CurrentPerson))) { var interactions = new InteractionService(rockContext) .Queryable().AsNoTracking() .Where(a => a.InteractionComponentId == componentId); if (startDate != DateTime.MinValue) { interactions = interactions.Where(s => s.InteractionDateTime > drpDateFilter.LowerValue); } if (endDate != DateTime.MaxValue) { interactions = interactions.Where(s => s.InteractionDateTime < drpDateFilter.UpperValue); } if (_personId.HasValue) { interactions = interactions.Where(s => s.PersonAlias.PersonId == _personId); } interactions = interactions .OrderByDescending(a => a.InteractionDateTime) .Skip(skipCount) .Take(pageSize + 1); var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(this.RockPage, this.CurrentPerson); mergeFields.AddOrIgnore("CurrentPerson", CurrentPerson); mergeFields.Add("InteractionDetailPage", LinkedPageRoute("InteractionDetailPage")); mergeFields.Add("InteractionChannel", component.Channel); mergeFields.Add("InteractionComponent", component); mergeFields.Add("Interactions", interactions.ToList().Take(pageSize)); lContent.Text = component.Channel.InteractionListTemplate.IsNotNullOrWhitespace() ? component.Channel.InteractionListTemplate.ResolveMergeFields(mergeFields) : GetAttributeValue("DefaultTemplate").ResolveMergeFields(mergeFields); // set next button if (interactions.Count() > pageSize) { Dictionary <string, string> queryStringNext = new Dictionary <string, string>(); queryStringNext.Add("ComponentId", componentId.ToString()); queryStringNext.Add("Page", (pageNumber + 1).ToString()); if (_personId.HasValue) { queryStringNext.Add("PersonId", _personId.Value.ToString()); } if (startDate != DateTime.MinValue) { queryStringNext.Add("StartDate", startDate.ToShortDateString()); } if (endDate != DateTime.MaxValue) { queryStringNext.Add("EndDate", endDate.ToShortDateString()); } var pageReferenceNext = new Rock.Web.PageReference(CurrentPageReference.PageId, CurrentPageReference.RouteId, queryStringNext); hlNext.NavigateUrl = pageReferenceNext.BuildUrl(); } else { hlNext.Visible = hlNext.Enabled = false; } // set prev button if (pageNumber == 0) { hlPrev.Visible = hlPrev.Enabled = false; } else { Dictionary <string, string> queryStringPrev = new Dictionary <string, string>(); queryStringPrev.Add("ComponentId", componentId.ToString()); queryStringPrev.Add("Page", (pageNumber - 1).ToString()); if (_personId.HasValue) { queryStringPrev.Add("PersonId", _personId.Value.ToString()); } if (startDate != DateTime.MinValue) { queryStringPrev.Add("StartDate", startDate.ToShortDateString()); } if (endDate != DateTime.MaxValue) { queryStringPrev.Add("EndDate", endDate.ToShortDateString()); } var pageReferencePrev = new Rock.Web.PageReference(CurrentPageReference.PageId, CurrentPageReference.RouteId, queryStringPrev); hlPrev.NavigateUrl = pageReferencePrev.BuildUrl(); } } } }