Any query to filter recently edited contentItems by currentUser from find index?

Vote:
 

Hi, im working on writing a find query that returns recentlt edited contentItems by current user. I need to read both pages and blocks. With this query i easily get PageData but not Block data. Any help? I've seen REcentlyChanged component in epi-cms/ but thats too complicate to understand at the moment.

SearchClient.Instance.Search()

.Filter(x => x.ChangedBy.Match(currentUser)).Take(10)
.GetContentResult().ToList();
#194545
Jun 25, 2018 10:52
Vote:
 

Try searching for IContent instead of SitePageData

SearchClient.Instance.Search<IContent>()

That would get you all types of content.

If you want to filter out only pages and blocks I think you could do it this way.

SearchClient.Instance.Search<IContent>()
    .Filter(x => x.ChangedBy.Match(currentUser))
    .Filter(x => x.IsPageOrBlock())
    .Take(10)
    .GetContentResult().ToList();
    
public static class CustomFilters
{
    public static FilterExpression<IContent> IsPageOrBlock(this IContent content)
    {
        return new FilterExpression<IContent>(x =>
            x.MatchTypeHierarchy(typeof(PageData))
            | x.MatchTypeHierarchy(typeof(BlockData)));

    }
}
#194658
Jun 27, 2018 14:37
Vote:
 

Hi Peter,

Block is not inherited form IContent so ChangedBy prop. doesnt work exist in this case.

However, i moved further by converting each result as IChangeTrackable. then i could read changedby even for blocks.

Now i am stucked at a point, the changed blocks or pages are only those are recently changed and published and not that are changed and saved.

Seems like i need to check all versions of content and maybe Epi Find is not a place to look into it then instead Maybe i should take help from ContentRepository.

Will update, and please update here if you have any hints.

thanks for help.

 .Filter(x => x.IsPageOrBlock())
.Filter(x => x.ChangedBy.Match(currentUser))
#194679
Edited, Jun 28, 2018 8:34