Skip to content

Commit

Permalink
feat: Added reader and writer
Browse files Browse the repository at this point in the history
  • Loading branch information
cgardesey committed Jul 31, 2024
1 parent a13a5b9 commit da1f242
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,19 @@ public function findProductAbstractById(int $idProductAbstract): ?ProductAbstrac
{
return $this->getRepository()->findProductAbstractById($idProductAbstract);
}

/**
* {@inheritDoc}
*
* @param \Generated\Shared\Transfer\ProductAbstractTransfer $productTransfer
*
* @return \Generated\Shared\Transfer\ProductAbstractTransfer
* @api
*/
public function saveProduct(ProductAbstractTransfer $productTransfer): ProductAbstractTransfer
{
$productManager = $this->getFactory()->createProductDetailManager();

return $productManager->saveProduct($productTransfer); // Ensure this method exists in ProductManager
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,12 @@ public function createProductDetailReader(): ProductDetailPageReaderInterface
{
return new ProductDetailPagePageReader($this->getRepository());
}

/**
* @return \Pyz\Zed\ProductDetailWidget\Business\Writer\ProductWriterInterface
*/
public function createProductWriter(): ProductWriterInterface
{
return new ProductWriter($this->getEntityManager());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php

/**
* Copyright © [year]-present Spryker Systems GmbH. All rights reserved.
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
*/

namespace Pyz\Zed\ProductDetailPageWidget\Business\Reader;

use Generated\Shared\Transfer\ProductDetailResponseTransfer;
use Generated\Shared\Transfer\ProductAbstractTransfer;
use Pyz\Zed\ProductDetailPageWidget\Persistence\ProductDetailRepositoryInterface;

class ProductDetailPagePageReader implements ProductDetailPageReaderInterface
{
/**
* @var \Pyz\Zed\ProductDetailPageWidget\Persistence\ProductDetailRepositoryInterface
*/
protected $productDetailRepository;

/**
* @param \Pyz\Zed\ProductDetailPageWidget\Persistence\ProductDetailRepositoryInterface $productDetailRepository
*/
public function __construct(ProductDetailRepositoryInterface $productDetailRepository)
{
$this->productDetailRepository = $productDetailRepository;
}

/**
* @param \Generated\Shared\Transfer\ProductAbstractTransfer $productAbstractTransfer
*
* @return \Generated\Shared\Transfer\ProductDetailResponseTransfer
*/
public function findProductAbstractById(ProductAbstractTransfer $productAbstractTransfer): ProductDetailResponseTransfer
{
$productAbstractTransfer->requireId();

$productAbstractEntity = $this->productDetailRepository->findProductAbstractById(
$productAbstractTransfer->getIdProductAbstract()
);

$productDetailResponseTransfer = new ProductDetailResponseTransfer();
if (!$productAbstractEntity) {
return $productDetailResponseTransfer->setIsSuccessful(false);
}

// Assuming ProductDetailResponseTransfer should use ProductAbstractTransfer object
$productDetailResponseTransfer
->setIsSuccessful(true)
->setProductAbstractTransfer($productAbstractTransfer->fromArray($productAbstractEntity->toArray()));

return $productDetailResponseTransfer;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

/**
* Copyright © [year]-present Spryker Systems GmbH. All rights reserved.
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
*/

namespace Pyz\Zed\ProductDetailPageWidget\Business\Writer;

use Generated\Shared\Transfer\ProductResponseTransfer;
use Generated\Shared\Transfer\ProductAbstractTransfer;

interface ProductDetailPageWriterInterface
{
/**
* Specification:
* - Creates or updates a product abstract.
* - Returns a ProductDetailResponseTransfer containing the status and details of the operation.
*
* @param \Generated\Shared\Transfer\ProductAbstractTransfer $productAbstractTransfer
*
* @return \Generated\Shared\Transfer\ProductDetailResponseTransfer
*/
public function saveProductAbstract(ProductAbstractTransfer $productAbstractTransfer): ProductDetailResponseTransfer;
}

0 comments on commit da1f242

Please sign in to comment.