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 }); }
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); }