/** * @param \Generated\Shared\Transfer\ProductAbstractTransfer $productAbstractTransfer * * @return void */ protected function createProductAbstractAttributes(ProductAbstractTransfer $productAbstractTransfer) { $idProductAbstract = $productAbstractTransfer->getIdProductAbstract(); foreach ($productAbstractTransfer->getLocalizedAttributes() as $localizedAttributes) { $locale = $localizedAttributes->getLocale(); if ($this->hasProductAbstractAttributes($idProductAbstract, $locale)) { continue; } $encodedAttributes = $this->encodeAttributes($localizedAttributes->getAttributes()); $productAbstractAttributesEntity = new SpyProductAbstractLocalizedAttributes(); $productAbstractAttributesEntity->setFkProductAbstract($idProductAbstract)->setFkLocale($locale->getIdLocale())->setName($localizedAttributes->getName())->setAttributes($encodedAttributes); $productAbstractAttributesEntity->save(); } }
/** * @param \Orm\Zed\Product\Persistence\SpyProductAbstract $abstractProductEntity * @param \Orm\Zed\Product\Persistence\SpyProductAbstractLocalizedAttributes $localizedAttributeEntity * @param array $abstractProductAttributes * * @return \Generated\Shared\Transfer\ProductVariantTransfer */ protected function hydrateAbstractProductVariant(SpyProductAbstract $abstractProductEntity, SpyProductAbstractLocalizedAttributes $localizedAttributeEntity, array $abstractProductAttributes) { $productVariantTransfer = new ProductVariantTransfer(); $abstractProduct = $abstractProductEntity->toArray(); unset($abstractProduct['attributes']); $productVariantTransfer->fromArray($abstractProduct, true); $localizedAttributes = $localizedAttributeEntity->toArray(); unset($localizedAttributes['attributes']); $productVariantTransfer->fromArray($localizedAttributes, true); $productVariantTransfer->setLocaleName($localizedAttributeEntity->getLocale()->getLocaleName()); $localizedAttributes = array_merge($abstractProductAttributes, Json::decode($localizedAttributeEntity->getAttributes(), true)); $productVariantTransfer->setAttributes($localizedAttributes); return $productVariantTransfer; }