From d7d3fff60143b27d63cee4e2ff35b61136ee8a96 Mon Sep 17 00:00:00 2001 From: oleksandrkravchuk Date: Sun, 8 Mar 2020 22:50:44 +0100 Subject: [PATCH] MSI-2826-Hide-store-pickup-during-order-submissions-if-one-of-the-products-is-not-available-for-pickup. Remove extension attributes from filter group. Add extension attributes to search request. --- .../SearchCriteria/ResolveIntersection.php | 7 +- .../Model/SearchRequest/Filters.php | 10 +-- .../Data/SearchRequest/FiltersInterface.php | 15 ---- .../Test/Api/GetPickupLocationsTest.php | 90 +++++++++---------- .../etc/extension_attributes.xml | 2 +- .../view/frontend/web/js/view/store-pickup.js | 6 +- .../frontend/web/js/view/store-selector.js | 6 +- 7 files changed, 49 insertions(+), 87 deletions(-) diff --git a/InventoryInStorePickup/Model/SearchCriteria/ResolveIntersection.php b/InventoryInStorePickup/Model/SearchCriteria/ResolveIntersection.php index 7781dc694769..d411c86a7227 100644 --- a/InventoryInStorePickup/Model/SearchCriteria/ResolveIntersection.php +++ b/InventoryInStorePickup/Model/SearchCriteria/ResolveIntersection.php @@ -45,14 +45,13 @@ public function resolve( SearchRequestInterface $searchRequest, SearchCriteriaBuilderDecorator $searchCriteriaBuilder ): void { - if (!$searchRequest->getFilters() - || !$searchRequest->getFilters()->getExtensionAttributes() - || !$searchRequest->getFilters()->getExtensionAttributes()->getProductsInfo() + if (!$searchRequest->getExtensionAttributes() + || !$searchRequest->getExtensionAttributes()->getProductsInfo() ) { return; } - $extensionAttributes = $searchRequest->getFilters()->getExtensionAttributes(); + $extensionAttributes = $searchRequest->getExtensionAttributes(); $skus = []; foreach ($extensionAttributes->getProductsInfo() as $item) { $skus[] = $item->getSku(); diff --git a/InventoryInStorePickup/Model/SearchRequest/Filters.php b/InventoryInStorePickup/Model/SearchRequest/Filters.php index 53ff1965d768..87e73e82e9a4 100644 --- a/InventoryInStorePickup/Model/SearchRequest/Filters.php +++ b/InventoryInStorePickup/Model/SearchRequest/Filters.php @@ -56,11 +56,6 @@ class Filters implements FiltersInterface */ private $pickupLocationCode; - /** - * @var FiltersExtensionInterface|null - */ - private $filtersExtension; - /** * @param FilterInterface|null $name * @param FilterInterface|null $pickupLocationCode @@ -70,7 +65,6 @@ class Filters implements FiltersInterface * @param FilterInterface|null $regionId * @param FilterInterface|null $city * @param FilterInterface|null $street - * @param FiltersExtensionInterface|null $filtersExtension */ public function __construct( ?FilterInterface $name = null, @@ -80,8 +74,7 @@ public function __construct( ?FilterInterface $region = null, ?FilterInterface $regionId = null, ?FilterInterface $city = null, - ?FilterInterface $street = null, - ?FiltersExtensionInterface $filtersExtension = null + ?FilterInterface $street = null ) { $this->country = $country; $this->postcode = $postcode; @@ -91,7 +84,6 @@ public function __construct( $this->street = $street; $this->name = $name; $this->pickupLocationCode = $pickupLocationCode; - $this->filtersExtension = $filtersExtension; } /** diff --git a/InventoryInStorePickupApi/Api/Data/SearchRequest/FiltersInterface.php b/InventoryInStorePickupApi/Api/Data/SearchRequest/FiltersInterface.php index 0395dcd780ac..0a31f937fb78 100644 --- a/InventoryInStorePickupApi/Api/Data/SearchRequest/FiltersInterface.php +++ b/InventoryInStorePickupApi/Api/Data/SearchRequest/FiltersInterface.php @@ -74,19 +74,4 @@ public function getName(): ?FilterInterface; * @return \Magento\InventoryInStorePickupApi\Api\Data\SearchRequest\FilterInterface|null */ public function getPickupLocationCode(): ?FilterInterface; - - /** - * Get Filters Extension. - * - * @return \Magento\InventoryInStorePickupApi\Api\Data\SearchRequest\FiltersExtensionInterface|null - */ - public function getExtensionAttributes(): ?FiltersExtensionInterface; - - /** - * Set Filters Extension. - * - * @param \Magento\InventoryInStorePickupApi\Api\Data\SearchRequest\FiltersExtensionInterface $filtersExtension - * @return void - */ - public function setExtensionAttributes(FiltersExtensionInterface $filtersExtension): void; } diff --git a/InventoryInStorePickupApi/Test/Api/GetPickupLocationsTest.php b/InventoryInStorePickupApi/Test/Api/GetPickupLocationsTest.php index b1000b7af8c6..21873aa1e3fb 100644 --- a/InventoryInStorePickupApi/Test/Api/GetPickupLocationsTest.php +++ b/InventoryInStorePickupApi/Test/Api/GetPickupLocationsTest.php @@ -113,17 +113,15 @@ public function executeIntersectionSearchDataProvider(): array [ /** Data Set #0 */ [ - 'filters' => [ - 'extensionAttributes' => [ - 'productsInfo' => [ - [ - 'sku' => 'SKU-1' - ], - [ - 'sku' => 'SKU-3' - ] + 'extensionAttributes' => [ + 'productsInfo' => [ + [ + 'sku' => 'SKU-1' + ], + [ + 'sku' => 'SKU-3' ] - ], + ] ], 'scopeType' => 'website', 'scopeCode' => 'eu_website' @@ -134,17 +132,15 @@ public function executeIntersectionSearchDataProvider(): array [ /** Data Set #1 */ [ - 'filters' => [ - 'extensionAttributes' => [ - 'productsInfo' => [ - [ - 'sku' => 'SKU-1' - ], - [ - 'sku' => 'SKU-2' - ] + 'extensionAttributes' => [ + 'productsInfo' => [ + [ + 'sku' => 'SKU-1' + ], + [ + 'sku' => 'SKU-2' ] - ], + ] ], 'scopeType' => 'website', 'scopeCode' => 'eu_website' @@ -155,14 +151,12 @@ public function executeIntersectionSearchDataProvider(): array [ /** Data Set #2 */ [ - 'filters' => [ - 'extensionAttributes' => [ - 'productsInfo' => [ - [ - 'sku' => 'SKU-1' - ] + 'extensionAttributes' => [ + 'productsInfo' => [ + [ + 'sku' => 'SKU-1' ] - ], + ] ], 'scopeType' => 'website', 'scopeCode' => 'eu_website' @@ -177,20 +171,18 @@ public function executeIntersectionSearchDataProvider(): array [ /** Data Set #3 */ [ - 'filters' => [ - 'extensionAttributes' => [ - 'productsInfo' => [ - [ - 'sku' => 'SKU-1' - ], - [ - 'sku' => 'SKU-2' - ], - [ - 'sku' => 'SKU-3' - ] + 'extensionAttributes' => [ + 'productsInfo' => [ + [ + 'sku' => 'SKU-1' + ], + [ + 'sku' => 'SKU-2' + ], + [ + 'sku' => 'SKU-3' ] - ], + ] ], 'scopeType' => 'website', 'scopeCode' => 'eu_website' @@ -221,17 +213,15 @@ public function testExecuteDisabledPickupLocations(): void { $searchRequestData = [ 'searchRequest' => [ - 'filters' => [ - 'extensionAttributes' => [ - 'productsInfo' => [ - [ - 'sku' => 'SKU-1' - ], - [ - 'sku' => 'SKU-3' - ] + 'extensionAttributes' => [ + 'productsInfo' => [ + [ + 'sku' => 'SKU-1' + ], + [ + 'sku' => 'SKU-3' ] - ], + ] ], 'scopeType' => 'website', 'scopeCode' => 'eu_website' diff --git a/InventoryInStorePickupApi/etc/extension_attributes.xml b/InventoryInStorePickupApi/etc/extension_attributes.xml index 956157befab4..adc1db5dd080 100644 --- a/InventoryInStorePickupApi/etc/extension_attributes.xml +++ b/InventoryInStorePickupApi/etc/extension_attributes.xml @@ -11,7 +11,7 @@ - + diff --git a/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-pickup.js b/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-pickup.js index 2526b6acce34..83b4bda7f888 100644 --- a/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-pickup.js +++ b/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-pickup.js @@ -250,10 +250,8 @@ define([ searchTerm: shippingAddress.postcode + this.delimiter + shippingAddress.countryId || this.defaultCountry }, - filters: { - extension_attributes: { - productsInfo: productsInfo - } + extension_attributes: { + productsInfo: productsInfo }, pageSize: this.nearbySearchLimit }) diff --git a/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-selector.js b/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-selector.js index 7a2b542d8216..4e84760548d0 100644 --- a/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-selector.js +++ b/InventoryInStorePickupFrontend/view/frontend/web/js/view/store-selector.js @@ -177,10 +177,8 @@ define([ radius: this.nearbySearchRadius, searchTerm: searchQuery }, - filters: { - extension_attributes: { - productsInfo: productsInfo - } + extension_attributes: { + productsInfo: productsInfo }, pageSize: this.nearbySearchLimit })