<?php declare(strict_types=1);namespace Neon\Configurator\Core\Content\Configuration;use Neon\Configurator\Core\Content\Calculation\CalculationEntity;use Neon\Configurator\Core\Content\Commoncalculation\CommoncalculationCollection;use Neon\Configurator\Core\Content\ConfigurationMedia\ConfigurationMediaCollection;use Neon\Configurator\Core\Content\Field\FieldCollection;use Neon\Configurator\Core\Content\Field\FieldEntity;use Neon\Configurator\Core\Content\Fieldgroup\FieldgroupCollection;use Shopware\Core\Content\Media\MediaCollection;use Shopware\Core\Content\Product\Aggregate\ProductMedia\ProductMediaEntity;use Shopware\Core\Framework\DataAbstractionLayer\Entity;use Shopware\Core\Framework\DataAbstractionLayer\EntityIdTrait;use Shopware\Core\Framework\DataAbstractionLayer\Field\Field;class ConfigurationEntity extends Entity{ use EntityIdTrait; const TRANSLATABLE_FIELDS = [ 'infoTextBefore', 'infoTextAfter', 'cartButtonLabel' ]; const BLOCKPRICE_SELECTION_MODE_CALCULATION = 'calculation'; const BLOCKPRICE_SELECTION_MODE_FIELD = 'field'; const MEDIA_VISIBILITY_HIDDEN = 'hidden'; const MEDIA_VISIBILITY_REPLACE = 'replace'; const MEDIA_VISIBILITY_APPEND = 'add_after'; const MEDIA_VISIBILITY_PREPEND = 'add_before'; const PRICE_DISPLAY_BOTTOM = 'bottom'; const PRICE_DISPLAY_TOP = 'top'; const PRICE_DISPLAY_HIDDEN = 'hidden'; protected ?string $name; protected $isEditable = true; protected $layoutPriceDisplayMode; protected $layoutIsPriceAlignmentRight; protected $cartButtonLabel = ''; protected $cartbuttonDisplayMode = true; protected $fieldLabelDisplayMode = 'left'; protected $stackLineItemsWithSameConfiguration = false; protected $quantityMode = 'default'; protected $blockpriceSelectionMode = 'quantity'; protected $addMediaToProduct = 'hidden'; /** @var FieldgroupCollection */ protected $fieldgroups; /** * @var CommoncalculationCollection */ protected $commoncalculations; protected $priceCalculation; protected $basePriceCalculation; protected $cheapestPriceCalculation; protected $priceCalculationId; protected $basePriceCalculationId; protected $quantityCalculation; protected $quantityCalculationId; protected $quantityField; protected $quantityFieldId; protected $blockpriceQuantityField; protected $blockpriceQuantityFieldId; protected $blockpriceQuantityCalculation; protected $blockpriceQuantityCalculationId; protected $weightCalculationId; protected $priceUpdateMode; protected $weightCalculation; protected $deliverytimeCalculationId; protected $deliverytimeCalculation; protected $deliverytimeMax; protected $deliverytimeUnit; protected $deliverytimeName; protected $infoTextBefore; protected $infoTextAfter; protected $blockPriceUnitlabel; protected $isBasePriceCalculationActive; protected $basePriceUnit; protected $isUrlUpdateDisabled; protected $medias; protected $showFromPriceprefixForUntouchedConfiguration; protected $mediaDisplayMode; /** * @var mixed */ protected $cheapestPrice; /** * @return mixed */ public function getMediaDisplayMode() { return $this->mediaDisplayMode; } /** * @param mixed $mediaDisplayMode */ public function setMediaDisplayMode($mediaDisplayMode): void { $this->mediaDisplayMode = $mediaDisplayMode; } public function __construct() { } /** * @return string|null */ public function getName(): ?string { return $this->name; } /** * @param string|null $name */ public function setName(?string $name): void { $this->name = $name; } public function getCommoncalculations(): CommoncalculationCollection { return $this->commoncalculations; } public function setCommoncalculations(CommoncalculationCollection $commoncalculations): void { $this->commoncalculations = $commoncalculations; } /** * @return CalculationEntity */ public function getPriceCalculation() { return $this->priceCalculation; } /** * @param CalculationEntity $priceCalculation */ public function setPriceCalculation($priceCalculation): void { $this->priceCalculation = $priceCalculation; } /** * @return mixed */ public function getPriceCalculationId() { return $this->priceCalculationId; } /** * @param mixed $priceCalculationId */ public function setPriceCalculationId($priceCalculationId): void { $this->priceCalculationId = $priceCalculationId; } /** * @return mixed */ public function getBasePriceCalculation() { return $this->basePriceCalculation; } /** * @param mixed $basePriceCalculation * @return ConfigurationEntity */ public function setBasePriceCalculation($basePriceCalculation) { $this->basePriceCalculation = $basePriceCalculation; return $this; } /** * @return mixed */ public function getBasePriceCalculationId() { return $this->basePriceCalculationId; } /** * @param mixed $basePriceCalculationId * @return ConfigurationEntity */ public function setBasePriceCalculationId($basePriceCalculationId) { $this->basePriceCalculationId = $basePriceCalculationId; return $this; } /** * @return mixed */ public function getWeightCalculationId() { return $this->weightCalculationId; } /** * @param mixed $weightCalculationId * @return ConfigurationEntity */ public function setWeightCalculationId($weightCalculationId) { $this->weightCalculationId = $weightCalculationId; return $this; } /** * @return mixed */ public function getWeightCalculation() { return $this->weightCalculation; } /** * @param mixed $weightCalculation * @return ConfigurationEntity */ public function setWeightCalculation($weightCalculation) { $this->weightCalculation = $weightCalculation; return $this; } /** * @return mixed */ public function getIsEditable() { return $this->isEditable; } /** * @param mixed $isEditable * @return ConfigurationEntity */ public function setIsEditable($isEditable) { $this->isEditable = $isEditable; return $this; } /** * @return bool */ public function isStackLineItemsWithSameConfiguration(): bool { return $this->stackLineItemsWithSameConfiguration; } /** * @param bool $stackLineItemsWithSameConfiguration * @return ConfigurationEntity */ public function setStackLineItemsWithSameConfiguration(bool $stackLineItemsWithSameConfiguration): ConfigurationEntity { $this->stackLineItemsWithSameConfiguration = $stackLineItemsWithSameConfiguration; return $this; } /** * @return mixed */ public function getQuantityCalculation() { return $this->quantityCalculation; } /** * @param mixed $quantityCalculation * @return ConfigurationEntity */ public function setQuantityCalculation($quantityCalculation) { $this->quantityCalculation = $quantityCalculation; return $this; } /** * @return mixed */ public function getQuantityCalculationId() { return $this->quantityCalculationId; } /** * @param mixed $quantityCalculationId * @return ConfigurationEntity */ public function setQuantityCalculationId($quantityCalculationId) { $this->quantityCalculationId = $quantityCalculationId; return $this; } /** * @return FieldgroupCollection */ public function getFieldgroups() { return $this->fieldgroups; } /** * @param FieldgroupCollection $fieldgroups */ public function setFieldgroups(FieldgroupCollection $fieldgroups): void { $this->fieldgroups = $fieldgroups; } /** * @return FieldCollection */ public function getFields() { $fields = []; foreach ($this->fieldgroups as $fieldgroup) { foreach ($fieldgroup->getFields() as $field) { $fields[] = $field; } } return new FieldCollection($fields); } /** * @return mixed */ public function getDeliverytimeCalculationId() { return $this->deliverytimeCalculationId; } /** * @param mixed $deliverytimeCalculationId * @return ConfigurationEntity */ public function setDeliverytimeCalculationId($deliverytimeCalculationId) { $this->deliverytimeCalculationId = $deliverytimeCalculationId; return $this; } /** * @return mixed */ public function getDeliverytimeCalculation() { return $this->deliverytimeCalculation; } /** * @param mixed $deliverytimeCalculation * @return ConfigurationEntity */ public function setDeliverytimeCalculation($deliverytimeCalculation) { $this->deliverytimeCalculation = $deliverytimeCalculation; return $this; } /** * @return mixed */ public function getDeliverytimeMax() { return $this->deliverytimeMax; } /** * @param mixed $deliverytimeMax * @return ConfigurationEntity */ public function setDeliverytimeMax($deliverytimeMax) { $this->deliverytimeMax = $deliverytimeMax; return $this; } /** * @return mixed */ public function getDeliverytimeUnit() { return $this->deliverytimeUnit; } /** * @param mixed $deliverytimeUnit * @return ConfigurationEntity */ public function setDeliverytimeUnit($deliverytimeUnit) { $this->deliverytimeUnit = $deliverytimeUnit; return $this; } /** * @return mixed */ public function getDeliverytimeName() { return $this->deliverytimeName; } /** * @param mixed $deliverytimeName * @return ConfigurationEntity */ public function setDeliverytimeName($deliverytimeName) { $this->deliverytimeName = $deliverytimeName; return $this; } /** * @return mixed */ public function getInfoTextBefore() { return $this->infoTextBefore; } /** * @param mixed $infoTextBefore */ public function setInfoTextBefore($infoTextBefore): void { $this->infoTextBefore = $infoTextBefore; } /** * @return mixed */ public function getInfoTextAfter() { return $this->infoTextAfter; } /** * @param mixed $infoTextAfter */ public function setInfoTextAfter($infoTextAfter): void { $this->infoTextAfter = $infoTextAfter; } /** * @return mixed */ public function getBlockPriceUnitlabel() { return $this->blockPriceUnitlabel; } /** * @param mixed $blockPriceUnitlabel * @return ConfigurationEntity */ public function setBlockPriceUnitlabel($blockPriceUnitlabel) { $this->blockPriceUnitlabel = $blockPriceUnitlabel; return $this; } /** * @return mixed */ public function getIsBasePriceCalculationActive() { return $this->isBasePriceCalculationActive; } /** * @param mixed $isBasePriceCalculationActive * @return ConfigurationEntity */ public function setIsBasePriceCalculationActive($isBasePriceCalculationActive) { $this->isBasePriceCalculationActive = $isBasePriceCalculationActive; return $this; } /** * @return mixed */ public function getBasePriceUnit() { return $this->basePriceUnit; } /** * @param mixed $basePriceUnit * @return ConfigurationEntity */ public function setBasePriceUnit($basePriceUnit) { $this->basePriceUnit = $basePriceUnit; return $this; } public function getField($fieldKey) { return $this->getFields()->filter(function (FieldEntity $field) use ($fieldKey) { return $fieldKey == $field->getKey(); })->first(); } /** * @return string */ public function getFieldLabelDisplayMode(): string { return $this->fieldLabelDisplayMode; } /** * @param string $fieldLabelDisplayMode * @return ConfigurationEntity */ public function setFieldLabelDisplayMode(string $fieldLabelDisplayMode): ConfigurationEntity { $this->fieldLabelDisplayMode = $fieldLabelDisplayMode; return $this; } /** * @return string */ public function getQuantityMode(): string { return $this->quantityMode; } /** * @param string $quantityMode * @return ConfigurationEntity */ public function setQuantityMode(string $quantityMode): ConfigurationEntity { $this->quantityMode = $quantityMode; return $this; } /** * @return mixed */ public function getQuantityField() { return $this->quantityField; } /** * @param mixed $quantityField * @return ConfigurationEntity */ public function setQuantityField($quantityField) { $this->quantityField = $quantityField; return $this; } /** * @return mixed */ public function getQuantityFieldId() { return $this->quantityFieldId; } /** * @param mixed $quantityFieldId * @return ConfigurationEntity */ public function setQuantityFieldId($quantityFieldId) { $this->quantityFieldId = $quantityFieldId; return $this; } /** * @return mixed */ public function getBlockpriceQuantityField() { return $this->blockpriceQuantityField; } /** * @param mixed $blockpriceQuantityField * @return ConfigurationEntity */ public function setBlockpriceQuantityField($blockpriceQuantityField) { $this->blockpriceQuantityField = $blockpriceQuantityField; return $this; } /** * @return mixed */ public function getBlockpriceQuantityFieldId() { return $this->blockpriceQuantityFieldId; } /** * @param mixed $blockpriceQuantityFieldId * @return ConfigurationEntity */ public function setBlockpriceQuantityFieldId($blockpriceQuantityFieldId) { $this->blockpriceQuantityFieldId = $blockpriceQuantityFieldId; return $this; } /** * @return string */ public function getBlockpriceSelectionMode(): string { return $this->blockpriceSelectionMode; } /** * @param string $blockpriceSelectionMode * @return ConfigurationEntity */ public function setBlockpriceSelectionMode(string $blockpriceSelectionMode): ConfigurationEntity { $this->blockpriceSelectionMode = $blockpriceSelectionMode; return $this; } /** * @return mixed */ public function getBlockpriceQuantityCalculation() { return $this->blockpriceQuantityCalculation; } /** * @param mixed $blockpriceQuantityCalculation * @return ConfigurationEntity */ public function setBlockpriceQuantityCalculation($blockpriceQuantityCalculation) { $this->blockpriceQuantityCalculation = $blockpriceQuantityCalculation; return $this; } /** * @return mixed */ public function getBlockpriceQuantityCalculationId() { return $this->blockpriceQuantityCalculationId; } /** * @param mixed $blockpriceQuantityCalculationId * @return ConfigurationEntity */ public function setBlockpriceQuantityCalculationId($blockpriceQuantityCalculationId) { $this->blockpriceQuantityCalculationId = $blockpriceQuantityCalculationId; return $this; } /** * @return mixed */ public function getIsUrlUpdateDisabled() { return $this->isUrlUpdateDisabled; } /** * @param mixed $isUrlUpdateDisabled * @return ConfigurationEntity */ public function setIsUrlUpdateDisabled($isUrlUpdateDisabled) { $this->isUrlUpdateDisabled = $isUrlUpdateDisabled; return $this; } /** * @return ConfigurationMediaCollection */ public function getMedias() { return $this->medias; } /** * @param mixed $medias * @return ConfigurationEntity */ public function setMedias($medias) { $this->medias = $medias; return $this; } public function setInitialVisibleMedias($initialVisibleMedias) { $this->visibleMedias = $initialVisibleMedias; return $this; } /** * @return string */ public function getAddMediaToProduct(): string { return $this->addMediaToProduct; } /** * @param string $addMediaToProduct * @return ConfigurationEntity */ public function setAddMediaToProduct(string $addMediaToProduct): ConfigurationEntity { $this->addMediaToProduct = $addMediaToProduct; return $this; } /** * @return mixed */ public function getCheapestPrice() { return $this->cheapestPrice; } /** * @param mixed $cheapestPrice */ public function setCheapestPrice($cheapestPrice): void { $this->cheapestPrice = $cheapestPrice; } /** * @return mixed */ public function getShowFromPriceprefixForUntouchedConfiguration() { return $this->showFromPriceprefixForUntouchedConfiguration; } /** * @param mixed $showFromPriceprefixForUntouchedConfiguration */ public function setShowFromPriceprefixForUntouchedConfiguration($showFromPriceprefixForUntouchedConfiguration): void { $this->showFromPriceprefixForUntouchedConfiguration = $showFromPriceprefixForUntouchedConfiguration; } /** * @return string */ public function getLayoutPriceDisplayMode(): string { return $this->layoutPriceDisplayMode; } /** * @param string $layoutPriceDisplayMode */ public function setLayoutPriceDisplayMode(string $layoutPriceDisplayMode): void { $this->layoutPriceDisplayMode = $layoutPriceDisplayMode; } /** * @return mixed */ public function getCartButtonLabel() { return $this->cartButtonLabel; } /** * @param mixed $cartButtonLabel */ public function setCartButtonLabel($cartButtonLabel): void { $this->cartButtonLabel = $cartButtonLabel; } /** * @return bool */ public function getCartbuttonDisplayMode(): bool { return $this->cartbuttonDisplayMode; } /** * @param bool $cartbuttonDisplayMode */ public function setCartbuttonDisplayMode(bool $cartbuttonDisplayMode): void { $this->cartbuttonDisplayMode = $cartbuttonDisplayMode; } /** * @return mixed */ public function getPriceUpdateMode() { return $this->priceUpdateMode; } /** * @param mixed $priceUpdateMode */ public function setPriceUpdateMode($priceUpdateMode): void { $this->priceUpdateMode = $priceUpdateMode; } /** * @return mixed */ public function getLayoutIsPriceAlignmentRight() { return $this->layoutIsPriceAlignmentRight; } /** * @param mixed $layoutIsPriceAlignmentRight */ public function setLayoutIsPriceAlignmentRight($layoutIsPriceAlignmentRight): void { $this->layoutIsPriceAlignmentRight = $layoutIsPriceAlignmentRight; } /** * @return mixed */ public function getCheapestPriceCalculation() { return $this->cheapestPriceCalculation; } /** * @param mixed $cheapestPriceCalculation */ public function setCheapestPriceCalculation($cheapestPriceCalculation): void { $this->cheapestPriceCalculation = $cheapestPriceCalculation; } }