Skip to content

Commit 504fb5c

Browse files
authored
Merge pull request #4 from helloextend/1.0.3
Magento PWA Extension v1.0.3
2 parents cd7b69d + 3aaa8cd commit 504fb5c

File tree

7 files changed

+102
-31
lines changed

7 files changed

+102
-31
lines changed

Model/Resolver/AddWarrantyToCart.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
namespace Extend\WarrantyGraphQl\Model\Resolver;
55

66

7+
use Magento\Framework\Event\ManagerInterface;
78
use Magento\Framework\GraphQl\Config\Element\Field;
89
use Magento\Framework\GraphQl\Query\ResolverInterface;
910
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
@@ -23,20 +24,32 @@ class AddWarrantyToCart implements ResolverInterface
2324
*/
2425
private $addProductsToCart;
2526

27+
/**
28+
* @var WarrantyGraphQlHelper
29+
*/
2630
protected $warrantyGraphQlHelper;
2731

32+
/**
33+
* Event manager proxy
34+
*
35+
* @var ManagerInterface
36+
*/
37+
protected $_eventManager = null;
38+
2839
/**
2940
* @param GetCartForUser $getCartForUser
3041
* @param AddProductsToCart $addProductsToCart
3142
*/
3243
public function __construct(
3344
GetCartForUser $getCartForUser,
3445
AddProductsToCart $addProductsToCart,
46+
ManagerInterface $eventManager,
3547
WarrantyGraphQlHelper $warrantyGraphQlHelper
3648
)
3749
{
3850
$this->getCartForUser = $getCartForUser;
3951
$this->addProductsToCart = $addProductsToCart;
52+
$this->_eventManager = $eventManager;
4053
$this->warrantyGraphQlHelper = $warrantyGraphQlHelper;
4154
}
4255

@@ -88,7 +101,14 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value
88101
$cartItems = [
89102
$cartItem
90103
];
91-
$this->addProductsToCart->execute($cart, $cartItems);;
104+
$this->addProductsToCart->execute($cart, $cartItems);
105+
106+
$this->_eventManager->dispatch('extend_warranty_added_to_cart',
107+
[
108+
'warranty_data' => $warrantyRequestData,
109+
'qty' => $_qty
110+
]
111+
);
92112

93113
return [
94114
'cart' => [

Observer/RemoveWarranties.php

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Magento\Framework\Event\Observer;
1010
use Magento\Framework\Event\ObserverInterface;
1111

12-
class RemoveWarranties implements ObserverInterface
12+
class RemoveWarranties extends \Extend\Warranty\Observer\QuoteRemoveItem implements ObserverInterface
1313
{
1414

1515
/**
@@ -18,31 +18,11 @@ class RemoveWarranties implements ObserverInterface
1818
*/
1919
public function execute(Observer $observer)
2020
{
21-
/** @var $item \Magento\Quote\Model\Quote\Item */
22-
$item = $observer->getEvent()->getQuoteItem();
23-
if ($item->getProductType() !== WarrantyType::TYPE_CODE) {
24-
$sku = $item->getSku();
25-
26-
$quote = $item->getQuote();
27-
$items = $quote->getAllItems();
28-
29-
$removeWarranty = true;
30-
foreach ($items as $item) {
31-
if ($item->getSku() === $sku) {
32-
$removeWarranty = false;
33-
break;
34-
}
35-
}
36-
37-
if ($removeWarranty) {
38-
foreach ($items as $item) {
39-
if ($item->getProductType() === WarrantyType::TYPE_CODE &&
40-
$item->getOptionByCode('associated_product')->getValue() === $sku) {
41-
42-
$quote->removeItem($item->getItemId());
43-
}
44-
}
45-
}
21+
if (!$observer->getQuoteItem()) {
22+
/** @var $item \Magento\Quote\Model\Quote\Item */
23+
$item = $observer->getEvent()->getQuoteItem();
24+
$observer->setData('quote_item', $item);
4625
}
26+
return parent::execute($observer);
4727
}
4828
}

Observer/TrackWarrantyAddedToCart.php

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
4+
namespace Extend\WarrantyGraphQl\Observer;
5+
6+
7+
use Extend\Warranty\Model\Product\Type as WarrantyType;
8+
use Magento\Checkout\Helper\Cart;
9+
use Magento\Framework\Event\Observer;
10+
use Magento\Framework\Event\ObserverInterface;
11+
12+
class TrackWarrantyAddedToCart implements ObserverInterface
13+
{
14+
15+
/**
16+
* @var \Extend\Warranty\Helper\Tracking
17+
*/
18+
protected $_trackingHelper;
19+
20+
21+
/**
22+
* QuoteRemoveItem constructor.
23+
* @param \Extend\Warranty\Helper\Tracking $trackingHelper
24+
*/
25+
public function __construct(
26+
\Extend\Warranty\Helper\Tracking $trackingHelper
27+
)
28+
{
29+
$this->_trackingHelper = $trackingHelper;
30+
}
31+
32+
/**
33+
* @param Observer $observer
34+
* @return void
35+
*/
36+
public function execute(Observer $observer)
37+
{
38+
$warrantyData = $observer->getWarrantyData();
39+
$qty = $observer->getQty();
40+
if ($this->_trackingHelper->isTrackingEnabled()) {
41+
if (!isset($warrantyData['component']) || $warrantyData['component'] !== 'modal') {
42+
$trackingData = [
43+
'eventName' => 'trackOfferAddedToCart',
44+
'productId' => $warrantyData['product'] ?? '',
45+
'productQuantity' => $qty,
46+
'warrantyQuantity' => $qty,
47+
'planId' => $warrantyData['planId'] ?? '',
48+
'area' => 'product_page',
49+
'component' => $warrantyData['component'] ?? 'buttons',
50+
];
51+
} else {
52+
$trackingData = [
53+
'eventName' => 'trackOfferUpdated',
54+
'productId' => $warrantyData['product'] ?? '',
55+
'productQuantity' => $qty,
56+
'warrantyQuantity' => $qty,
57+
'planId' => $warrantyData['planId'] ?? '',
58+
'area' => 'product_page',
59+
'component' => $warrantyData['component'] ?? 'buttons',
60+
];
61+
}
62+
$this->_trackingHelper->setTrackingData($trackingData);
63+
}
64+
}
65+
}

Plugin/Model/Cart/UpdateCartItemPlugin.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,15 @@ public function __construct(
5656
*/
5757
public function afterExecute($subject, $result, $cart, $cartItemId, $quantity, $customizableOptionsData)
5858
{
59+
$cartId = $this->checkoutSession->getQuoteId();
5960
$this->checkoutSession->setQuoteId($cart->getId());
61+
6062
$this->_eventManager->dispatch(
6163
'extend_checkout_cart_update_items_after',
6264
['cart' => false]
6365
);
64-
$this->checkoutSession->setQuoteId(null);
66+
67+
$this->checkoutSession->setQuoteId($cartId);
6568

6669
return $result;
6770
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
},
1414
"type": "magento2-module",
15-
"version": "1.0.2",
15+
"version": "1.0.3",
1616
"license": [
1717

1818
],

etc/graphql/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@
3535
<type name="\Magento\QuoteGraphQl\Model\Cart\UpdateCartItem">
3636
<plugin name="extend_warranty_balance_cart" type="\Extend\WarrantyGraphQl\Plugin\Model\Cart\UpdateCartItemPlugin"/>
3737
</type>
38-
<preference for="\Extend\Warranty\Observer\Warranty\RemoveWarranties" type="\Extend\WarrantyGraphQl\Observer\RemoveWarranties"/>
38+
<preference for="\Extend\Warranty\Observer\QuoteRemoveItem" type="\Extend\WarrantyGraphQl\Observer\RemoveWarranties"/>
3939
</config>

etc/graphql/events.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
33
<event name="sales_quote_remove_item">
4-
<observer name="remove_warranties" instance="Extend\Warranty\Observer\Warranty\RemoveWarranties"/>
4+
<observer name="remove_warranties" instance="Extend\Warranty\Observer\QuoteRemoveItem"/>
5+
</event>
6+
<event name="extend_warranty_added_to_cart">
7+
<observer name="track_warranty_added_to_cart" instance="\Extend\WarrantyGraphQl\Observer\TrackWarrantyAddedToCart"/>
58
</event>
69
<event name="extend_checkout_cart_update_items_after">
710
<observer name="cart_normalize" instance="Extend\Warranty\Observer\Warranty\Normalize"/>

0 commit comments

Comments
 (0)