/**
  * @param string $entityType
  * @param object $entity
  * @return object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entityType, $entity)
 {
     /** @var \Magento\Catalog\Api\Data\ProductInterface $entity */
     foreach ($this->sampleRepository->getList($entity->getSku()) as $sample) {
         $this->sampleRepository->delete($sample->getId());
     }
     return $entity;
 }
示例#2
0
 /**
  * @param string $entityType
  * @param object $entity
  * @param array $arguments
  * @return \Magento\Catalog\Api\Data\ProductInterface|object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entityType, $entity, $arguments = [])
 {
     /** @var $entity \Magento\Catalog\Api\Data\ProductInterface */
     if ($entity->getTypeId() != \Magento\Downloadable\Model\Product\Type::TYPE_DOWNLOADABLE) {
         return $entity;
     }
     /** @var \Magento\Catalog\Api\Data\ProductInterface $entity */
     foreach ($this->sampleRepository->getList($entity->getSku()) as $sample) {
         $this->sampleRepository->delete($sample->getId());
     }
     return $entity;
 }
 /**
  * @param string $entityType
  * @param object $entity
  * @return object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entityType, $entity)
 {
     /** @var \Magento\Catalog\Api\Data\ProductInterface $entity */
     foreach ($this->sampleRepository->getList($entity->getSku()) as $sample) {
         $this->sampleRepository->delete($sample->getId());
     }
     $samples = $entity->getExtensionAttributes()->getDownloadableProductSamples() ?: [];
     foreach ($samples as $sample) {
         $this->sampleRepository->save($entity->getSku(), $sample, !(bool) $entity->getStoreId());
     }
     return $entity;
 }
 public function testExecuteNonDownloadable()
 {
     /** @var ProductInterface|\PHPUnit_Framework_MockObject_MockObject $entityMock */
     $entityMock = $this->getMockBuilder(ProductInterface::class)->setMethods(['getTypeId', 'getExtensionAttributes', 'getSku', 'getStoreId'])->getMockForAbstractClass();
     $entityMock->expects($this->once())->method('getTypeId')->willReturn(Type::TYPE_DOWNLOADABLE . 'some');
     $entityMock->expects($this->never())->method('getExtensionAttributes');
     $entityMock->expects($this->never())->method('getSku');
     $entityMock->expects($this->never())->method('getStoreId');
     $this->sampleRepositoryMock->expects($this->never())->method('getList');
     $this->sampleRepositoryMock->expects($this->never())->method('save');
     $this->sampleRepositoryMock->expects($this->never())->method('delete');
     $this->assertEquals($entityMock, $this->model->execute($entityMock));
 }
示例#5
0
 /**
  * @param object $entity
  * @param array $arguments
  * @return \Magento\Catalog\Api\Data\ProductInterface|object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entity, $arguments = [])
 {
     /** @var $entity \Magento\Catalog\Api\Data\ProductInterface */
     if ($entity->getTypeId() != Type::TYPE_DOWNLOADABLE) {
         return $entity;
     }
     /** @var \Magento\Downloadable\Api\Data\SampleInterface[] $samples */
     $samples = $entity->getExtensionAttributes()->getDownloadableProductSamples() ?: [];
     foreach ($samples as $sample) {
         $sample->setId(null);
         $this->sampleRepository->save($entity->getSku(), $sample, !(bool) $entity->getStoreId());
     }
     return $entity;
 }
示例#6
0
 /**
  * @param object $entity
  * @param array $arguments
  * @return \Magento\Catalog\Api\Data\ProductInterface|object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entity, $arguments = [])
 {
     /** @var $entity \Magento\Catalog\Api\Data\ProductInterface */
     if ($entity->getTypeId() != \Magento\Downloadable\Model\Product\Type::TYPE_DOWNLOADABLE) {
         return $entity;
     }
     $entityExtension = $entity->getExtensionAttributes();
     $samples = $this->sampleRepository->getSamplesByProduct($entity);
     if ($samples) {
         $entityExtension->setDownloadableProductSamples($samples);
     }
     $entity->setExtensionAttributes($entityExtension);
     return $entity;
 }
 /**
  * @param \Magento\Catalog\Api\Data\ProductInterface $product
  * @param \Magento\Downloadable\Api\Data\SampleInterface[] $samples
  * @return $this
  */
 protected function saveSamples(\Magento\Catalog\Api\Data\ProductInterface $product, array $samples)
 {
     $existingSampleIds = [];
     $extensionAttributes = $product->getExtensionAttributes();
     if ($extensionAttributes !== null) {
         $existingSamples = $extensionAttributes->getDownloadableProductSamples();
         if ($existingSamples !== null) {
             foreach ($existingSamples as $existingSample) {
                 $existingSampleIds[] = $existingSample->getId();
             }
         }
     }
     $updatedSampleIds = [];
     foreach ($samples as $sample) {
         $sampleId = $sample->getId();
         if ($sampleId) {
             $updatedSampleIds[] = $sampleId;
         }
         $this->sampleRepository->save($product->getSku(), $sample);
     }
     $sampleIdsToDelete = array_diff($existingSampleIds, $updatedSampleIds);
     foreach ($sampleIdsToDelete as $sampleId) {
         $this->sampleRepository->delete($sampleId);
     }
     return $this;
 }
 /**
  * @param \Magento\Catalog\Model\Product $product
  * @return \Magento\Catalog\Model\Product
  */
 public function afterLoad(\Magento\Catalog\Model\Product $product)
 {
     if ($product->getTypeId() != \Magento\Downloadable\Model\Product\Type::TYPE_DOWNLOADABLE) {
         return $product;
     }
     $productExtension = $product->getExtensionAttributes() ?: $this->productExtensionFactory->create();
     $links = $this->linkRepository->getLinksByProduct($product);
     if ($links !== null) {
         $productExtension->setDownloadableProductLinks($links);
     }
     $samples = $this->sampleRepository->getSamplesByProduct($product);
     if ($samples !== null) {
         $productExtension->setDownloadableProductSamples($samples);
     }
     $product->setExtensionAttributes($productExtension);
     return $product;
 }
示例#9
0
 /**
  * @param string $entityType
  * @param object $entity
  * @param array $arguments
  * @return \Magento\Catalog\Api\Data\ProductInterface|object
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function execute($entityType, $entity, $arguments = [])
 {
     /** @var $entity \Magento\Catalog\Api\Data\ProductInterface */
     if ($entity->getTypeId() != \Magento\Downloadable\Model\Product\Type::TYPE_DOWNLOADABLE) {
         return $entity;
     }
     $samples = $entity->getExtensionAttributes()->getDownloadableProductSamples() ?: [];
     $updatedSamples = [];
     $oldSamples = $this->sampleRepository->getList($entity->getSku());
     foreach ($samples as $sample) {
         if ($sample->getId()) {
             $updatedSamples[$sample->getId()] = $sample->getId();
         }
         $this->sampleRepository->save($entity->getSku(), $sample, !(bool) $entity->getStoreId());
     }
     /** @var \Magento\Catalog\Api\Data\ProductInterface $entity */
     foreach ($oldSamples as $sample) {
         if (!isset($updatedSamples[$sample->getId()])) {
             $this->sampleRepository->delete($sample->getId());
         }
     }
     return $entity;
 }