public function generateSerializedProductsRequest(ProductsRequestInterface $request)
    {
        $newRequest = clone $request;

        switch ($this->getFacet()->getName()) {
            case 'ShopName':
            case 'ProgramId':
                // There is no valid filter Query for these facets, add debug log

                $request->getAffilinetClient()
                    ->getLog()
                    ->addDebug(
                        'You can not filter SearchProducts with '
                        . $this->getFacet()->getName()
                        . ' Seems like you used this facet and tried to generate a Link or a ProductsRequest for this facets\' results.'
                    );

                break;
            case 'ShopId':

                $newRequest->onlyFromShopIds([$this->getValue()]);
                break;

            case 'ShopCategoryId':
                $newRequest->onlyFromCategories([$this->getValue()], false, false);
                break;

            case 'AffilinetCategoryId':
                $newRequest->onlyFromCategories([$this->getValue()]);
                break;

            default :
                $newRequest->addFilterQuery($this->getFacet()->getName(), $this->getValue());

        }

        return $newRequest->serialize();
    }