EmicoEcommerce/Magento2Tweakwise

View on GitHub
Model/Client/Type/SuggestionTypeGroup.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Tweakwise\Magento2Tweakwise\Model\Client\Type;

use Tweakwise\Magento2Tweakwise\Model\Client\Type\SuggestionType\SuggestionTypeAbstract;
use Tweakwise\Magento2Tweakwise\Model\Client\Type\SuggestionType\SuggestionTypeFactory;

/**
 * Class SuggestionGroupType
 *
 * @method string|null getName()
 * @method setName(string $name);
 * @method SuggestionTypeAbstract[] getSuggestions();
 */
class SuggestionTypeGroup extends Type
{
    /**
     * @var SuggestionTypeFactory
     */
    protected $suggestionTypeFactory;

    /**
     * @var string
     */
    protected $type;

    /**
     * SuggestionTypeGroup constructor.
     * @param SuggestionTypeFactory $suggestionTypeFactory
     * @param array $data
     */
    public function __construct(
        SuggestionTypeFactory $suggestionTypeFactory,
        array $data = []
    ) {
        $this->suggestionTypeFactory = $suggestionTypeFactory;
        parent::__construct($data);
    }

    /**
     * @param string $type
     */
    public function setType(string $type)
    {
        $this->type = $type;
    }

    /**
     * @param SuggestionTypeAbstract[]|array[] $suggestions
     * @return $this
     */
    public function setSuggestions(array $suggestions)
    {
        $suggestions = $this->normalizeArray($suggestions, 'suggestion');

        $values = [];
        foreach ($suggestions as $suggestion) {
            if (!$suggestion instanceof SuggestionTypeAbstract) {
                $suggestion = $this->suggestionTypeFactory->createSuggestion($suggestion, $this->type);
            }

            $values[] = $suggestion;
        }

        $this->data['suggestions'] = $values;
        return $this;
    }
}