Skip to content

Commit c8529dc

Browse files
authored
RATESWSX-308: remove decorated account order controller (#66)
1 parent 1aa0a31 commit c8529dc

File tree

6 files changed

+37
-179
lines changed

6 files changed

+37
-179
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
* RATESWSX-306: installment: prevent fatal error message in checkout on unreachable gateway
66
* RATESWSX-307: add support for login as (third-party modules and Shopware standard since 6.6.5.x)
7+
* RATESWSX-308: remove decorated account order controller
78

89
## Version 7.0.1 - Released on 2024-06-07
910

src/Components/Account/Controller/AccountOrderControllerDecorator.php

Lines changed: 0 additions & 133 deletions
This file was deleted.

src/Components/Account/DependencyInjection/controller.xml

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/Components/Checkout/DependencyInjection/services.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
decorates="Shopware\Core\Checkout\Payment\SalesChannel\HandlePaymentMethodRoute">
4343
<argument key="$innerService" type="service" id=".inner" />
4444
<argument key="$orderRepository" type="service" id="order.repository" />
45+
<argument key="$ratepayDataRepository" type="service" id="ratepay_order_data.repository" />
4546
</service>
4647

4748
</services>

src/Components/Checkout/SalesChannel/HandlePaymentMethodRoute.php

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,28 @@
1212

1313
use Ratepay\RpayPayments\Components\Checkout\Service\DataValidationService;
1414
use Ratepay\RpayPayments\Components\PaymentHandler\AbstractPaymentHandler;
15+
use Ratepay\RpayPayments\Core\Entity\Extension\OrderExtension;
16+
use Ratepay\RpayPayments\Core\Entity\RatepayOrderDataEntity;
1517
use Ratepay\RpayPayments\Util\CriteriaHelper;
18+
use Ratepay\RpayPayments\Util\MethodHelper;
1619
use Shopware\Core\Checkout\Order\Aggregate\OrderTransaction\OrderTransactionEntity;
1720
use Shopware\Core\Checkout\Order\OrderEntity;
1821
use Shopware\Core\Checkout\Payment\SalesChannel\AbstractHandlePaymentMethodRoute;
1922
use Shopware\Core\Checkout\Payment\SalesChannel\HandlePaymentMethodRouteResponse;
2023
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
24+
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
2125
use Shopware\Core\Framework\Validation\DataBag\DataBag;
2226
use Shopware\Core\System\SalesChannel\SalesChannelContext;
2327
use Symfony\Component\HttpFoundation\Request;
28+
use Throwable;
2429

2530
class HandlePaymentMethodRoute extends AbstractHandlePaymentMethodRoute
2631
{
2732
public function __construct(
2833
private readonly AbstractHandlePaymentMethodRoute $innerService,
2934
private readonly DataValidationService $dataValidationService,
30-
private readonly EntityRepository $orderRepository
35+
private readonly EntityRepository $orderRepository,
36+
private readonly EntityRepository $ratepayDataRepository
3137
) {
3238
}
3339

@@ -44,10 +50,11 @@ public function load(Request $request, SalesChannelContext $context): HandlePaym
4450
return $this->innerService->load($request, $context);
4551
}
4652

47-
$paymentHandlerIdentifier = null;
48-
if ($request->request->getBoolean('updatePayment')) {
49-
$orderId = $request->request->get('orderId');
53+
$orderId = $request->request->get('orderId');
5054

55+
$paymentHandlerIdentifier = null;
56+
$order = null;
57+
if (!empty($orderId)) {
5158
/** @var OrderEntity|null $order */
5259
$order = $this->orderRepository->search(CriteriaHelper::getCriteriaForOrder($orderId), $context->getContext())->first();
5360
if ($order instanceof OrderEntity && ($transaction = $order->getTransactions()->last()) instanceof OrderTransactionEntity) {
@@ -61,6 +68,29 @@ public function load(Request $request, SalesChannelContext $context): HandlePaym
6168
$this->dataValidationService->validatePaymentData(new DataBag($request->request->all()), $context, $order ?? null);
6269
}
6370

64-
return $this->innerService->load($request, $context);
71+
$result = $this->innerService->load($request, $context);
72+
73+
$ratepayData = $order?->getExtension(OrderExtension::EXTENSION_NAME);
74+
if ($ratepayData instanceof RatepayOrderDataEntity) {
75+
$orderCriteria = (new Criteria([$orderId]))
76+
->addAssociation('transactions.paymentMethod');
77+
78+
/** @var OrderEntity $order */
79+
$order = $this->orderRepository->search($orderCriteria, $context->getContext())->first();
80+
if (!MethodHelper::isRatepayOrder($order)) {
81+
// if it is not a ratepay order anymore, we delete existing ratepay-data
82+
try {
83+
$this->ratepayDataRepository->delete([[
84+
RatepayOrderDataEntity::FIELD_ID => $ratepayData->getId(),
85+
]], $context->getContext());
86+
} catch (Throwable) {
87+
// catch any exception but not handle it.
88+
// we won't break behaviour of third-party payment methods if deletion fails.
89+
// it is not so bad if we keep the ratepay-data in the database.
90+
}
91+
}
92+
}
93+
94+
return $result;
6595
}
6696
}

src/Resources/views/storefront/page/account/order-history/order-item.html.twig

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)