Skip to content

Commit 8d79c7a

Browse files
product list entity is now created with factory
1 parent 4a5df04 commit 8d79c7a

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

src/Model/Product/List/ProductListFacade.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ class ProductListFacade
1818
* @param \Shopsys\FrameworkBundle\Model\Product\List\ProductListFactory $productListFactory
1919
* @param \Shopsys\FrameworkBundle\Model\Product\List\ProductListRepository $productListRepository
2020
* @param \Shopsys\FrameworkBundle\Model\Product\List\ProductListDataFactory $productListDataFactory
21+
* @param \Shopsys\FrameworkBundle\Model\Product\List\ProductListItemFactory $productListItemFactory
2122
*/
2223
public function __construct(
2324
protected readonly EntityManagerInterface $entityManager,
2425
protected readonly ProductListFactory $productListFactory,
2526
protected readonly ProductListRepository $productListRepository,
2627
protected readonly ProductListDataFactory $productListDataFactory,
28+
protected readonly ProductListItemFactory $productListItemFactory,
2729
) {
2830
}
2931

@@ -50,7 +52,7 @@ public function addProductToList(ProductList $productList, Product $product): Pr
5052
if ($productList->findProductListItemByProduct($product) !== null) {
5153
throw new ProductAlreadyInListException(sprintf('Product with UUID %s already exists in the list.', $product->getUuid()));
5254
}
53-
$newProductListItem = new ProductListItem($productList, $product);
55+
$newProductListItem = $this->productListItemFactory->create($productList, $product);
5456
$this->entityManager->persist($newProductListItem);
5557

5658
$productList->addItem($newProductListItem);
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Shopsys\FrameworkBundle\Model\Product\List;
6+
7+
use Shopsys\FrameworkBundle\Component\EntityExtension\EntityNameResolver;
8+
use Shopsys\FrameworkBundle\Model\Product\Product;
9+
10+
class ProductListItemFactory
11+
{
12+
/**
13+
* @param \Shopsys\FrameworkBundle\Component\EntityExtension\EntityNameResolver $entityNameResolver
14+
*/
15+
public function __construct(
16+
protected readonly EntityNameResolver $entityNameResolver,
17+
) {
18+
}
19+
20+
/**
21+
* @param \Shopsys\FrameworkBundle\Model\Product\List\ProductList $productList
22+
* @param \Shopsys\FrameworkBundle\Model\Product\Product $product
23+
* @return \Shopsys\FrameworkBundle\Model\Product\List\ProductListItem
24+
*/
25+
public function create(ProductList $productList, Product $product): ProductListItem
26+
{
27+
$productListClassName = $this->entityNameResolver->resolve(ProductListItem::class);
28+
29+
return new $productListClassName($productList, $product);
30+
}
31+
}

0 commit comments

Comments
 (0)