Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
OrderRouteRequestEvent example
->
addAssociation
(
'addresses'
)
->
addAssociation
(
'currency'
)
->
addAssociation
(
'documents.documentType'
)
->
setLimit
(
1
)
->
addAssociation
(
'orderCustomer'
)
;
$criteria
->
getAssociation
(
'transactions'
)
->
addSorting
(
new
FieldSorting
(
'createdAt'
)
)
;
$apiRequest
=
new
Request
(
)
;
$event
=
new
OrderRouteRequestEvent
(
$request
,
$apiRequest
,
$context
,
$criteria
)
;
$this
->eventDispatcher->
dispatch
(
$event
)
;
$responseStruct
=
$this
->orderRoute
->
load
(
$event
->
getStoreApiRequest
(
)
,
$context
,
$criteria
)
;
return
$responseStruct
->
getOrders
(
)
->
first
(
)
;
}
private
function
loadCustomer
(
SalesChannelContext
$context
, CustomerEntity
$customer
)
: CustomerEntity
{
$criteria
=
new
Criteria
(
)
;
return
$page
;
}
private
function
getOrder
(
Request
$request
, SalesChannelContext
$context
)
: OrderRouteResponse
{
$criteria
=
$this
->
createCriteria
(
$request
,
$context
)
;
$apiRequest
=
new
Request
(
)
;
$apiRequest
->query->
set
(
'checkPromotion', 'true'
)
;
$event
=
new
OrderRouteRequestEvent
(
$request
,
$apiRequest
,
$context
,
$criteria
)
;
$this
->eventDispatcher->
dispatch
(
$event
)
;
return
$this
->orderRoute
->
load
(
$event
->
getStoreApiRequest
(
)
,
$context
,
$criteria
)
;
}
private
function
createCriteria
(
Request
$request
, SalesChannelContext
$context
)
: Criteria
{
if
(
$request
->
get
(
'orderId'
)
)
{
$criteria
=
new
Criteria
(
[
$request
->
get
(
'orderId'
)
]
)
;
}
else
{
->
addAssociation
(
'lineItems'
)
->
addAssociation
(
'orderCustomer'
)
->
addAssociation
(
'transactions.paymentMethod'
)
->
addAssociation
(
'deliveries.shippingMethod'
)
->
addAssociation
(
'lineItems.cover'
)
;
$criteria
->
getAssociation
(
'transactions'
)
->
addSorting
(
new
FieldSorting
(
'createdAt'
)
)
;
$apiRequest
=
new
Request
(
)
;
$event
=
new
OrderRouteRequestEvent
(
$request
,
$apiRequest
,
$salesChannelContext
,
$criteria
)
;
$this
->eventDispatcher->
dispatch
(
$event
)
;
$result
=
$this
->orderRoute
->
load
(
$event
->
getStoreApiRequest
(
)
,
$salesChannelContext
,
$criteria
)
;
$order
=
$result
->
getOrders
(
)
->
first
(
)
;
if
(
!
$order
instanceof OrderEntity
)
{
throw
new
NotFoundHttpException
(
)
;
}
private
function
getOrders
(
Request
$request
, SalesChannelContext
$context
)
: EntitySearchResult
{
$criteria
=
$this
->
createCriteria
(
$request
)
;
$apiRequest
=
new
Request
(
)
;
// Add email and zipcode for guest customer verification in order view
if
(
$request
->
get
(
'email', false
)
&&
$request
->
get
(
'zipcode', false
)
)
{
$apiRequest
->query->
set
(
'email',
$request
->
get
(
'email'
)
)
;
$apiRequest
->query->
set
(
'zipcode',
$request
->
get
(
'zipcode'
)
)
;
}
$event
=
new
OrderRouteRequestEvent
(
$request
,
$apiRequest
,
$context
,
$criteria
)
;
$this
->eventDispatcher->
dispatch
(
$event
)
;
$responseStruct
=
$this
->orderRoute
->
load
(
$event
->
getStoreApiRequest
(
)
,
$context
,
$criteria
)
;
return
$responseStruct
->
getOrders
(
)
;
}
private
function
createCriteria
(
Request
$request
)
: Criteria
{
$limit
=
$request
->
get
(
'limit'
)
;