Ejemplo n.º 1
0
        /// <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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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();
                    }
                }
            }
        }