public void UpdateLastVisitActivity(int activityStreamId)
        {
            if (this.services.WorkContext.CurrentUser == null)
            {
                throw new OrchardSecurityException(T("You don't have authorization to run the query"));
            }

            int userId          = this.services.WorkContext.CurrentUser.Id;
            var userVisitRecord = userContentVisitRepository.Table.FirstOrDefault(c => c.User.Id == userId);

            if (userVisitRecord == null)
            {
                userVisitRecord = new UserContentVisitRecord
                {
                    User = new UserPartRecord()
                    {
                        Id = userId
                    },
                    LastVisitedActivityStreamId = activityStreamId,
                    LastVisitTime = DateTime.UtcNow
                };

                this.userContentVisitRepository.Create(userVisitRecord);
                this.userContentVisitRepository.Flush();
            }
            else
            {
                userVisitRecord.LastVisitedActivityStreamId = activityStreamId;
                userVisitRecord.LastVisitTime = DateTime.UtcNow;
                this.userContentVisitRepository.Flush();
            }
        }
        private IHqlQuery[] GetQueries(out int lastActivityId)
        {
            int userId          = this.services.WorkContext.CurrentUser.Id;
            var userVisitRecord = userContentVisitRepository.Table.FirstOrDefault(c => c.User.Id == userId);

            var contentQuery = this.services.ContentManager.HqlQuery();

            contentQuery = this.ApplyContentPermissionFilter(contentQuery);
            if (userVisitRecord == null)
            {
                var lastActivities = this.activityStreamService.ActivityStreamRestrictedByGivenQuery(new[] { contentQuery }, 0, 1).ToList();

                if (lastActivities.Count > 0)
                {
                    userVisitRecord = new UserContentVisitRecord
                    {
                        User = new UserPartRecord()
                        {
                            Id = userId
                        },
                        LastVisitedActivityStreamId = lastActivities[0].Id,
                        LastVisitTime = DateTime.UtcNow
                    };

                    this.userContentVisitRepository.Create(userVisitRecord);
                    this.userContentVisitRepository.Flush();
                }

                lastActivityId = 0;
            }
            else
            {
                lastActivityId = userVisitRecord.LastVisitedActivityStreamId;
            }

            return(new[] { contentQuery });
        }