Skip to content

Commit

Permalink
Merge pull request #5884 from spryker/bugfix/glue-8738-successful-res…
Browse files Browse the repository at this point in the history
…ponse-after-failed-add-to-cart

GLUE-8738 Successful response if product is not added to cart
  • Loading branch information
dereuromark committed Aug 16, 2019
2 parents c04480e + ff1cb3b commit 3dbd04e
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 29 deletions.
Expand Up @@ -63,6 +63,7 @@ public function readItem(CartItemRequestTransfer $cartItemRequestTransfer): Quot

if (!$ifRequestedItemIsInQuote) {
$quoteResponseTransfer
->setIsSuccessful(false)
->addError((new QuoteErrorTransfer())
->setErrorIdentifier(CartsRestApiSharedConfig::ERROR_IDENTIFIER_ITEM_NOT_FOUND));
}
Expand Down
Expand Up @@ -92,9 +92,16 @@ public function prepareQuoteResponseTransfer(): QuoteResponseTransfer
*/
public function prepareQuoteResponseTransferWithQuote(): QuoteResponseTransfer
{
$quoteOverride = [
'uuid' => static::TEST_QUOTE_UUID,
'customerReference' => static::TEST_CUSTOMER_REFERENCE,
'idQuote' => static::TEST_ID_QUOTE,
];
$itemOverride = ['groupKey' => static::TEST_SKU, 'sku' => static::TEST_SKU];

/** @var \Generated\Shared\Transfer\QuoteResponseTransfer $quoteResponseTransfer */
$quoteResponseTransfer = (new QuoteResponseBuilder(['isSuccessful' => true]))
->withQuoteTransfer(['uuid' => static::TEST_QUOTE_UUID, 'customerReference' => static::TEST_CUSTOMER_REFERENCE, 'idQuote' => static::TEST_ID_QUOTE])
->withQuoteTransfer((new QuoteBuilder($quoteOverride))->withItem($itemOverride))
->build();

return $quoteResponseTransfer;
Expand Down
Expand Up @@ -78,22 +78,20 @@ public function __construct(
*/
public function addItems(array $itemTransferList, QuoteTransfer $quoteTransfer): QuoteResponseTransfer
{
$quoteResponseTransfer = new QuoteResponseTransfer();
$quoteResponseTransfer->setIsSuccessful(false);
$quoteResponseTransfer->setQuoteTransfer($quoteTransfer);
$quoteResponseTransfer->setCustomer($quoteTransfer->getCustomer());
$quoteResponseTransfer = $this->createQuoteResponseTransfer($quoteTransfer);

if (!$this->isQuoteWriteAllowed($quoteTransfer, $quoteTransfer->getCustomer())) {
return $this->quoteResponseExpander->expand($quoteResponseTransfer);
}

$cartChangeTransfer = $this->createCartChangeTransfer($quoteTransfer);
foreach ($itemTransferList as $itemTransfer) {
$cartChangeTransfer->addItem($itemTransfer);
}
$cartChangeTransfer = $this->createCartChangeTransfer($quoteTransfer, $itemTransferList);

$quoteResponseTransfer = $this->cartFacade->addToCart($cartChangeTransfer);
$updatedQuoteResponseTransfer = $this->quoteFacade->updateQuote($quoteResponseTransfer->getQuoteTransfer());

$mergedQuoteResponseTransfer = $this->mergeQuoteResponseTransfers($quoteResponseTransfer, $updatedQuoteResponseTransfer);

return $this->quoteResponseExpander->expand($this->quoteFacade->updateQuote($quoteResponseTransfer->getQuoteTransfer()));
return $this->quoteResponseExpander->expand($mergedQuoteResponseTransfer);
}

/**
Expand All @@ -104,18 +102,14 @@ public function addItems(array $itemTransferList, QuoteTransfer $quoteTransfer):
*/
public function addValidItems(array $itemTransferList, QuoteTransfer $quoteTransfer): QuoteResponseTransfer
{
$quoteResponseTransfer = new QuoteResponseTransfer();
$quoteResponseTransfer->setIsSuccessful(false);
$quoteResponseTransfer->setQuoteTransfer($quoteTransfer);
$quoteResponseTransfer->setCustomer($quoteTransfer->getCustomer());
$quoteResponseTransfer = $this->createQuoteResponseTransfer($quoteTransfer);

if (!$this->isQuoteWriteAllowed($quoteTransfer, $quoteTransfer->getCustomer())) {
return $this->quoteResponseExpander->expand($quoteResponseTransfer);
}

$cartChangeTransfer = $this->createCartChangeTransfer($quoteTransfer);
foreach ($itemTransferList as $itemTransfer) {
$cartChangeTransfer->addItem($itemTransfer);
}
$cartChangeTransfer = $this->createCartChangeTransfer($quoteTransfer, $itemTransferList);

$quoteTransfer = $this->cartFacade->addValid($cartChangeTransfer);

return $this->quoteResponseExpander->expand($this->quoteFacade->updateQuote($quoteTransfer));
Expand All @@ -129,20 +123,14 @@ public function addValidItems(array $itemTransferList, QuoteTransfer $quoteTrans
*/
public function removeItems(array $itemTransferList, QuoteTransfer $quoteTransfer): QuoteResponseTransfer
{
$quoteResponseTransfer = new QuoteResponseTransfer();
$quoteResponseTransfer->setIsSuccessful(false);
$quoteResponseTransfer->setQuoteTransfer($quoteTransfer);
$quoteResponseTransfer->setCustomer($quoteTransfer->getCustomer());
$quoteResponseTransfer = $this->createQuoteResponseTransfer($quoteTransfer);

if (!$this->isQuoteWriteAllowed($quoteTransfer, $quoteTransfer->getCustomer())) {
return $this->quoteResponseExpander->expand($quoteResponseTransfer);
}

$cartChangeTransfer = $this->createCartChangeTransfer($quoteTransfer);
foreach ($itemTransferList as $itemTransfer) {
if (!empty($itemTransfer)) {
$cartChangeTransfer->addItem($itemTransfer);
}
}
$cartChangeTransfer = $this->createCartChangeTransfer($quoteTransfer, $itemTransferList);

$cartChangeTransfer = $this->cartChangeRequestExpander->removeItemRequestExpand($cartChangeTransfer);
$quoteTransfer = $this->cartFacade->remove($cartChangeTransfer);
$this->quoteFacade->updateQuote($quoteTransfer);
Expand Down Expand Up @@ -211,10 +199,11 @@ protected function isQuoteWriteAllowed(QuoteTransfer $quoteTransfer, CustomerTra

/**
* @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
* @param \Generated\Shared\Transfer\ItemTransfer[] $itemTransferList
*
* @return \Generated\Shared\Transfer\CartChangeTransfer
*/
protected function createCartChangeTransfer(QuoteTransfer $quoteTransfer): CartChangeTransfer
protected function createCartChangeTransfer(QuoteTransfer $quoteTransfer, array $itemTransferList): CartChangeTransfer
{
$items = $quoteTransfer->getItems();

Expand All @@ -225,6 +214,42 @@ protected function createCartChangeTransfer(QuoteTransfer $quoteTransfer): CartC
$cartChangeTransfer = new CartChangeTransfer();
$cartChangeTransfer->setQuote($quoteTransfer);

foreach ($itemTransferList as $itemTransfer) {
$cartChangeTransfer->addItem($itemTransfer);
}

return $cartChangeTransfer;
}

/**
* @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
*
* @return \Generated\Shared\Transfer\QuoteResponseTransfer
*/
protected function createQuoteResponseTransfer(QuoteTransfer $quoteTransfer): QuoteResponseTransfer
{
return (new QuoteResponseTransfer())
->setIsSuccessful(false)
->setQuoteTransfer($quoteTransfer)
->setCustomer($quoteTransfer->getCustomer());
}

/**
* @param \Generated\Shared\Transfer\QuoteResponseTransfer $quoteResponseTransfer
* @param \Generated\Shared\Transfer\QuoteResponseTransfer $updatedQuoteResponseTransfer
*
* @return \Generated\Shared\Transfer\QuoteResponseTransfer
*/
protected function mergeQuoteResponseTransfers(
QuoteResponseTransfer $quoteResponseTransfer,
QuoteResponseTransfer $updatedQuoteResponseTransfer
): QuoteResponseTransfer {
$quoteResponseTransfer->setIsSuccessful($updatedQuoteResponseTransfer->getIsSuccessful() && $quoteResponseTransfer->getIsSuccessful());
foreach ($updatedQuoteResponseTransfer->getErrors() as $quoteErrorTransfer) {
$quoteResponseTransfer->addError($quoteErrorTransfer);
}
$quoteResponseTransfer->setQuoteTransfer($updatedQuoteResponseTransfer->getQuoteTransfer());

return $quoteResponseTransfer;
}
}

0 comments on commit 3dbd04e

Please sign in to comment.