EmicoEcommerce/Magento2Tweakwise

View on GitHub
Model/Client/Type/SuggestionType/SuggestionTypeFactory.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Tweakwise\Magento2Tweakwise\Model\Client\Type\SuggestionType;

use Magento\Framework\ObjectManagerInterface;

class SuggestionTypeFactory
{
    /**
     * @var ObjectManagerInterface
     */
    protected $objectManager;

    /**
     * SuggestionTypeFactory constructor.
     * @param ObjectManagerInterface $objectManager
     */
    public function __construct(ObjectManagerInterface $objectManager)
    {
        $this->objectManager = $objectManager;
    }

    /**
     * @param array $suggestion
     * @param string|null $type
     * @return SuggestionTypeAbstract
     */
    public function createSuggestion(array $suggestion, string $type = null): SuggestionTypeAbstract
    {
        $type = $this->resolveClass($type);
        /** @var SuggestionTypeAbstract $suggestionType */
        $suggestionType = $this->objectManager->create($type);
        return $suggestionType->setData($suggestion);
    }

    /**
     * @param string $suggestionType
     * @return string
     */
    protected function resolveClass(string $suggestionType): string
    {
        if ($suggestionType === SuggestionTypeSearch::TYPE) {
            return SuggestionTypeSearch::class;
        }

        if ($suggestionType === SuggestionTypeCategory::TYPE) {
            return SuggestionTypeCategory::class;
        }

        if ($suggestionType === SuggestionTypeFacet::TYPE) {
            return SuggestionTypeFacet::class;
        }

        return SuggestionTypeSearch::class;
    }
}