Skip to content

Cart item factory OOP pattern #40128

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: 2.4-develop
Choose a base branch
from
6 changes: 4 additions & 2 deletions app/code/Magento/QuoteGraphQl/Model/AddProductsToCart.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ class AddProductsToCart
* @param AddProductsToCartService $addProductsToCartService
* @param ScopeConfigInterface $scopeConfig
* @param PrecursorInterface $cartItemPrecursor
* @param CartItemFactory $cartItemFactory
*/
public function __construct(
private readonly GetCartForUser $getCartForUser,
private readonly AddProductsToCartService $addProductsToCartService,
private readonly ScopeConfigInterface $scopeConfig,
private readonly PrecursorInterface $cartItemPrecursor
private readonly PrecursorInterface $cartItemPrecursor,
private readonly CartItemFactory $cartItemFactory
) {
}

Expand All @@ -53,7 +55,7 @@ public function execute($context, ?array $args): array
$cartItemsData = $this->cartItemPrecursor->process($cartItemsData, $context);
$cartItems = [];
foreach ($cartItemsData as $cartItemData) {
$cartItems[] = (new CartItemFactory())->create($cartItemData);
$cartItems[] = $this->cartItemFactory->create($cartItemData);
}

/** @var AddProductsToCartOutput $addProductsToCartOutput */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ class AddToCart implements ResolverInterface
*/
private $cartItemsRequestBuilder;

/**
* @var CartItemFactory
*/
private $cartItemFactory;

/**
* @param WishlistResourceModel $wishlistResource
* @param WishlistFactory $wishlistFactory
Expand All @@ -86,6 +91,7 @@ class AddToCart implements ResolverInterface
* @param CreateEmptyCartForCustomer $createEmptyCartForCustomer
* @param AddProductsToCartService $addProductsToCart
* @param CartItemsRequestBuilder $cartItemsRequestBuilder
* @param CartItemFactory $cartItemFactory
*/
public function __construct(
WishlistResourceModel $wishlistResource,
Expand All @@ -96,7 +102,8 @@ public function __construct(
LocaleQuantityProcessor $quantityProcessor,
CreateEmptyCartForCustomer $createEmptyCartForCustomer,
AddProductsToCartService $addProductsToCart,
CartItemsRequestBuilder $cartItemsRequestBuilder
CartItemsRequestBuilder $cartItemsRequestBuilder,
CartItemFactory $cartItemFactory
) {
$this->wishlistResource = $wishlistResource;
$this->wishlistFactory = $wishlistFactory;
Expand All @@ -107,6 +114,7 @@ public function __construct(
$this->createEmptyCartForCustomer = $createEmptyCartForCustomer;
$this->addProductsToCartService = $addProductsToCart;
$this->cartItemsRequestBuilder = $cartItemsRequestBuilder;
$this->cartItemFactory = $cartItemFactory;
}

/**
Expand Down Expand Up @@ -164,7 +172,7 @@ public function resolve(
$item->getProduct()->setDisableAddToCart($disableAddToCart);

$cartItemData = $this->cartItemsRequestBuilder->build($item);
$cartItem = (new CartItemFactory())->create($cartItemData);
$cartItem = $this->cartItemFactory->create($cartItemData);

/** @var AddProductsToCartOutput $addProductsToCartOutput */
$addProductsToCartOutput = $this->addProductsToCartService->execute($maskedCartId, [$cartItem]);
Expand Down