Your IP : 216.73.216.220


Current Path : /home/rtorresani/www/app/code/Amasty/ImportCore/Import/Config/Profile/
Upload File :
Current File : //home/rtorresani/www/app/code/Amasty/ImportCore/Import/Config/Profile/EntitiesConfig.php

<?php

declare(strict_types=1);

/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Import Core for Magento 2 (System)
 */

namespace Amasty\ImportCore\Import\Config\Profile;

use Amasty\ImportCore\Api\Config\Profile\EntitiesConfigExtensionInterface;
use Amasty\ImportCore\Api\Config\Profile\EntitiesConfigExtensionInterfaceFactory;
use Amasty\ImportCore\Api\Config\Profile\EntitiesConfigInterface;
use Magento\Framework\DataObject;

class EntitiesConfig extends DataObject implements EntitiesConfigInterface
{
    public const ENTITY_CODE = 'entity_code';
    public const BEHAVIOR = 'behavior';
    public const MAP = 'map';
    public const FIELDS = 'fields';
    public const FILTERS = 'filters';
    public const SUB_ENTITIES_CONFIG = 'sub_entities_config';
    public const IS_ROOT = 'is_root';

    /**
     * @var EntitiesConfigExtensionInterfaceFactory
     */
    private $extensionFactory;

    public function __construct(
        EntitiesConfigExtensionInterfaceFactory $extensionFactory,
        array $data = []
    ) {
        parent::__construct($data);
        $this->extensionFactory = $extensionFactory;
    }

    public function getEntityCode(): string
    {
        return $this->getData(self::ENTITY_CODE);
    }

    public function setEntityCode(string $entityCode): EntitiesConfigInterface
    {
        return $this->setData(self::ENTITY_CODE, $entityCode);
    }

    public function getBehavior(): string
    {
        return $this->getData(self::BEHAVIOR);
    }

    public function setBehavior(string $behavior): EntitiesConfigInterface
    {
        return $this->setData(self::BEHAVIOR, $behavior);
    }

    public function getMap(): ?string
    {
        return $this->getData(self::MAP);
    }

    public function setMap(string $map): EntitiesConfigInterface
    {
        return $this->setData(self::MAP, $map);
    }

    public function getFields(): array
    {
        return $this->getData(self::FIELDS) ?? [];
    }

    public function setFields(array $fields): EntitiesConfigInterface
    {
        return $this->setData(self::FIELDS, $fields);
    }

    public function getFilters(): ?array
    {
        return $this->getData(self::FILTERS);
    }

    public function setFilters(?array $filters): EntitiesConfigInterface
    {
        return $this->setData(self::FILTERS, $filters);
    }

    public function getSubEntitiesConfig(): array
    {
        return $this->getData(self::SUB_ENTITIES_CONFIG) ?? [];
    }

    public function setSubEntitiesConfig(array $subEntitiesConfig): EntitiesConfigInterface
    {
        return $this->setData(self::SUB_ENTITIES_CONFIG, $subEntitiesConfig);
    }

    public function getIsRoot(): bool
    {
        return $this->getData(self::IS_ROOT) ?: false;
    }

    public function setIsRoot(bool $isRoot): EntitiesConfigInterface
    {
        return $this->setData(self::IS_ROOT, $isRoot);
    }

    public function getExtensionAttributes(): EntitiesConfigExtensionInterface
    {
        if (null === $this->getData(self::EXTENSION_ATTRIBUTES_KEY)) {
            $this->setExtensionAttributes($this->extensionFactory->create());
        }

        return $this->getData(self::EXTENSION_ATTRIBUTES_KEY);
    }

    public function setExtensionAttributes(
        EntitiesConfigExtensionInterface $extensionAttributes
    ): EntitiesConfigInterface {
        return $this->setData(self::EXTENSION_ATTRIBUTES_KEY, $extensionAttributes);
    }
}