Skip to content

Commit 66c3bff

Browse files
committed
#31168 updated after get list method
1 parent f5cc98e commit 66c3bff

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

app/code/Magento/Newsletter/Model/Plugin/CustomerPlugin.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,37 @@ public function afterGetById(CustomerRepositoryInterface $subject, CustomerInter
234234
return $customer;
235235
}
236236

237+
/**
238+
* Add subscription status to customer list
239+
*
240+
* @param CustomerRepositoryInterface $subject
241+
* @param SearchResults $searchResults
242+
* @return SearchResults
243+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
244+
*/
245+
public function afterGetList(CustomerRepositoryInterface $subject, SearchResults $searchResults): SearchResults
246+
{
247+
$customerEmails = [];
248+
249+
foreach ($searchResults->getItems() as $customer) {
250+
$customerEmails[] = $customer->getEmail();
251+
}
252+
253+
$collection = $this->collectionFactory->create();
254+
$collection->addFieldToFilter('subscriber_email', ['in' => $customerEmails]);
255+
256+
foreach ($searchResults->getItems() as $customer) {
257+
/** @var CustomerExtensionInterface $extensionAttributes */
258+
$extensionAttributes = $customer->getExtensionAttributes();
259+
/** @var Subscriber $subscribe */
260+
$subscribe = $collection->getItemByColumnValue('subscriber_email', $customer->getEmail());
261+
$isSubscribed = $subscribe && (int) $subscribe->getStatus() === Subscriber::STATUS_SUBSCRIBED;
262+
$extensionAttributes->setIsSubscribed($isSubscribed);
263+
}
264+
265+
return $searchResults;
266+
}
267+
237268
/**
238269
* Set Is Subscribed extension attribute
239270
*

dev/tests/integration/testsuite/Magento/Newsletter/Model/Plugin/PluginTest.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ public function testCustomerWithTwoNewsLetterSubscriptions()
217217
/** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
218218
$searchBuilder = Bootstrap::getObjectManager()->create(\Magento\Framework\Api\SearchCriteriaBuilder::class);
219219
$searchCriteria = $searchBuilder->addFilter('entity_id', 1)->create();
220-
$this->customerRepository->getList($searchCriteria);
220+
$items = $this->customerRepository->getList($searchCriteria)->getItems();
221+
/** @var \Magento\Customer\Api\Data\CustomerInterface $customer */
222+
$customer = $items[0];
223+
$extensionAttributes = $customer->getExtensionAttributes();
224+
$this->assertTrue($extensionAttributes->getIsSubscribed());
221225
}
222226
}

0 commit comments

Comments
 (0)