Skip to content

Commit c2d9883

Browse files
mstrzyzewskicieslix
authored andcommitted
Add option to delete reservations in reservations grid
1 parent 2eaa1d9 commit c2d9883

File tree

5 files changed

+159
-8
lines changed

5 files changed

+159
-8
lines changed

Controller/Adminhtml/Orders/Delete.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class Delete extends Action
3333
private $orderLogRepository;
3434

3535
/**
36-
* Import constructor.
36+
* Delete constructor.
3737
* @param Action\Context $context
3838
* @param Logger $logger
3939
* @param Filter $filter
@@ -75,7 +75,10 @@ public function execute()
7575
$checkoutFormId = $item->getCheckoutFormId();
7676
try {
7777
$this->orderLogRepository->deleteByCheckoutFormId($checkoutFormId);
78-
$this->logger->info("Order log with id '{$checkoutFormId}' has been successfully deleted");
78+
$this->logger->info(__(
79+
"Order log with checkout form ID: %1 has been successfully deleted",
80+
$checkoutFormId
81+
));
7982
$this->messageManager->addSuccessMessage(__(
8083
"Order log with checkout form ID: %1 has been successfully deleted",
8184
$checkoutFormId
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Macopedia\Allegro\Controller\Adminhtml\Reservations;
6+
7+
use Macopedia\Allegro\Logger\Logger;
8+
use Macopedia\Allegro\Model\Reservation;
9+
use Macopedia\Allegro\Model\ResourceModel\Reservation\Collection;
10+
use Magento\Backend\App\Action;
11+
use Magento\Framework\App\ResponseInterface;
12+
use Magento\Framework\Controller\Result\Redirect;
13+
use Magento\Framework\Controller\ResultFactory;
14+
use Magento\Framework\Controller\ResultInterface;
15+
use Magento\Framework\Exception\LocalizedException;
16+
use Magento\Ui\Component\MassAction\Filter;
17+
use Macopedia\Allegro\Model\ResourceModel\Reservation\CollectionFactory;
18+
use Macopedia\Allegro\Model\OrderImporter\AllegroReservation;
19+
use Macopedia\Allegro\Model\CheckoutFormRepository;
20+
21+
/**
22+
* Delete controller class
23+
*/
24+
class Delete extends Action
25+
{
26+
/** @var Logger */
27+
private $logger;
28+
29+
/** @var Filter */
30+
private $filter;
31+
32+
/** @var CollectionFactory */
33+
private $collectionFactory;
34+
35+
/** @var AllegroReservation */
36+
private $allegroReservation;
37+
38+
/** @var CheckoutFormRepository */
39+
private $checkoutFormRepository;
40+
41+
/**
42+
* Delete constructor.
43+
* @param Action\Context $context
44+
* @param Logger $logger
45+
* @param Filter $filter
46+
* @param CollectionFactory $collectionFactory
47+
* @param AllegroReservation $allegroReservation
48+
* @param CheckoutFormRepository $checkoutFormRepository
49+
*/
50+
public function __construct(
51+
Action\Context $context,
52+
Logger $logger,
53+
Filter $filter,
54+
CollectionFactory $collectionFactory,
55+
AllegroReservation $allegroReservation,
56+
CheckoutFormRepository $checkoutFormRepository
57+
) {
58+
parent::__construct($context);
59+
$this->logger = $logger;
60+
$this->filter = $filter;
61+
$this->collectionFactory = $collectionFactory;
62+
$this->allegroReservation = $allegroReservation;
63+
$this->checkoutFormRepository = $checkoutFormRepository;
64+
}
65+
66+
/**
67+
* @return ResponseInterface|Redirect|ResultInterface
68+
*/
69+
public function execute()
70+
{
71+
$result = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
72+
$result->setPath('*/*/');
73+
74+
try {
75+
/** @var Collection $collection */
76+
$collection = $this->filter->getCollection($this->collectionFactory->create());
77+
} catch (LocalizedException $e) {
78+
$this->messageManager->addExceptionMessage($e);
79+
return $result;
80+
}
81+
/** @var Reservation $item */
82+
foreach ($collection as $item) {
83+
$checkoutFormId = $item->getCheckoutFormId();
84+
$reservationId = $item->getReservationId();
85+
try {
86+
$checkoutForm = $this->checkoutFormRepository->get($checkoutFormId);
87+
$this->allegroReservation->compensateReservation($checkoutForm);
88+
$this->logger->info(__("Reservation with ID: %1 has been successfully deleted", $reservationId));
89+
$this->messageManager->addSuccessMessage(__(
90+
"Reservation with ID: %1 has been successfully deleted",
91+
$reservationId
92+
));
93+
} catch (\Exception $e) {
94+
$this->logger->exception($e);
95+
$this->messageManager->addErrorMessage(__(
96+
"Something went wrong while trying to delete reservation with ID: %1",
97+
$reservationId
98+
));
99+
}
100+
}
101+
return $result;
102+
}
103+
}

etc/di.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,11 @@
130130
</arguments>
131131
</virtualType>
132132

133+
<virtualType name="Macopedia\Allegro\Model\ResourceModel\Reservation\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
134+
<arguments>
135+
<argument name="mainTable" xsi:type="string">allegro_reservations</argument>
136+
<argument name="resourceModel" xsi:type="string">Macopedia\Allegro\Model\ResourceModel\Reservation</argument>
137+
</arguments>
138+
</virtualType>
139+
133140
</config>

i18n/pl_PL.csv

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
"This is not a valid EAN number","To nie jest poprawny numer EAN"
147147
"Debug mode enabled", "Tryb debugowania włączony"
148148
"Order with checkout form ID: %1 has been successfully imported","Zamówienie od ID: %1 zostało pomyślnie zaimportowane"
149-
"Something went wrong while trying to import order with checkout form ID: %1","Coś poszło nie tak podczas próby zaimportowania zamówienia o ID:" %1"
149+
"Something went wrong while trying to import order with checkout form ID: %1","Coś poszło nie tak podczas próby zaimportowania zamówienia o ID: %1"
150150
"Orders with errors","Zamówienia z błędami"
151151
"Checkout form ID","ID zamówienia"
152152
"Date of first import try","Data pierwszej próby importu"
@@ -163,3 +163,11 @@
163163
"Reservation ID","ID rezerwacji"
164164
"Reservations enabled","Rezerwacje włączone"
165165
"Buyer login","Login kupującego"
166+
"Delete reservations","Usuń rezerwacje"
167+
"Delete orders","Usuń zamówienia"
168+
"Are you sure to delete selected orders?","Jesteś pewien, że chcesz usunąć wybrane zamówienia?"
169+
"Are you sure to delete selected reservations?","Jesteś pewien, że chcesz usunąć wybrane rezerwacje?"
170+
"Something went wrong while trying to delete order log with checkout form ID: %1","Coś poszło nie tak podczas próby usunięcia zamówienia o ID: %1"
171+
"Order log with checkout form ID: %1 has been successfully deleted","Zamówienie o ID: %1 zostało pomyślnie usunięte"
172+
"Reservation with ID: %1 has been successfully deleted","Rezerwacja o ID: %1 została pomyślnie usunięta"
173+
"Something went wrong while trying to delete reservation with ID: %1","Coś poszło nie tak podczas próby usunięcia rezerwacji o ID: %1"

view/adminhtml/ui_component/allegro_reservations_listing.xml

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,39 @@
3333
<filters name="listing_filters" />
3434
<paging name="listing_paging"/>
3535
<exportButton name="export_button"/>
36+
<massaction name="listing_massaction">
37+
<argument name="data" xsi:type="array">
38+
<item name="config" xsi:type="array">
39+
<item name="component" xsi:type="string">Magento_Ui/js/grid/tree-massactions</item>
40+
<item name="indexField" xsi:type="string">entity_id</item>
41+
</item>
42+
</argument>
43+
<action name="delete">
44+
<argument name="data" xsi:type="array">
45+
<item name="config" xsi:type="array">
46+
<item name="type" xsi:type="string">delete</item>
47+
<item name="label" xsi:type="string" translate="true">Delete</item>
48+
<item name="url" xsi:type="url" path="*/*/delete"/>
49+
<item name="confirm" xsi:type="array">
50+
<item name="title" xsi:type="string" translate="true">Delete reservations</item>
51+
<item name="message" xsi:type="string" translate="true">Are you sure to delete selected reservations?</item>
52+
</item>
53+
</item>
54+
</argument>
55+
</action>
56+
</massaction>
3657
</listingToolbar>
3758
<columns name="reservations_columns">
38-
<column name="entity_id" sortOrder="10">
59+
<selectionsColumn name="ids" sortOrder="10">
60+
<argument name="data" xsi:type="array">
61+
<item name="config" xsi:type="array">
62+
<item name="resizeEnabled" xsi:type="boolean">false</item>
63+
<item name="resizeDefaultWidth" xsi:type="string">55</item>
64+
<item name="indexField" xsi:type="string">entity_id</item>
65+
</item>
66+
</argument>
67+
</selectionsColumn>
68+
<column name="entity_id" sortOrder="20">
3969
<argument name="data" xsi:type="array">
4070
<item name="config" xsi:type="array">
4171
<item name="filter" xsi:type="string">textRange</item>
@@ -44,7 +74,7 @@
4474
</item>
4575
</argument>
4676
</column>
47-
<column name="reservation_id" sortOrder="20">
77+
<column name="reservation_id" sortOrder="30">
4878
<argument name="data" xsi:type="array">
4979
<item name="config" xsi:type="array">
5080
<item name="filter" xsi:type="string">textRange</item>
@@ -53,23 +83,23 @@
5383
</item>
5484
</argument>
5585
</column>
56-
<column name="checkout_form_id" sortOrder="30">
86+
<column name="checkout_form_id" sortOrder="40">
5787
<argument name="data" xsi:type="array">
5888
<item name="config" xsi:type="array">
5989
<item name="filter" xsi:type="string">text</item>
6090
<item name="label" xsi:type="string" translate="true">Checkout form ID</item>
6191
</item>
6292
</argument>
6393
</column>
64-
<column name="sku" sortOrder="40">
94+
<column name="sku" sortOrder="50">
6595
<argument name="data" xsi:type="array">
6696
<item name="config" xsi:type="array">
6797
<item name="filter" xsi:type="string">text</item>
6898
<item name="label" xsi:type="string" translate="true">Product SKU</item>
6999
</item>
70100
</argument>
71101
</column>
72-
<column name="quantity" sortOrder="50">
102+
<column name="quantity" sortOrder="60">
73103
<argument name="data" xsi:type="array">
74104
<item name="config" xsi:type="array">
75105
<item name="label" xsi:type="string" translate="true">Quantity</item>

0 commit comments

Comments
 (0)