London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

Get latest comments from a category

Vote:
 

Hi all!

We're in the process of building an epi cms block that does what the title dictates, it gets the latest X comments (optional from comments on a product from a specific category) and displays them in a list.

We're not really sure how to manage this, however. First part is easy, getting the latest comments is just querying all Comments with the composite class Y we're using and sorting by date. The tricky part comes when we want to do it per category. All comments with composite class Y are tightly coupled with variants in episerver, however which categories a variant is included in does not exist in epi social, yet. It would make sense to create a

public List Categories { get; set; }

on the composite Y, since a varaint can be in several categories. Now, since we want to fetch all comments where

Categories.Contains(theCategoryNameDefinedInTheBlock)

but I don't see any way of implementing this logic with the current commentrepository-API.

How can I solve this? It feels like a pretty common use case for comments, to show latest comments/ratings/reviews on a category page.

#174703
Feb 02, 2017 14:32
Vote:
 

Hi Joel,

The platform doesn't officially offer a "Contains" expression at this time (the feature is currently in the product backlog) but there is an undocumented behavior that may suffice for you until such a feature is implemented.

It so happens that the EqualToExpression, when used against a collection of the supported value types, will behave like a "contains" operation. So, if you apply an extension filter to your criteria (CompositeCriteria<TFilter,TExtension>.ExtensionFilter), which leverages the EqualToExpression against the Categories field, the results will actually be limited to those that contain the desired category.

For example:

var criteria = new CompositeCriteria<CommentFilter, TestData>
{
    ExtensionFilter = FilterExpressionBuilder<TestData>.Field(td => td.Categories).EqualTo(categoryNameDefinedInBlock)                    
}


While it's not an officially supported behavior, we have no plans to remove the behavior in the foreseeable future. I think that will acheive what you're looking to do in the near term.

#174737
Feb 02, 2017 21:06
Vote:
 

Hi Chris,

Well that was a hidden suprise! Haven't tried it out yet, but if what you say is true you should promote this in your documentation! :) Will return with feedback if I get any issues with it.

Thanks!

Regards,
Joel Yourstone

#174849
Feb 07, 2017 6:39
Vote:
 

Yes -- it's more of a convenient quirk at this point. It will certainly be documented when we introduce formal support in the form of a "contains" expression in the near future.

#174919
Feb 07, 2017 20:51
Vote:
 

I think AI is taking over...embarassed Moderators, do your thing!

#188153
Feb 13, 2018 11:14
Vote:
 

Hi Joel, we have done our thing. ;-)

#188154
Feb 13, 2018 11:25
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.