Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
createReviewCriteria example
/** @var SalesChannelProductEntity|null $product */
if
(
$product
!== null
)
{
$data
->
setProduct
(
$product
)
;
$data
->
setReviews
(
$this
->
loadProductReviews
(
$product
,
$request
,
$resolverContext
->
getSalesChannelContext
(
)
)
)
;
}
}
private
function
loadProductReviews
(
SalesChannelProductEntity
$product
, Request
$request
, SalesChannelContext
$context
)
: ProductReviewResult
{
$reviewCriteria
=
$this
->
createReviewCriteria
(
$request
,
$context
)
;
$reviews
=
$this
->productReviewRoute
->
load
(
$product
->
getParentId
(
)
??
$product
->
getId
(
)
,
$request
,
$context
,
$reviewCriteria
)
->
getResult
(
)
;
$matrix
=
$this
->
getReviewRatingMatrix
(
$reviews
)
;
$reviewResult
= ProductReviewResult::
createFrom
(
$reviews
)
;
$reviewResult
->
setMatrix
(
$matrix
)
;
$reviewResult
->
setProductId
(
$product
->
getId
(
)
)
;
$reviewResult
->
setCustomerReview
(
$this
->
getCustomerReview
(
$product
->
getId
(
)
,
$context
)
)
;
$reviewResult
->
setTotalReviews
(
$matrix
->
getTotalReviewCount
(
)
)
;
/** @var SalesChannelProductEntity|null $product */
if
(
$product
!== null
)
{
$buyBox
->
setProduct
(
$product
)
;
$buyBox
->
setProductId
(
$product
->
getId
(
)
)
;
$buyBox
->
setConfiguratorSettings
(
$this
->configuratorLoader->
load
(
$product
,
$resolverContext
->
getSalesChannelContext
(
)
)
)
;
$buyBox
->
setTotalReviews
(
$this
->
getReviewsCount
(
$product
,
$resolverContext
->
getSalesChannelContext
(
)
)
)
;
}
}
private
function
getReviewsCount
(
SalesChannelProductEntity
$product
, SalesChannelContext
$context
)
: int
{
$reviewCriteria
=
$this
->
createReviewCriteria
(
$context
,
$product
->
getParentId
(
)
??
$product
->
getId
(
)
)
;
$aggregation
=
$this
->repository->
aggregate
(
$reviewCriteria
,
$context
->
getContext
(
)
)
->
get
(
'review-count'
)
;
return
$aggregation
instanceof CountResult ?
$aggregation
->
getCount
(
)
: 0;
}
private
function
createReviewCriteria
(
SalesChannelContext
$context
, string
$productId
)
: Criteria
{
$reviewFilters
=
[
]
;
$criteria
=
new
Criteria
(
)
;