Overview

Namespaces

  • Affilinet
    • ProductData
      • Exceptions
      • HttpClient
      • Requests
        • Helper
        • Traits
      • Responses
        • ResponseElements

Classes

  • Affilinet\ProductData\AffilinetClient
  • Affilinet\ProductData\HttpClient\GuzzleClient
  • Affilinet\ProductData\Requests\AbstractRequest
  • Affilinet\ProductData\Requests\CategoriesRequest
  • Affilinet\ProductData\Requests\Helper\Expression
  • Affilinet\ProductData\Requests\Helper\Query
  • Affilinet\ProductData\Requests\ProductsRequest
  • Affilinet\ProductData\Requests\ShopPropertiesRequest
  • Affilinet\ProductData\Requests\ShopsRequest
  • Affilinet\ProductData\Responses\AbstractResponse
  • Affilinet\ProductData\Responses\CategoriesResponse
  • Affilinet\ProductData\Responses\ProductsResponse
  • Affilinet\ProductData\Responses\ResponseElements\Category
  • Affilinet\ProductData\Responses\ResponseElements\Facet
  • Affilinet\ProductData\Responses\ResponseElements\FacetValue
  • Affilinet\ProductData\Responses\ResponseElements\Image
  • Affilinet\ProductData\Responses\ResponseElements\Price
  • Affilinet\ProductData\Responses\ResponseElements\Product
  • Affilinet\ProductData\Responses\ResponseElements\Shop
  • Affilinet\ProductData\Responses\ResponseElements\ShopProperty
  • Affilinet\ProductData\Responses\ShopPropertiesResponse
  • Affilinet\ProductData\Responses\ShopsResponse

Interfaces

  • Affilinet\ProductData\HttpClient\HttpClientInterface
  • Affilinet\ProductData\Requests\CategoriesRequestInterface
  • Affilinet\ProductData\Requests\Helper\ExpressionInterface
  • Affilinet\ProductData\Requests\Helper\QueryInterface
  • Affilinet\ProductData\Requests\ProductsRequestInterface
  • Affilinet\ProductData\Requests\RequestInterface
  • Affilinet\ProductData\Requests\ShopPropertiesRequestInterface
  • Affilinet\ProductData\Requests\ShopsRequestInterface
  • Affilinet\ProductData\Responses\CategoriesResponseInterface
  • Affilinet\ProductData\Responses\ProductsResponseInterface
  • Affilinet\ProductData\Responses\ResponseElements\CategoryInterface
  • Affilinet\ProductData\Responses\ResponseElements\FacetInterface
  • Affilinet\ProductData\Responses\ResponseElements\FacetValueInterface
  • Affilinet\ProductData\Responses\ResponseElements\ImageInterface
  • Affilinet\ProductData\Responses\ResponseElements\PriceInterface
  • Affilinet\ProductData\Responses\ResponseElements\ProductInterface
  • Affilinet\ProductData\Responses\ResponseElements\ShopInterface
  • Affilinet\ProductData\Responses\ResponseElements\ShopPropertyInterface
  • Affilinet\ProductData\Responses\ResponseInterface
  • Affilinet\ProductData\Responses\ShopPropertiesResponseInterface
  • Affilinet\ProductData\Responses\ShopsResponseInterface

Traits

  • Affilinet\ProductData\Requests\Traits\ImageTrait
  • Affilinet\ProductData\Requests\Traits\LogoTrait
  • Affilinet\ProductData\Requests\Traits\PaginationTrait
  • Affilinet\ProductData\Requests\Traits\ShopLogoTrait
  • Affilinet\ProductData\Responses\DataParser

Exceptions

  • Affilinet\ProductData\Exceptions\AffilinetProductWebserviceException
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 
<?php

/*
 * This file is part of the affilinet Product Data PHP SDK.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Affilinet\ProductData\Responses\ResponseElements;

use Affilinet\ProductData\Requests\ProductsRequestInterface;

class FacetValue implements FacetValueInterface
{

    /**
     * @var string
     */
    private $value;

    /**
     * @var integer
     */
    private $resultCount;

    /**
     * @var FacetInterface
     */
    private $facet;

    /**
     * FacetValue constructor.
     * @param array          $facetValue
     * @param FacetInterface $facet
     */
    public function __construct(array $facetValue, FacetInterface $facet)
    {
        $this->value = $facetValue['FacetValueName'];
        $this->resultCount = $facetValue['FacetValueCount'];
        $this->facet = $facet;

    }

    /**
     * @return string
     */
    public function getDisplayValue()
    {
        switch ($this->getFacet()->getName()) {
            case 'ShopCategoryPathFacet':
            case 'AffilinetCategoryPathFacet':
                $values = explode('^', $this->value);
                if ($values[3] === $values[1]) return $values[1];
                return $values[3];
                break;
        }

        return $this->getValue();
    }

    /**
     * @return FacetInterface
     */
    public function getFacet()
    {
        return $this->facet;
    }

    /**
     * @return string
     */
    public function getValue()
    {
        return $this->value;
    }

    /**
     * @return int
     */
    public function getResultCount()
    {
        return $this->resultCount;
    }

    /**
     * Returns the serialized ProductsRequest to retrieve the results behind this facet value
     * Starting with "?" for usage as URI Query Parameter
     *
     * @param  ProductsRequestInterface $request
     * @return string
     */
    public function generateQueryString(ProductsRequestInterface $request)
    {
        return '?' . $this->generateSerializedProductsRequest($request);
    }

    /**
     * Returns the serialized ProductsRequest to retrieve the results behind this facet value
     *
     * @param  ProductsRequestInterface $request
     * @return string
     */
    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();
    }
}
API documentation generated by ApiGen