<?php
namespace Okeonline\KejeDeliveryAddress\Storefront\Subscriber;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\MultiFilter;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\NotFilter;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\RangeFilter;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Sorting\FieldSorting;
use Shopware\Storefront\Page\Address\Listing\AddressListingCriteriaEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class AddressListingCriteriaEventSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents(): array
{
return [
AddressListingCriteriaEvent::class => 'hidePreviousAddedStorefrontAddresses'
];
}
public function hidePreviousAddedStorefrontAddresses(AddressListingCriteriaEvent $event): void
{
$criteria = $event->getCriteria();
$criteria->addAssociation('customerAddressSource');
$criteria->addFilter(
new MultiFilter(MultiFilter::CONNECTION_OR, [
new NotFilter(NotFilter::CONNECTION_AND, [
new EqualsFilter('customerAddressSource.source', 'storefront')
]),
new MultiFilter(MultiFilter::CONNECTION_AND, [
new RangeFilter('createdAt', [
RangeFilter::GT => (new \DateTime())->modify('-24 hour')->format('Y-m-d H:i:s.v'),
RangeFilter::LTE => (new \DateTime())->format('Y-m-d H:i:s.v')
]),
new EqualsFilter('customerAddressSource.source', 'storefront')
])
])
);
$criteria->addSorting(new FieldSorting('createdAt', FieldSorting::DESCENDING));
}
}