Skip to content

Commit 8c1e386

Browse files
rachanarachana
authored andcommitted
BUG#AC-6920:Masked quote ID is not always generated
1 parent 4a1f1b2 commit 8c1e386

File tree

1 file changed

+44
-2
lines changed

1 file changed

+44
-2
lines changed

app/code/Magento/QuoteGraphQl/Model/Resolver/MaskedCartId.php

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77

88
namespace Magento\QuoteGraphQl\Model\Resolver;
99

10+
use Magento\Framework\Exception\AlreadyExistsException;
1011
use Magento\Framework\Exception\LocalizedException;
1112
use Magento\Framework\Exception\NoSuchEntityException;
1213
use Magento\Framework\GraphQl\Config\Element\Field;
1314
use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException;
1415
use Magento\Framework\GraphQl\Query\ResolverInterface;
1516
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
1617
use Magento\Quote\Model\Quote;
18+
use Magento\Quote\Model\QuoteIdMaskFactory;
1719
use Magento\Quote\Model\QuoteIdToMaskedQuoteIdInterface;
20+
use Magento\Quote\Model\ResourceModel\Quote\QuoteIdMask as QuoteIdMaskResourceModel;
1821

1922
/**
2023
* Get cart id from the cart
@@ -26,13 +29,27 @@ class MaskedCartId implements ResolverInterface
2629
*/
2730
private $quoteIdToMaskedQuoteId;
2831

32+
/**
33+
* @var QuoteIdMaskFactory
34+
*/
35+
private $quoteIdMaskFactory;
36+
37+
/**
38+
* @var QuoteIdMaskResourceModel
39+
*/
40+
private $quoteIdMaskResourceModel;
41+
2942
/**
3043
* @param QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedQuoteId
3144
*/
3245
public function __construct(
33-
QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedQuoteId
46+
QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedQuoteId,
47+
QuoteIdMaskFactory $quoteIdMaskFactory,
48+
QuoteIdMaskResourceModel $quoteIdMaskResourceModel
3449
) {
3550
$this->quoteIdToMaskedQuoteId = $quoteIdToMaskedQuoteId;
51+
$this->quoteIdMaskFactory = $quoteIdMaskFactory;
52+
$this->quoteIdMaskResourceModel = $quoteIdMaskResourceModel;
3653
}
3754

3855
/**
@@ -60,10 +77,35 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value
6077
private function getQuoteMaskId(int $quoteId): string
6178
{
6279
try {
63-
$maskedId = $this->quoteIdToMaskedQuoteId->execute($quoteId);
80+
$maskedId =$this->ensureQuoteMaskExist($quoteId);
81+
//$maskedId = $this->quoteIdToMaskedQuoteId->execute($quoteId);
6482
} catch (NoSuchEntityException $exception) {
6583
throw new GraphQlNoSuchEntityException(__('Current user does not have an active cart.'));
6684
}
6785
return $maskedId;
6886
}
87+
/**
88+
* Create masked id for quote if it's not exists
89+
*
90+
* @param int $quoteId
91+
* @return string
92+
* @throws AlreadyExistsException
93+
*/
94+
private function ensureQuoteMaskExist(int $quoteId): string
95+
{
96+
try {
97+
$maskedId = $this->quoteIdToMaskedQuoteId->execute($quoteId);
98+
} catch (NoSuchEntityException $e) {
99+
$maskedId = '';
100+
}
101+
if ($maskedId === '') {
102+
$quoteIdMask = $this->quoteIdMaskFactory->create();
103+
$quoteIdMask->setQuoteId($quoteId);
104+
105+
$this->quoteIdMaskResourceModel->save($quoteIdMask);
106+
$maskedId = $this->quoteIdToMaskedQuoteId->execute($quoteId);
107+
}
108+
return $maskedId;
109+
}
110+
69111
}

0 commit comments

Comments
 (0)