Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
CustomerRegisterEvent example
$customer
=
new
CustomerEntity
(
)
;
$salesChannelContext
=
$this
->
createMock
(
SalesChannelContext::
class
)
;
$salesChannelContext
->
expects
(
static
::
once
(
)
)
->
method
(
'getCustomer'
)
->
willReturn
(
$customer
)
;
$this
->restorer->
expects
(
static
::
once
(
)
)
->
method
(
'restoreByCustomer'
)
->
willReturn
(
$salesChannelContext
)
;
$customerCreated
=
new
CustomerRegisterEvent
(
$salesChannelContext
,
$customer
)
;
$this
->dispatcher->
expects
(
static
::
once
(
)
)
->
method
(
'dispatch'
)
->
with
(
$customerCreated
)
;
$this
->customerFlowEventsSubscriber->
onCustomerWritten
(
$event
)
;
}
}
$context
->
getDomainId
(
)
,
$context
->
getContext
(
)
,
$customer
->
getId
(
)
)
)
;
$new
->
addState
(
...
$context
->
getStates
(
)
)
;
if
(
$customer
->
getGuest
(
)
)
{
$this
->eventDispatcher->
dispatch
(
new
GuestCustomerRegisterEvent
(
$new
,
$customer
)
)
;
}
else
{
$this
->eventDispatcher->
dispatch
(
new
CustomerRegisterEvent
(
$new
,
$customer
)
)
;
}
$criteria
=
new
Criteria
(
[
$customer
->
getId
(
)
]
)
;
$criteria
->
addAssociation
(
'addresses'
)
;
$criteria
->
addAssociation
(
'salutation'
)
;
$criteria
->
setLimit
(
1
)
;
$customer
=
$this
->customerRepository
->
search
(
$criteria
,
$new
->
getContext
(
)
)
->
first
(
)
;
$context
=
$event
->
getContext
(
)
;
$message
=
new
CustomerIndexingMessage
(
[
$customerId
]
)
;
$this
->customerIndexer->
handle
(
$message
)
;
$salesChannelContext
=
$this
->restorer->
restoreByCustomer
(
$customerId
,
$context
)
;
if
(
!
$customer
=
$salesChannelContext
->
getCustomer
(
)
)
{
return
;
}
$customerCreated
=
new
CustomerRegisterEvent
(
$salesChannelContext
,
$customer
)
;
$this
->dispatcher->
dispatch
(
$customerCreated
)
;
}
private
function
dispatchCustomerChangePaymentMethodEvent
(
string
$customerId
, EntityWrittenEvent
$event
)
: void
{
$context
=
$event
->
getContext
(
)
;
$salesChannelContext
=
$this
->restorer->
restoreByCustomer
(
$customerId
,
$context
)
;
$context
->
getLanguageId
(
)
,
$context
->
getCurrencyId
(
)
,
$context
->
getDomainId
(
)
,
$context
->
getContext
(
)
,
$customerEntity
->
getId
(
)
)
)
;
$new
->
addState
(
...
$context
->
getStates
(
)
)
;
if
(
!
$customerEntity
->
getGuest
(
)
)
{
$this
->eventDispatcher->
dispatch
(
new
CustomerRegisterEvent
(
$new
,
$customerEntity
)
)
;
}
else
{
$this
->eventDispatcher->
dispatch
(
new
GuestCustomerRegisterEvent
(
$new
,
$customerEntity
)
)
;
}
$event
=
new
CustomerLoginEvent
(
$new
,
$customerEntity
,
$newToken
)
;
$this
->eventDispatcher->
dispatch
(
$event
)
;
$response
->headers->
set
(
PlatformRequest::HEADER_CONTEXT_TOKEN,
$newToken
)
;
// We don't want to leak the hash in store-api
$customerEntity
->
setHash
(
''
)
;