async Task <EntityParticipantsViewModel> GetViewModel(int id)
        {
            // Get top 10 participants
            var users = await _entityUsersStore.QueryAsync()
                        .Take(10)
                        .Select <EntityUserQueryParams>(q =>
            {
                q.EntityId.Equals(id);
            })
                        .OrderBy("t.TotalReplies", OrderBy.Desc)
                        .ToList();

            return(new EntityParticipantsViewModel()
            {
                Users = users
            });
        }
Beispiel #2
0
        private async Task <TEntityReply> EntityDetailsUpdater(TEntityReply reply)
        {
            // We need an entity to update
            if (reply.EntityId <= 0)
            {
                return(reply);
            }

            // Ensure the entity exists
            var entity = await _entityStore.GetByIdAsync(reply.EntityId);

            if (entity == null)
            {
                return(reply);
            }

            // Get entity details to update
            var details = entity.GetOrCreate <ArticleDetails>();

            // Get last 5 unique users & total unique user count
            var users = await _entityUsersStore.QueryAsync()
                        .Take(5, true)
                        .Select <EntityUserQueryParams>(q =>
            {
                q.EntityId.Equals(entity.Id);
                q.HideHidden.True();
                q.HideDeleted.True();
                q.HideSpam.True();
            })
                        .OrderBy("r.CreatedDate", OrderBy.Desc)
                        .ToList();

            details.LatestUsers      = users?.Data;
            entity.TotalParticipants = users?.Total ?? 0;

            // Add updated data to entity
            entity.AddOrUpdate <ArticleDetails>(details);

            // Persist the updates
            await _entityStore.UpdateAsync(entity);

            // Return our reply
            return(reply);
        }